Nginx禁止未绑定IP的HTTP/HTTPS访问

问题描述:

例如,当域名ww.a.com 开启了https,访问https://www.a.com正常;如果访问未配置https的域名www.b.com,如https://www.b.com会打开https://www.a.com 的内容。

当然,直接通过IP访问也会出现以上的情况,也就是https的情况下通过IP访问会打开www.a.com的内容。

这是因为Nginx规则:首先查找配置文件里有无匹配的域名,如未找到,则查找default_server,如default_server未设置,则默认匹配配置文件排序后的第一个。

这就需要禁止未绑定IP的HTTP/HTTPS访问。

解决办法:

为Nginx的443端口设置默认域名 _ ,且拒绝访问,并配置ssl证书(不配置证书所有的https站点都无法访问)

这样就可以有效的解决以上的问题,并禁止未绑定的IP的HTTP/HTTPS访问,也使未绑定的域名无法访问。

server {
	listen 80;
	listen 443; 
	server_name  _;
	ssl off;
	ssl_certificate        /xxx/xx.pem;
	ssl_certificate_key    /xxx/xx.key;
	return 500;

	}

注意!! ssl 一定要设置为off也就是关闭状态

ssl off;

否则出现以下报错,并且会导致绑定的IP也无法直接访问。

400 Bad Request
The plain HTTP request was sent to HTTPS port
nginx
上一篇
下一篇