前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx 配置,禁止通过ip地址直接访问Web 服务

Nginx 配置,禁止通过ip地址直接访问Web 服务

作者头像
zinyan.com
发布2022-12-08 17:53:19
7.3K0
发布2022-12-08 17:53:19
举报
文章被收录于专栏:zinyanzinyanzinyan

1. 原因

默认情况下Nginx配置完毕后,是允许ip地址直接访问的。而我们一直以开发者思维处理的话。也容易忽视这这方面存在的风险。

而这样做的风险在于:

  1. 其他人将他的域名绑定指向了我们的ip。那么容易造成服务器被网监判定为存在非法域名,造成服务器被断网。
  2. 各种ip访问扫码工具,会收集我们的Web应用程序信息,容易造成信息泄露。(access.log中很多通过ip地址访问的记录)

而且,如果碰见互联网清网行动大力度管控时期,所有web服务器都不允许通过ip地址进行访问web服务器,必须使用设定的域名访问web服务器。否则一律清理。

以上风险来源于网络,我的阿里云服务器两年期间没有提示有这个风险。 我发现百度到现在也是可以直接通过ip访问的,不一定必须是域名。

下面介绍Nginx中的配置。

2. 配置

首先,删除掉我们原先的server{ server_name} 中的ip地址。如果存在的话就进行删除,如果不存在就保持不变即可。

第二步,在我们的/etc/nginx/conf.d/default.conf文件中进行添加以下的配置即可:(PS:如果没有这个路径,那么可以添加到/etc/nginx/nginx.conf文件中,效果是一样的)

 server {
     listen 80  default_server;
     listen 443 default_server;
     server_tokens off;
     server_name _;
     return 444;
     
     ssl_certificate_key 我们自己的SSL证书全路径.key;
     ssl_certificate 我们自己的SSL证书全路径.pem;
 }

default_server; 代表默认无匹配的时候由当前的server处理。

server_name _;代表无效域名。

合起来的意思就是,其他server没有匹配的,全部由当前server进行匹配处理。

该server匹配到之后,处理的结果就是直接返回444状态

而前端收到的效果就是ERR_EMPTY_RESPONSE错误了。

配置完毕后输入nginx -t 检测通过后,通过service nginx reload刷新配置就可以生效了。

这个时候我们通过http://ip 或者https://ip 都将无法正确访问了。

所有的访问就必须通过域名才能访问了,通过ip地址的请求都将会打回。

2.1 问题

我配置完毕后,通过https://iphttp://ip 访问的确返回了444状态。但是如果我通过http://ip:443却不会返回444。而是返回400

最终我也没有找到解决方法,只是为了避免该页面上暴露nginx的版本号,添加了 server_tokens off;选项。

这个问题影响也不大。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 zinyan 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 原因
  • 2. 配置
    • 2.1 问题
    相关产品与服务
    SSL 证书
    腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档