公司有2个阿里云公网SLB

以及一些ECS 云主机


有些核心应用服务器不想公网能访问到。

刚开始是做iptables,后来发现开启iptables之后,导致DNS解析不正常。因为RDS是域名访问的,所以后来就关闭掉了iptables。


后来建议用Nginx的访问白名单来做。发现access.log文件,显示的都是内网IP地址。公网IP地址没有发现,可能是没有人访问的原因(正常业务是通过内网访问的)。


最后我发现Nginx可以绑定监听地址的,如果只绑定内网IP,那么公网是无法访问的。

我测试了下,发现果然公网无法访问,只有内网可以访问。

默认的nginx.conf里面的server字段都删除掉了,所有配置文件都在vhosts文件夹里面。

但是里面有十几个配置文件,一个个改太麻烦了。

我直接一键替换了。

cd /usr/local/nginx/conf/vhosts/

sed -i '2s/80/10.171.254.184:80/g' *.conf

完成代码如下:

server {

        listen   10.171.254.184:80;

        server_name address.xx.com;

        root /www/address/web/www;

        index index.php index.html index.htm;


        location / {


        }


        location ~ \.php$ {

                fastcgi_pass   127.0.0.1:9000;

                fastcgi_index  index.php;

                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

                include        fastcgi_params;

        }


}


注意,nginx必须要先关闭,再次开启可以使本次配置生效。

直接reload是不行的,我测试过

/usr/local/nginx/sbin/nginx -s stop

/usr/local/nginx/sbin/nginx -s start


查看监听端口

netstat -anpt | grep nginx


测试访问