我有一个使用 nginx 提供服务的网站。我希望它默认使用 https,所以我设置了重定向和 HSTS。如果您访问http://getsumbits.com,请求超时。如果您访问 https 版本,HSTS 会启动未来的请求工作。我做错了什么?
server {
listen 80;
server_name getsumbits.com www.getsumbits.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name getsumbits.com www.getsumbits.com;
add_header Strict-Transport-Security "max-age=31536000";
...
}
答案1
您还应该在 SSL 服务器块中声明 server_name,
server {
listen 443 ssl;
server_name getsumbits.com www.getsumbits.com;
...
}
答案2
我认为 SSL 配置没有问题。
但是,通过指示服务器名称可以改进重定向。
在下面的示例中,将所有 HTTP 请求重定向到https://www.getsumbits.com。
server {
listen 80;
server_name getsumbits.com www.getsumbits.com;
# enforce https
return 301 https://www.getsumbits.com$request_uri;
}
server {
listen 443 ssl;
server_name getsumbits.com www.getsumbits.com;
add_header Strict-Transport-Security "max-age=31536000";
}
HSTS 不会执行初始“启动”。启动的实际上是您的 SSL 配置。HSTS 所做的是在客户端浏览器中保存此站点将始终使用 HTTPS 打开的标头。下次客户端访问该站点时,即使客户端不输入 HTTPS,它也不会再转到 HTTP,因为浏览器已经执行了本地重定向到 HTTPS。
PS. 由于 HTTP 即将消亡,请确保端口 80 已正确转发。