在Debian上配置Nginx以添加安全头,可以提高网站的安全性。以下是一些常见的安全头及其配置方法:
Content-Security-Policy (CSP): CSP可以防止跨站脚本攻击(XSS)和其他代码注入攻击。
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none';"; X-Content-Type-Options: 防止浏览器MIME类型嗅探。
add_header X-Content-Type-Options "nosniff"; X-Frame-Options: 防止点击劫持攻击。
add_header X-Frame-Options "SAMEORIGIN"; X-XSS-Protection: 启用浏览器的XSS过滤器(现代浏览器已经不再支持这个头,但仍然可以添加以提高兼容性)。
add_header X-XSS-Protection "1; mode=block"; Strict-Transport-Security (HSTS): 强制浏览器使用HTTPS连接。
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; Referrer-Policy: 控制Referer头的发送。
add_header Referrer-Policy "no-referrer-when-downgrade"; Feature-Policy: 控制浏览器功能的启用(类似于CSP,但更细粒度)。
add_header Feature-Policy "accelerometer 'none'; camera 'none'; geolocation 'none';"; Permissions-Policy: 替代Feature-Policy,控制浏览器功能的启用。
add_header Permissions-Policy "accelerometer=(), camera=(), geolocation=()"; 以下是一个完整的Nginx配置示例,包含了上述安全头:
server { listen 80; server_name example.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name example.com; ssl_certificate /etc/ssl/certs/example.com.crt; ssl_certificate_key /etc/ssl/private/example.com.key; add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none';"; add_header X-Content-Type-Options "nosniff"; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header Referrer-Policy "no-referrer-when-downgrade"; add_header Feature-Policy "accelerometer 'none'; camera 'none'; geolocation 'none';"; add_header Permissions-Policy "accelerometer=(), camera=(), geolocation=()"; root /var/www/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } } 通过以上配置,可以显著提高Nginx服务器的安全性。