NGINX把httpredirect到https和非www到ww

我正在用SSLbuild立一个nginx服务器。

与ssl的域是www.mydomain.com

我想redirect来自以下的所有请求:

http://mydomain.com,http : //www.mydomain.com和https://mydomain.com

https://www.mydomain.com

我目前有以下服务器块设置:

server{ listen 443 ssl; root /www/mydomain.com/; ssl_certificate /ssl/domain.crt; ssl_certificate /ssl/domain.key; . . . } server{ listen 80; server_name mydomain.com; return 301 https://www.mydomain.com$request_uri; } server{ listen 80; server_name www.mydomain.com; return 301 https://www.mydomain.com$request_uri; } server{ listen ssl 443; server_name mydomain.com; return 301 https://www.mydomain.com$request_uri; } 

这目前不起作用,但我不明白为什么不。 我可以得到http – > https工作或没有www的组合 – > www工作,但混合他们如上所述不起作用。

如果您的SSL证书不支持非www域,SSL重定向将不起作用。 配置是正确的,但可以减少到只有1个重定向服务器

另外不要忘记重新加载nginx sudo service nginx reload

 server { listen 80; listen 443 ssl; server_name example.com; # add ssl settings return 301 https://www.example.com$request_uri; } 

我迟到了,但是你可以这样做

 server{ listen 443 ssl; server_name www.mydomain.com; root /www/mydomain.com/; ssl on; ssl_certificate /ssl/domain.crt; ssl_certificate /ssl/domain.key; . . . } server{ listen 80; server_name www.mydomain.com mydomain.com; return 301 https://$server_name$request_uri; } server{ listen 443; server_name mydomain.com; return 301 https://www.$server_name$request_uri; } 

或者您可以替换return 301 https://www.$server_name$request_uri; rewrite ^ http://www.$server_name$request_uri? permanent; rewrite ^ http://www.$server_name$request_uri? permanent; ,两者都会工作。

您还需要在谷歌网站管理员设置更好的搜索引擎优化。