插件窝 干货文章 Nginx访问限制配置,保护敏感网站资源不被泄露

Nginx访问限制配置,保护敏感网站资源不被泄露

Nginx 限制 配置 location 38    来源:    2025-04-16

Nginx访问限制配置指南 - 保护敏感网站资源

为了保护敏感网站资源不被未授权访问或泄露,可以通过Nginx配置多种访问限制措施。以下是一些有效的配置方案:

1. 基础访问限制

IP白名单限制

location /sensitive/ {
    allow 192.168.1.0/24;  # 允许的IP段
    allow 10.0.0.1;        # 允许的单个IP
    deny all;              # 拒绝其他所有IP
    ...
}

HTTP认证

location /admin/ {
    auth_basic "Restricted Area";
    auth_basic_user_file /etc/nginx/.htpasswd;
    ...
}

2. 请求频率限制

限制连接速率

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

server {
    location /api/ {
        limit_req zone=one burst=5;
        ...
    }
}

限制并发连接数

limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
    location /download/ {
        limit_conn addr 1;  # 每个IP同时只能有1个连接
        ...
    }
}

3. 高级保护措施

隐藏敏感目录

location ~ /\.(git|svn|env|ht) {
    deny all;
    return 404;
}

限制HTTP方法

location /admin/ {
    limit_except GET POST {
        deny all;
    }
    ...
}

防盗链配置

location ~* \.(jpg|jpeg|png|gif|pdf)$ {
    valid_referers none blocked yourdomain.com *.yourdomain.com;
    if ($invalid_referer) {
        return 403;
    }
}

4. 安全头设置

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'";
add_header Referrer-Policy "no-referrer-when-downgrade";

5. 日志监控配置

log_format security '$remote_addr - $remote_user [$time_local] '
                   '"$request" $status $body_bytes_sent '
                   '"$http_referer" "$http_user_agent" '
                   '$request_time $upstream_response_time';

access_log /var/log/nginx/security.log security;

最佳实践建议

  1. 分层保护:结合IP限制、认证和速率限制
  2. 最小权限原则:只开放必要的访问权限
  3. 定期审计:检查访问日志和安全配置
  4. 测试验证:配置后测试各种访问场景
  5. 备份配置:修改前备份nginx.conf文件

以上配置可以根据实际需求组合使用,为敏感资源提供多层防护。对于特别敏感的数据,还应考虑应用层的额外保护措施。