为了保护敏感网站资源不被未授权访问或泄露,可以通过Nginx配置多种访问限制措施。以下是一些有效的配置方案:
location /sensitive/ {
allow 192.168.1.0/24; # 允许的IP段
allow 10.0.0.1; # 允许的单个IP
deny all; # 拒绝其他所有IP
...
}
location /admin/ {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
...
}
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个连接
...
}
}
location ~ /\.(git|svn|env|ht) {
deny all;
return 404;
}
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;
}
}
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";
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;
以上配置可以根据实际需求组合使用,为敏感资源提供多层防护。对于特别敏感的数据,还应考虑应用层的额外保护措施。