在Debian上配置Nginx SSL时,可以通过以下几个步骤来保障安全性:
确保你使用的是最新版本的Nginx,因为新版本通常包含安全修复和性能改进。
sudo apt update
sudo apt install nginx
openssl
生成强密码。openssl passwd -6 -salt your_salt your_password
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
编辑Nginx配置文件(通常位于/etc/nginx/nginx.conf
或/etc/nginx/sites-available/yourdomain.com
),添加或修改以下配置:
server {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# HSTS (HTTP Strict Transport Security)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# 安全头
add_header X-Content-Type-Options "nosniff";
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
# 限制请求体大小
client_max_body_size 50M;
# 禁用不必要的HTTP方法
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 405;
}
# 日志记录
access_log /var/log/nginx/yourdomain.com.access.log;
error_log /var/log/nginx/yourdomain.com.error.log;
# 静态文件缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
# 其他配置...
}
使用Certbot自动更新证书:
sudo certbot renew --dry-run
sudo systemctl reload nginx
确保防火墙配置正确,只允许必要的端口(如443和80)对外开放。
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
sudo ufw enable
定期进行安全审计,检查Nginx配置和系统日志,确保没有异常活动。
通过以上步骤,可以大大提高在Debian上运行Nginx SSL的安全性。