You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx阻止特定请求,避免裸域名触发www重定向

解决Nginx裸域名恶意请求先301重定向再返回404的问题

问题根源

你的裸域名(example.com)server块中,重定向到www的规则优先级高于恶意请求拦截规则——因为你把return 301放在了拦截规则前面,Nginx执行到重定向就直接终止请求处理,根本不会触发后面的拦截逻辑,导致恶意请求先被跳转到www,再返回404。

解决方案

调整裸域名server块的规则顺序,将恶意请求拦截规则放在重定向规则之前,确保匹配到恶意路径的请求直接返回404,不触发重定向。

1. 修改裸域名的HTTP/HTTPS server块

以HTTP为例,修改后的配置如下:

server {
    listen 80;
    server_name example.com;

    # 优先拦截恶意请求:直接返回404,不执行后续重定向
    location ~* \.php$ {
        return 404;
    }

    location ~* /(wp-content|wp-includes) {
        return 404;
    }

    # 仅正常请求才重定向到www子域名
    return 301 $scheme://www.example.com$request_uri;
}

如果你的网站启用了HTTPS,需要在443端口的裸域名server块中做同样的配置:

server {
    listen 443 ssl;
    server_name example.com;

    # 此处保留你的SSL证书配置
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    # 同样优先拦截恶意请求
    location ~* \.php$ {
        return 404;
    }

    location ~* /(wp-content|wp-includes) {
        return 404;
    }

    # 正常请求重定向到www
    return 301 $scheme://www.example.com$request_uri;
}

2. (可选)统一维护拦截规则

如果多个server块都需要相同的拦截规则,可以把拦截逻辑单独存为一个配置片段,方便统一维护:

  • 创建文件/etc/nginx/conf.d/block-malicious.conf,内容如下:
location ~* \.php$ {
    return 404;
}
location ~* /(wp-content|wp-includes) {
    return 404;
}
  • 在裸域名server块中,将include /etc/nginx/conf.d/block-malicious.conf;放在重定向规则之前;在www子域名的server块中,直接include该文件即可。

验证配置

修改完成后,先检查Nginx配置是否合法:

nginx -t

如果提示test is successful,再重新加载配置:

systemctl reload nginx

这样,裸域名下的恶意请求会直接返回404,不会触发301重定向,解决监控告警问题。

内容的提问来源于stack exchange,提问作者Kevin Renskers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 11:47:10