插件窝 干货文章 Nginx的IP访问控制与安全设置

Nginx的IP访问控制与安全设置

Nginx 配置 访问 子网 319    来源:    2025-04-19

Nginx IP访问控制与安全设置指南

基础IP访问控制

1. 允许/拒绝特定IP访问

location / {
    allow 192.168.1.1;    # 允许单个IP
    allow 192.168.1.0/24; # 允许整个子网
    deny all;             # 拒绝其他所有IP
}

2. 基于HTTP头的访问控制

location /admin {
    if ($http_x_forwarded_for != "192.168.1.100") {
        return 403;
    }
}

高级安全设置

3. 防止DDoS攻击

# 限制连接数
limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
    limit_conn addr 10; # 每个IP最多10个连接
}

4. 速率限制

# 定义限制区域
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

server {
    location / {
        limit_req zone=one burst=20 nodelay;
    }
}

5. 阻止恶意User-Agent

map $http_user_agent $blocked_ua {
    default 0;
    "~*bot" 1;
    "~*spider" 1;
    "~*scan" 1;
}

server {
    if ($blocked_ua) {
        return 403;
    }
}

实用安全配置

6. 隐藏Nginx版本信息

server_tokens off;

7. 防止点击劫持

add_header X-Frame-Options "SAMEORIGIN";

8. 启用XSS保护

add_header X-XSS-Protection "1; mode=block";

9. 内容安全策略(CSP)

add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'";

10. 禁用不需要的HTTP方法

location / {
    if ($request_method !~ ^(GET|HEAD|POST)$ ) {
        return 405;
    }
}

动态黑名单管理

11. 使用Geo模块

geo $blocked_ip {
    default 0;
    192.168.1.100 1; # 黑名单IP
    10.0.0.0/8 1;    # 黑名单子网
}

server {
    if ($blocked_ip) {
        return 403;
    }
}

12. 结合fail2ban动态封禁

  1. 安装fail2ban
  2. 创建Nginx过滤器配置
  3. 设置fail2ban jail规则

最佳实践建议

  1. 最小权限原则:只开放必要的访问权限
  2. 定期审计:检查访问日志和配置
  3. 多层防御:结合防火墙、WAF等其他安全措施
  4. 测试配置:修改后使用nginx -t测试语法
  5. 备份配置:修改前备份原始配置文件

通过以上配置,您可以显著提高Nginx服务器的安全性,有效控制IP访问并防范常见网络攻击。