插件窝 干货文章 Nginx怎么禁止ip访问或非法域名访问

Nginx怎么禁止ip访问或非法域名访问

server 配置 Nginx listen 268    来源:    2025-04-22

Nginx 禁止 IP 访问或非法域名访问的配置方法

1. 禁止直接通过 IP 访问

在 Nginx 配置中,可以设置一个默认的 server 块来拒绝所有 IP 直接访问:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 444;  # 444 是 Nginx 特有的状态码,表示无响应关闭连接
}

2. 允许特定 IP 访问

如果需要允许特定 IP 访问,可以这样配置:

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

    allow 192.168.1.100;  # 允许的IP
    deny all;            # 拒绝其他所有

    return 403;          # 对于不允许的返回403
}

3. 禁止非法域名访问

方法一:基于 server_name 过滤

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;  # 只允许这些域名

    # 其他配置...
}

server {
    listen 80 default_server;
    server_name _;
    return 444;
}

方法二:使用 if 判断

server {
    listen 80;

    if ($host !~* ^(yourdomain.com|www.yourdomain.com)$ ) {
        return 444;
    }

    # 其他配置...
}

4. HTTPS 配置

对于 HTTPS 站点,需要相应的 SSL 配置:

server {
    listen 443 ssl default_server;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
    return 444;
}

server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    # 其他SSL和站点配置...
}

5. 注意事项

  1. 配置修改后需要重载 Nginx:nginx -s reload
  2. 444 状态码是 Nginx 特有的,表示直接关闭连接而不发送响应
  3. 对于生产环境,建议同时配置 HTTP 到 HTTPS 的重定向
  4. 可以结合 fail2ban 等工具增强防护

以上配置可以有效防止通过 IP 或非法域名访问您的 Nginx 服务器。