插件窝 干货文章 Nginx安全目录保护实践

Nginx安全目录保护实践

Nginx location 保护 文件 1001    来源:    2025-04-20

Nginx安全目录保护实践

基本认证保护

1. 创建密码文件

sudo sh -c "echo -n 'username:' >> /etc/nginx/.htpasswd"
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

2. Nginx配置

location /protected/ {
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

IP地址限制

1. 允许特定IP访问

location /admin/ {
    allow 192.168.1.100;
    allow 10.0.0.0/24;
    deny all;
}

2. 阻止特定IP访问

location / {
    deny 123.45.67.89;
    allow all;
}

目录列表禁用

location /sensitive/ {
    autoindex off;
}

SSL/TLS加密

1. 基本SSL配置

server {
    listen 443 ssl;
    server_name example.com;

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

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
}

2. HTTP严格传输安全(HSTS)

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

文件类型限制

location /uploads/ {
    # 禁止执行PHP文件
    location ~ \.php$ {
        deny all;
        return 403;
    }
}

请求方法限制

location /api/ {
    limit_except GET POST {
        deny all;
    }
}

速率限制

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

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

日志记录

location /admin/ {
    access_log /var/log/nginx/admin_access.log;
    error_log /var/log/nginx/admin_error.log;
}

最佳实践建议

  1. 定期更新:保持Nginx版本最新,及时应用安全补丁
  2. 最小权限原则:Nginx进程应以非root用户运行
  3. 敏感信息保护:确保密码文件、SSL证书等敏感文件权限正确
  4. 定期审计:检查访问日志和错误日志,寻找可疑活动
  5. 综合防护:结合多种保护措施,不要依赖单一方法

通过以上配置和实践,您可以有效地保护Nginx服务器上的敏感目录,防止未授权访问和数据泄露。