80端口为什么要备案_Nginx只允许域名访问网站,禁止使用IP 访问80,443端口

ae692337e78b35e9c4af8e35fcd6640a.png

一、背景

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

二、解决方法

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

新添加一个 server:

server {  listen 80 default;  server_name _;  return 403;}

重载nginx配置文件,然后用IP访问,显示如下:

4acb00f6cf29737e318531c2edab46a3.png

果还配置了 443 端口,还需要加点配置:

server {  listen 80 default;  listen 443 default_server;  server_name _;  return 403;  ssl_certificate       /usr/local/nginx/cert/hello.pem;  ssl_certificate_key     /usr/local/nginx/cert/hello.key;  ssl_session_cache      shared:SSL:10m;  ssl_session_timeout     5m;  ssl_ciphers         ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  ssl_prefer_server_ciphers  on;}

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

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

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

重载nginx配置文件,然后用IP访问,显示如下:

63c1b15587a8eff6996d7ed1b618c47f.png

使用IP访问80、443返回 403 Forbidden,使用域名访问正常。

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

listen  80;server_name  www.xxxxxxxx.com;if ($host != 'www.xxxxxxxx.com'){   return 403;}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值