在Nginx中,如何在维护子域的同时将所有http请求重写为https?

Modified on: Tue, 12 Nov 2019 15:00:02 +0800

我想将我的网络服务器上的所有http请求重写为https请求,我开始使用以下内容:

server {
    listen      80;

    location / {
      rewrite     ^(.*)   https://mysite.com$1 permanent;
    }
...


一个问题是,这会剥离任何子域信息(例如,node1.mysite.com/folder),我怎样才能重写上面的内容以将所有内容重新路由到https并维护子域?

作者:MikeN

最佳答案

在新版本的nginx

中采用正确的方法

在某个时候,我对这个问题的第一个答案是正确的,但它变成了另一个陷阱 - 要保持最新,请检查对重写陷阱征税

许多SE用户已对此进行了更正,因此可以归功于他们,但更重要的是,这是正确的代码:

server {
       listen         80;
       server_name    my.domain.com;
       return         301 https://$server_name$request_uri;
}

server {
       listen         443 ssl;
       server_name    my.domain.com;
       # add Strict-Transport-Security to prevent man in the middle attacks
       add_header Strict-Transport-Security "max-age=31536000" always; 

       [....]
}

相关问答

添加新评论