nginx www和非www到非www https

我希望WWW和非WWWurl都能通过https访问非WWW。

我有我的NGINXconfiguration下面的块:

server { listen 80 default_server; listen [::]:80 default_server; server_name example.com www.example.com; return 301 https://example.com$request_uri; } server { # SSL configuration # listen 443 ssl default_server; listen [::]:443 ssl default_server; ... } 

问题是,example.com的www仍然被转换为https的www.example.com,而我想剥离www。

我真的不明白我在这里失去了什么

最简单的方法是回到301,如果你有一个SSL匹配两个域。

没有SNI支持的选项

 server { listen 80 default_server; listen [::]:80 default_server; server_name example.com www.example.com; return 301 https://example.com$request_uri; } server { # SSL configuration # listen 443 ssl default_server; listen [::]:443 ssl default_server; if ($http_host = www.example.com) { rewrite (.*) https://example.com$request_uri; } ... } 

如果不是,则需要SNI或另一个IP地址作为wwwlogging,然后使用临时ssl(例如来自Letsencrypt)将用户redirect到正确的域。

选项与SNI支持

 server { listen 80 default_server; listen [::]:80 default_server; server_name example.com www.example.com; return 301 https://example.com$request_uri; } server { # SSL configuration # listen 443 ssl default_server; listen [::]:443 ssl default_server; server_name www.example.com; return 301 https://example.com$request_uri; ... }