<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[Nginx禁止通过IP直接访问网站设置，nginx 禁止某个IP访问站点。在nginx中配置如何防止直接用ip访问服务器web server及server_name特性讲解。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Web服务器]]></category>
<pubDate>Wed, 03 Dec 2014 15:50:21 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：<br/>一）在Nginx上设置禁止通过IP访问服务器，只能通过域名访问，这样做是为了避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网<br/>，这才是关键。<br/>二）很多nginx的配置，好像都忽略了ip直接访问web的问题，不利于SEO优化，所以我们希望可以避免直接用IP访问网站，而是域名访问。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;今天要在Nginx上设置禁止通过IP访问服务器，只能通过域名访问，这样做是为了避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网，从 网络上搜到以下解决方案： <br/>============================== <br/>在nginx中配置如何防止直接用ip访问服务器web server及server_name特性讲解：http://www.cnblogs.com/fangbo/archive/2011/02/21/1959855.html<br/>nginx的默认虚拟主机在用户通过IP访问，或者通过未设置的域名访问（比如有人把他自己的域名指向了你的ip）的时候生效 <br/><br/>最关键的一点是，在server的设置里面添加这一行： <br/>listen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80 default; <br/>后面的default参数表示这个是默认虚拟主机。 <br/><br/>这个设置非常有用。 <br/>比如别人通过ip或者未知域名访问你的网站的时候，你希望禁止显示任何有效内容，可以给他返回500. <br/>目前国内很多机房都要求网站主关闭空主机头，防止未备案的域名指向过来造成麻烦。就可以这样设置： <br/>server &#123; <br/>listen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80 default; <br/>return 500; <br/>&#125; <br/><br/>也可以把这些流量收集起来，导入到自己的网站，只要做以下跳转设置就可以： <br/>server &#123; <br/>listen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80 default; <br/>rewrite ^(.*) http://www.mydomain.com permanent; <br/>&#125; <br/>============================== <br/><br/>按照如上设置后，确实不能通过IP访问服务器了，但是在应该用中出现当server_name后跟多个域名时，其中一个域名怎么都无法访问： <br/><br/>设置如下： <br/>server <br/>&#123; <br/>listen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80; <br/>server_name www.abc.com&nbsp;&nbsp;abc.com <br/>没更改之前，通过server_name 中的www.abc.com&nbsp;&nbsp;abc.com均可访问服务器，加入禁止IP访问的设置后，通过abc.com无法访问服务器了，www.abc.com可以访问 <br/><br/>用 nginx -t 检测配置文件会提示warning： <br/><br/>[warn]: conflicting server name “abc.com” on 0.0.0.0:80, ignored <br/>the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok <br/>configuration file /usr/local/webserver/nginx/conf/nginx.conf test is successful <br/><br/>最后通过在listen 80 default;后再加server_name _;解决，形式如下： <br/><br/>#禁止IP访问 <br/>server <br/>&#123; <br/>listen 80 default; <br/>server_name _; <br/>return 500; <br/>&#125; <br/><br/>这样，通过abc.com就能访问服务器了，问题解决了，但具体原因还是不清楚。<br/><br/>摘自：http://isno.iteye.com/blog/717964<br/><br/><br/>nginx 禁止某个IP访问站点：<br/>有IP刷网站，想封掉这个IP，不让他打开网站。查资料，网上很多人说 /etc/hosts.deny 可以实现。其实是不行的。又不想用 iptable，感觉太麻烦。直接查 nginx阻止ip访问的办法。<br/><br/>首先建立下面的配置文件放在 nginx 的 conf目录下面，命名为blocksip.conf：<br/>deny 4.4.4.4&nbsp;&nbsp;&nbsp;&nbsp;//这是nginx要禁止的IP<br/>保存一下。<br/>在nginx的配置文件nginx.conf中加入：include blocksip.conf; 然后重启 nginx，就可以生效了。被封锁的ip打开站点的时候，就会提示：<br/>403 Forbidden<br/><br/>blocksip.conf:的格式还有许多种，可以配置只允许的IP访问或者IP段访问：<br/>deny IP;<br/>allow IP;<br/># block all ips<br/>deny all;<br/># allow all ips<br/>allow all;<br/>其中网段的写法是这样的：192.168.1.0/24这样的形式。<br/>摘自：http://blog.csdn.net/gold2008/article/details/8495348<br/>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] Nginx禁止通过IP直接访问网站设置，nginx 禁止某个IP访问站点。在nginx中配置如何防止直接用ip访问服务器web server及server_name特性讲解。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>