网上找了很久,都只有http跳转https,以及http下不带www跳转到www的方法,于是自己研究了一下,首先想到直接把443端口的server_name不带www 301跳转到带www,向下面这样:
server { listen 443 ssl; server_name strawtc.cn; return 301 https://www.strawtc.cn$request_uri; }
同时还有个之前就配置好的
server { listen 443 ssl; server_name www.strawtc.cn; location /{ } }
发现网站直接打不开,logs报no “ssl_certificate” is defined in server listening on SSL port while SSL handshaking错误,搜索了一下在https://www.tectut.com/2014/10/solved-no-ssl_certificate-is-defined-in-server-listening-on-ssl-port-while-ssl-handshaking-client/这找到了答案
最终跳转的server,listen要加default_server ssl ,也就是
server { listen 443 default_server ssl; server_name www.strawtc.cn; location /{ } }
这样才行,不知道为什么,这应该是很常见的需求,之前网上都找不到解决方法
还不懂的可以参照我的回答(Id:何同学):
https://segmentfault.com/q/1010000008196871/a-1020000008808575
大哥,你终于解决了我的问题,已然也要在443下设置跳转,搞一晚上了,谢了