Nginx不处理httpsredirect

当我在www.example.com上访问我的页面时,出现“欢迎使用nginx”屏幕。 如果我键入https://www.example.com,但是http或者www只是不起作用,或者example.com也不起作用,那么它就可以正常工作。 从台式电脑我没有问题。

这是我的configuration:

server { listen 80; server_name example.com; error_log /var/log/nginx/error.log; return 301 https://www.example.com$request_uri; } server { listen 443 ssl; # managed by Certbot server_name www.example.com; #access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { include proxy_params; #proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 90; proxy_pass http://xx.xxx.xx.xxx:8001; } location = /favicon.ico { access_log off; log_not_found off; } location /static/ { alias path/static/; } location /media/ { alias path/media/; } ssl_certificate path/fullchain.pem; # managed by Certbot ssl_certificate_key path/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam path/ssl-dhparams.pem; # managed by Certbot if ($host = 'example.com') { return 301 https://www.example.com$request_uri; } #I commented this out because the page stoped working with "too many redirects" #if ($host = 'www.example.com') { # return 301 https://www.example.com$request_uri; #} if ($scheme != "https") { return 301 https://www.example.com$request_uri; } # managed by Certbot } 

您没有与http://www.example.com匹配的服务器块,因此nginx将使用默认的服务器块。 许多安装将一个默认服务器块放在一个名为default的文件中,该文件显示了“Welcome to Nginx”页面。

最简单的解决方法是通过将server_name语句更改为: example.comwww.example.com匹配您的第一个server块。

 server_name example.com www.example.com; 

请参阅此文档了解更多