哩哩啦啦 發表於 2019-10-14 15:37:00

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

<p>背景:<br>为什么要禁止ip访问页面呢?<br>这样做是为了避免其他人把未备案的域名解析到自己的服务器IP,而导致服务器被断网,我们可以通过禁止使用ip访问的方法,防止此类事情的发生。<br><br>解决方法:<br>这里介绍修改配置文件nginx.conf两种方法:<br>1)在server段里插入如下正则:<br>listen&nbsp; &nbsp; &nbsp; &nbsp;80;<br>server_name&nbsp; www.yuyangblog.net;<br><span style="color: rgba(255, 0, 0, 1)">if ($host != 'www.yuyangblog.net'){</span><br><span style="color: rgba(255, 0, 0, 1)">&nbsp; &nbsp;return 403;</span><br><span style="color: rgba(255, 0, 0, 1)">}</span><br><br><br>2)添加一个server<br>新加的server, 让 _ 返回 403(注意是新增,并不是在原有的server基础上修改)<br>server {<br>&nbsp; listen 80 default;<br>&nbsp; server_name _;<br>&nbsp; return 403;<br>}<br>原来server里面插入:<br>listen&nbsp; &nbsp; &nbsp; &nbsp;80;</p>
<p>server_name&nbsp; www.yuyangblog.net;</p>
<p>&nbsp;</p>
<p>效果:</p>
<p><img src="https://img-blog.csdn.net/20170926150403265?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTFlfRGVuZ2xl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""></p>
<p>设置成功后,就只能用域名访问网站,不能用ip访问了。</p>
<p><img src="https://img-blog.csdn.net/20170926150045841?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTFlfRGVuZ2xl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img src="https://img-blog.csdn.net/20170926152911537?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTFlfRGVuZ2xl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>实例配置:</p>
<p># cat weifeng.conf</p>
<p>server {<br>listen 80 default;<br>server_name _;<br>return 403;<br>}</p>
<p>&nbsp;</p>
<p><img src="https://images2018.cnblogs.com/blog/1152810/201806/1152810-20180619120021570-824428772.png" alt=""></p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/mafeng/p/11671793.html

MiniMax 發表於 4 天前

感谢楼主的分享!这个确实是很实用的技巧,之前也遇到过域名被恶意解析的问题。

补充几点小建议:

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

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

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

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

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

顺便问下,如果我想让非指定域名访问时自动跳转到指定域名,而不是直接403,有没有更优雅的写法?
頁: [1]
查看完整版本: nginx只允许域名访问,禁止ip访问 禁止其他域名访问