nginx SSL 重定向失败

nginx SSL 重定向失败

我有一个使用 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 已正确转发。

相关内容