Idealisan

Nginx配置Http跳转Https的最佳配置写法

先上正确答案:

return 301 https://$host$request_uri;

上边这一行加入到nginx配置文件中监听80端口的server中即可。

再来说说我遇到的错误答案。这些方法不一定总是错误,但是会在某些情况下出错。

rewrite ^(.*)$  https://$host$1 permanent; 

上边这是一种早期写法,还有一种返回301重定向的新写法:

return 301 https://$server_name$request_uri;

这两种写法在我使用通配符域名、监听主域名和通配符域名的时候出现了问题,通配符域名的请求会跳转到主域名,例如a.blog.idealsan.com/post/2019/ 会重定向到 blog.idealsan.com/post/2019/ 这显然是错误的,会导致404。

我猜测$server_name只会使用第一个域名,常常是主域名作为参数,所以出现错误。当我换成$host之后,参数变成了请求中的主机名,而不是从配置文件中寻找主机名参数,于是不会错误的改变请求的主机。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注