我希望没有www的所有stream量(包括https)被redirect到www的相应url。
所以http://example.com – > http://www.example.com,https : //example.com – > https://www.example.com
网上有很多关于强制ssl的信息,我不想这样做,强制www,但只限于http。 只需要添加一个s并且改变listen 80 – > listen 443就可以打破http网站。 这是我的configuration到目前为止:
server { listen 80; server_name example.com; location / { rewrite ^/(.*)$ http://www.example.com/$1 permanent; } } server { listen 80; server_name www.example.com; root /opt/example; index index.html; <locations stuff> } server { listen 443; server_name example.com; ssl on; ssl_certificate /opt/nginx/ssl/server.crt; ssl_certificate_key /opt/nginx/ssl/server.key; location / { rewrite ^/(.*)$ https://www.example.com/$1 permanent; } } server { listen 443; server_name www.example.com; root /opt/example; ssl on; ssl_certificate /opt/nginx/ssl/server.crt; ssl_certificate_key /opt/nginx/ssl/server.key; <locations stuff> }
这是我自己configuration的精简版本,我认为这是你想要的:
server { listen 80 default; listen 443 default ssl; server_name *.example.com; if ($host = example.com) { rewrite ^(.*) $scheme://www.example.com$1 permanent; } root /opt/example; ssl on; ssl_certificate /opt/nginx/ssl/server.crt; ssl_certificate_key /opt/nginx/ssl/server.key; }