在Ubuntu上使用Nginx启用HTTP Strict Transport Security (HSTS) 是一个很好的安全实践,可以确保所有通过HTTPS访问你的网站的流量都是加密的。以下是启用HSTS的步骤:
如果你还没有安装Nginx,可以使用以下命令进行安装:
sudo apt update
sudo apt install nginx
编辑Nginx的配置文件。通常情况下,主配置文件位于 /etc/nginx/nginx.conf,但你可能需要编辑特定站点的配置文件,这些文件通常位于 /etc/nginx/sites-available/ 目录下。
假设你的站点配置文件是 /etc/nginx/sites-available/yourdomain.com,你可以使用以下命令编辑它:
sudo nano /etc/nginx/sites-available/yourdomain.com
在 server 块中添加以下配置:
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/ssl/certs/yourdomain.com.crt;
ssl_certificate_key /etc/ssl/private/yourdomain.com.key;
# 启用HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# 其他配置...
}
解释:
max-age=31536000:HSTS策略的有效期为一年(以秒为单位)。includeSubDomains:将HSTS策略应用于所有子域名。preload:将你的域名添加到HSTS预加载列表中,这需要在浏览器中进行额外的步骤。如果你使用的是符号链接来启用站点配置文件,请确保创建符号链接:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
在重新加载Nginx之前,测试配置文件是否有语法错误:
sudo nginx -t
如果配置文件没有问题,重新加载Nginx以应用更改:
sudo systemctl reload nginx
要将你的域名添加到HSTS预加载列表中,你需要访问 HSTS Preload Submission 页面,并按照指示提交你的域名。这通常涉及下载一个包含你域名的文本文件,并将其上传到你的服务器。
你可以使用浏览器开发者工具或命令行工具(如 curl)来验证HSTS头是否已正确添加:
curl -I https://yourdomain.com
你应该看到类似以下的响应头:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
通过以上步骤,你就成功地在Ubuntu上使用Nginx启用了HSTS。