Linux用得比较少,所以对iptables也不是很熟悉,最近部署网站,因为对外的80端口是通过nginx转发,而内部程序都是类似8080、3000之类的端口,不做处理的情况下,很可能会看到如:地址www.poorren.com、地址www.poorren.com:8080同时可以访问的情况,这样对于SEO其实是很不利的,比如cnodejs.org,经常会搜到NodeJS相关文章,但是路径是cnodejs.org:8080,这样一来给用户带来不便,二来多个相同内容也一定程度上降低权重,所以,我们要禁止对带非80端口的路径进行访问。

看了相关文章,都是推荐iptables配置,尝试一番后解决了手头上问题,特记录一下,利人利己。

配置很简单,命令如下:

1、在tcp协议中,禁止所有的ip访问本机的8080端口。

iptables -I INPUT -p tcp --dport 8080 -j DROP

2、允许127.0.0.1访问本机的8080端口

iptables -I INPUT -s 127.0.0.1 -p tcp --dport 8080-j ACCEPT

注意,这里仅限于nginx和目标程序在同一服务器的情况,如果是分离的,需要允许nginx所在服务器ip访问。以上两条命令必须先禁用全部,再允许具体ip,可以是多条。

3、保存iptables

service iptables save

4、重启iptables防火墙

service iptables restart