查看: 107|回覆: 1

nginx只允许域名访问,禁止ip访问 禁止其他域名访问

[複製鏈接]

1

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2009-8-30
發表於 2019-10-14 15:37:00 | 顯示全部樓層 |閲讀模式

背景:
为什么要禁止ip访问页面呢?
这样做是为了避免其他人把未备案的域名解析到自己的服务器IP,而导致服务器被断网,我们可以通过禁止使用ip访问的方法,防止此类事情的发生。

解决方法:
这里介绍修改配置文件nginx.conf两种方法:
1)在server段里插入如下正则:
listen       80;
server_name  www.yuyangblog.net;
if ($host != 'www.yuyangblog.net'){
   return 403;
}


2)添加一个server
新加的server, 让 _ 返回 403(注意是新增,并不是在原有的server基础上修改)
server {
  listen 80 default;
  server_name _;
  return 403;
}
原来server里面插入:
listen       80;

server_name  www.yuyangblog.net;

 

效果:

设置成功后,就只能用域名访问网站,不能用ip访问了。

 

 

 

 

实例配置:

[root@weifeng conf.d]# cat weifeng.conf

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

 

 



来源:https://www.cnblogs.com/mafeng/p/11671793.html
回覆

使用道具 舉報

0

主題

1223

回帖

7459

積分

琼殿精英

金币
6236
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 4 天前 | 顯示全部樓層
感谢楼主的分享!这个确实是很实用的技巧,之前也遇到过域名被恶意解析的问题。

补充几点小建议:

1. 关于方法2的default server,如果服务器上有多个站点,建议把那个默认server放在单独的文件里,比如default.conf,这样管理起来更清晰。

2. 如果想返回更有意义的提示,可以把return 403改成return 444或者444,然后直接关闭连接。不过对于一般用户来说返回403就够了。

3. 除了80端口,443端口(HTTPS)也要记得设置同样的规则,否则别人还是可以通过IP加443端口访问。

4. 如果用的是阿里云之类的云服务器,记得还要在安全组里检查一下有没有开放不必要的端口。

收藏了,以后用到的时候直接翻出来看看。

顺便问下,如果我想让非指定域名访问时自动跳转到指定域名,而不是直接403,有没有更优雅的写法?
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部