最近发现空间的 httpd 访问日志和 nginx 的错误日志异常放大,粗略浏览后发现很多莫名访问是直接通过 VPS 的 IP 进行访问的,那么 Lnmp 环境中,如何禁止 IP 访问就成了一个急需解决的问题。所谓的直接通过 IP 访问的内容,就是空头主机的内容,一般就是 wwwroot 目录下的default文件夹,也就是刚装好环境时 IP 访问出现的内容。

禁止 IP 访问最直接的好处就是,这样可以禁止搜索引擎,特别是那些“不太智能”的 XX 度,把你的 Default 页面进行多次收录(欢迎使用 LNMP 页面),影响排名。还能防止某些人恶意地把域名解析到你的VPS所在IP上。

坏处当然也是有的,来的最直接的就是无法用原来的 IP/phpmyadmin,来访问 lnmp 集成的 phpmyadmin。而解决这问题的办法说起来也简单,先进入正题。

搜索 关键字“lnmp 禁止ip访问”,得到军哥提供的直接解决办法如下:

找到并修改/usr/local/nginx/conf/nginx.conf

找到 Server{ 字段,修改代码如下

    server {
        listen 80 default_server;
        server_name _;
        return 500;
    }

假若你认为 return 500 对 SEO 来说不算太友好,那么你也可以把流量收集起来,可以直接把所以的流量重定向到自己的网站上来(并不能防止别人恶意解释,只起到跳转作用),以本站为例,代码如下:

    server {
        listen 80 default_server;
        server_name _;
        rewrite ^(.*) http://zctou.com/$1 permanent;
    }

最后用命令重启一下即可:

/usr/local/nginx/sbin/nginx -s reload

前面已经提到过,这样 rewrite 过后, IP/phpmyadmin 会无法访问,而比较方便的解决办法就是再用 lnmp vhost add 命令添加一个新网站,而这个新网站要是你网站的子域名,如本例就是 a.zctou.com,然后在添加的时候把 a.zctou.com 的文件夹指定到 phpmyadmin所在目录即可,目体操作如下:

1. 到域名商添加 a.zctou.com 的 A记录,指向 VPS 所在 IP。

2. VPS 上利用命令 lnmp vhost add 添加 a.zctou.com,把网站文件夹指向 phpmyadmin所在文件夹。