Linux下怎么让nginx能被其他设备访问?

怎么让运行在 linux 下的 nginx 服务器能够被局域网甚至外网中的其他设备访问呢?

网上查到和 iptables 有关,但是这个东西怎么调整呢?

阅读 5.1k
1 个回答

Ubuntu上这样开关防火墙ufw:

# 开启防火墙(开放80端口):
sudo ufw enable && sudo ufw default deny && sudo ufw allow 80/tcp && sudo ufw status
# 关闭防火墙:
sudo ufw disable && sudo ufw default allow
sudo iptables -F && sudo iptables -X && sudo iptables -Z && sudo iptables -L

如果不想使用Ubuntu提供的ufw,也可以直接使用iptables:

sudo ufw disable && sudo ufw default allow #用于确保INPUT/FORWARD/OUTPUT几条链都是ACCEPT状态,否则网络访问中断,包括ssh.
sudo iptables -F && sudo iptables -X && sudo iptables -Z && sudo iptables -L
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT
sudo iptables -A INPUT -j DROP
iptables-save > /etc/iptables.up.rules #切换到root用户执行,sudo会提示无权限
sudo nano /etc/network/interfaces #在末尾添加一行,在网络启动时应用防火墙规则: 
pre-up iptables-restore < /etc/iptables.up.rules
#查看设置的规则:
sudo iptables -nvL --line-numbers
#插入一条规则到INPUT链第6的位置:
sudo iptables -I INPUT 6 -j DROP
#修改INPUT链的第6条规则:
sudo iptables -R INPUT 6 -j ACCEPT
#删除INPUT链第6条规则:
sudo iptables -D INPUT 6
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题