修改Nginx配置文件,禁止直接IP访问

为防止IP被扫描到,通过IP访问反查源站,需要配置HTTP服务器禁止直接IP访问
核心思路是创建一个默认的 Server 块(default_server),让它优先匹配所有未指定域名的请求(包括 IP 访问),然后返回拒绝响应或重定向。


以下是几种常见的配置方案,推荐程度由高到低:

方案一:返回 444 状态码

444 是 Nginx 特有的非标准状态码,表示 "No Response"。Nginx 会直接关闭连接,不返回任何 HTTP 头或内容。这对扫描器和恶意爬虫最友好,能节省服务器资源。

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    
    # 如果有 HTTPS,也需要加上
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    
    # SSL 证书可以随便填一个自签名的,或者复用现有证书
    # 因为 444 会在握手后/请求阶段直接断开,但 SSL 握手需要证书
    ssl_certificate     /etc/nginx/ssl/default.crt;
    ssl_certificate_key /etc/nginx/ssl/default.key;

    server_name _;  # 匹配所有未定义的域名/IP
    
    return 444;     # 直接关闭连接
}

方案二:返回 403 Forbidden

如果你希望给用户一个明确的"禁止访问"提示:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name _;
    
    return 403;
}

方案三:301 重定向到主域名

如果希望将 IP 访问的流量引导到正确域名:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    
    return 301 https://www.yourdomain.com$request_uri;
}

评论栏

暂无评论,快来抢沙发吧!