稻草网

Nginx 不带www的https域名 301跳转到带www的方法

网上找了很久,都只有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

  1. zhangwei说道:

    大哥,你终于解决了我的问题,已然也要在443下设置跳转,搞一晚上了,谢了

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注