Nginx只允许域名访问网站,禁止使用IP 访问80,443端口

转载来源 :Nginx只允许域名访问网站,禁止使用IP 访问80,443端口 :http://www.safebase.cn/article-260225-1.html

摘要: 一、背景 为了避免别人把未备案的域名解析到自己的服务器ip而导致服务器被断网,需要在nginx上设置禁止通过ip访问服务器,只能通过域名访问。二、解决方法 如果网站只配置了 80 端口,那么按以下nginx配置: 新添加一个 server:server{listen80default;server_name_;return403;} 重载nginx配置文件, …

在这里插入图片描述

一、背景

为了避免别人把未备案的域名解析到自己的服务器ip而导致服务器被断网,需要在nginx上设置禁止通过ip访问服务器,只能通过域名访问。

二、解决方法

如果网站只配置了 80 端口,那么按以下nginx配置:

新添加一个 server:

server{listen80default;server_name_;return403;}

重载nginx配置文件,然后用IP访问,显示如下:
在这里插入图片描述
果还配置了 443 端口,还需要加点配置:

server{listen80default;listen443default_server;server_name_;return403;ssl_certificate/usr/local/nginx/cert/hello.pem;ssl_certificate_key/usr/local/nginx/cert/hello.key;ssl_session_cacheshared:SSL:10m;ssl_session_timeout5m;ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocolsTLSv1TLSv1.1TLSv1.2;ssl_prefer_server_cipherson;}

为什么要加上ssl证书的配置?

Nginx 上对于使用 SSL协议的虚拟主机,如果不配置SSL证书的时候访问会出现协议错误,哪怕端口上配置了其它网站也会报错。解决方法就是随便生成一个证书配置进去。

就是说 443端口如果也跟 80端口那样子的配置,使用https方式访问正常的域名也会被拒绝连接。

重载nginx配置文件,然后用IP访问,显示如下:
在这里插入图片描述
使用IP访问80、443返回 403 Forbidden,使用域名访问正常。

还有一种解决方法,就是在server里加上一段正则匹配:

listen80;server_namewww.xxxxxxxx.com;if($host!='www.xxxxxxxx.com'){return403;}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值