微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nginx重定向到www域无法正常工作

我有以下Nginx配置.

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

>它将http://example.com重定向到https://www.example.com
>但不会将https://example.com重定向到https://www.example.com.

如何将https://example.com重定向到https://www.example.com?

解决方法:

请分开http和https流量.你当前的配置搞砸了一些东西.以下代码使用永久重定向重写从http://example.comhttps://example.com的所有请求:

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

第二个代码块将处理来自端口443的请求(此处的示例将在ssllabs.com上为您提供A评级):

server {
   listen 443 ssl;
   server_name example.com;

   ssl_certificate /path_to/ssl.crt;
   ssl_certificate_key /path_to/ssl.key;
   ssl_session_timeout 1d;
   ssl_session_cache shared:SSL:10m;
   # ssl_session_tickets off;

   # openssl dhparam -out dhparam.pem 2048
   # ssl_dhparam /etc/Nginx/SSL/dhparams.pem;

   ssl_protocols TLSv1.1 TLSv1.2;
   ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGC$
   ssl_prefer_server_ciphers on;

   add_header Strict-Transport-Security "max-age=15768000;includeSubdomains; preload";

   root /srv/wwwroot/;
   index index.html index.htm index.PHP;

   client_max_body_size 20M;

   location / {
       # your special config if needed
   }


 }

最后在我们的配置中使用第三个块,我们将https://www.example.com重写为https://example.com

server {
   listen 443;
   server_name www.example.com;
   return 301 https://$server_name$request_uri;
}

希望这可以帮助.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐