文章插图
一、背景
为了避免别人把未备案的域名解析到自己的服务器ip而导致服务器被断网,需要在Nginx上设置禁止通过ip访问服务器,只能通过域名访问 。
二、解决方法
如果网站只配置了 80 端口,那么按以下nginx配置:
新添加一个 server:
server{listen80default;server_name_;return403;}
重载nginx配置文件,然后用IP访问,显示如下:
文章插图
【Nginx只允许域名访问网站,禁止使用IP 访问80,443端口】
果还配置了 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;}
推荐阅读
- 私人黑贷只要身份证的 压身份证私人贷五万可靠吗
- Nginx高级篇:从原理到实战,彻底搞懂Nginx
- Linux安装Nginx详细教程
- 淘宝换货一次后怎么退货 淘宝退换货只能换一次吗
- 2021年余额宝哪只基金收益高 余额宝选择哪个货币基金最好2021
- 油电混动的车电池坏了,只加油不充电,能当纯汽油车来开吗?
- 三星|全球晶圆产能排行:台积电出人意料只排第二
- 梦见捉到活鸽子 梦见抓到一只活的白鸽子
- Nginx配置一键生成
- 热水器不出热水只出冷水怎么回事,热水器出热水只有五分钟