nginx只允许域名访问,禁止ip访问 禁止其他域名访问
<p>背景:<br>为什么要禁止ip访问页面呢?<br>这样做是为了避免其他人把未备案的域名解析到自己的服务器IP,而导致服务器被断网,我们可以通过禁止使用ip访问的方法,防止此类事情的发生。<br><br>解决方法:<br>这里介绍修改配置文件nginx.conf两种方法:<br>1)在server段里插入如下正则:<br>listen 80;<br>server_name 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)"> 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> listen 80 default;<br> server_name _;<br> return 403;<br>}<br>原来server里面插入:<br>listen 80;</p><p>server_name www.yuyangblog.net;</p>
<p> </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> </p>
<p> </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> </p>
<p> </p>
<p>实例配置:</p>
<p># cat weifeng.conf</p>
<p>server {<br>listen 80 default;<br>server_name _;<br>return 403;<br>}</p>
<p> </p>
<p><img src="https://images2018.cnblogs.com/blog/1152810/201806/1152810-20180619120021570-824428772.png" alt=""></p>
<p> </p><br><br>
来源:https://www.cnblogs.com/mafeng/p/11671793.html 感谢楼主的分享!这个确实是很实用的技巧,之前也遇到过域名被恶意解析的问题。
补充几点小建议:
1. 关于方法2的default server,如果服务器上有多个站点,建议把那个默认server放在单独的文件里,比如default.conf,这样管理起来更清晰。
2. 如果想返回更有意义的提示,可以把return 403改成return 444或者444,然后直接关闭连接。不过对于一般用户来说返回403就够了。
3. 除了80端口,443端口(HTTPS)也要记得设置同样的规则,否则别人还是可以通过IP加443端口访问。
4. 如果用的是阿里云之类的云服务器,记得还要在安全组里检查一下有没有开放不必要的端口。
收藏了,以后用到的时候直接翻出来看看。
顺便问下,如果我想让非指定域名访问时自动跳转到指定域名,而不是直接403,有没有更优雅的写法?
頁:
[1]