Nginx配置HTTPS域名跳转到www开头域名

常见的是把80端口(HTTP)跳转到443端口(HTTPS),但是最近想把acgist.com域名重定向到www.acgist.com上面,如下配置:

	server {
		listen		80;
#		listen		443 ssl;
		server_name	acgist.com;
	 	return		301		https://www.acgist.com$request_uri;
	}
	server {
		listen		80;
		server_name	www.acgist.com;
	 	return		301		https://$host$request_uri;
	}
	server {
		listen		443	ssl;
		server_name	www.acgist.com;
		#其他配置
	}

上面的代码跳转前两个成功,后面的失败:

# 成功
http://acgist.com->https://www.acgist.com
http://www.acgist.com->https://www.acgist.com
# 失败
https://acgist.com->https://www.acgist.com

如果把上面注释打开,直接都访问不了,提示:

无法访问此网站
www.acgist.com 意外终止了连接。

后来网上看到一篇文章,在后面www.acgist.comssl配置添加default_server即可解决问题。试了一下确实可以。
修改后配置如下:

	server {
		listen		80;
		listen		443 ssl;
		server_name	acgist.com;
	 	return		301		https://www.acgist.com$request_uri;
	}
	server {
		listen		80;
		server_name	www.acgist.com;
	 	return		301		https://$host$request_uri;
	}
	server {
		listen		443	ssl default_server;
		server_name	www.acgist.com;
		#其他配置
	}

原文地址:https://segmentfault.com/q/1010000008196871