选择了在 Racknerd 上购买一台海外 VPS,系统版本为 CentOS 7,但在安装 Nginx 后,外网无法正常访问。经过分析,发现问题多数出在防火墙端口未开放。以下是具体的解决方案。
👉 【建议收藏】2025年Racknerd最新优惠套餐整理汇总 - 每日更新可用活动优惠
运行以下命令测试 Nginx 是否已经正确安装并可以正常使用。
bash $ wget http://127.0.0.1 --2025-01-03 20:11:34-- http://127.0.0.1/ 正在连接 127.0.0.1:80... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:615 [text/html] 正在保存至: “index.html” 2025-01-03 20:11:34 (83.5 MB/s) - 已保存 “index.html” [615/615])
如果能够收到 200 OK
的响应,说明 Nginx 已安装成功,但如果外网仍无法访问,则需要检查防火墙配置。
使用 firewall-cmd
查看防火墙是否已开放 HTTP 和 HTTPS 的端口。
bash $ firewall-cmd --query-port=80/tcp output: no $ firewall-cmd --query-port=443/tcp output: no
从结果中可以看到这两个端口默认是关闭的,因此需要手动将其开放。
运行以下命令,以永久方式开放 80 和 443 端口。
bash $ firewall-cmd --permanent --add-port=80/tcp output: success $ firewall-cmd --permanent --add-port=443/tcp output: success
添加端口后,需要重启防火墙以使新规则生效。
bash $ firewall-cmd --reload output: success
此时,外界应该正常可以通过 HTTP 和 HTTPS 访问到你的 Nginx 服务了。
以下是使用防火墙的常用命令,便于日后配置或排查问题时参考。
查看防火墙服务状态
bash $ systemctl status firewalld
检查防火墙运行状态
bash $ firewall-cmd --state
列出所有防火墙规则
bash $ firewall-cmd --list-all
查询某端口是否开放
bash $ firewall-cmd --query-port=19999/tcp
开放某端口(例如 80 端口)
bash $ firewall-cmd --permanent --add-port=80/tcp
关闭某端口(例如 80 端口)
bash $ firewall-cmd --permanent --remove-port=80/tcp
重启防火墙
修改防火墙规则后必须重启防火墙。
bash $ firewall-cmd --reload
通过以上步骤,相信你可以顺利解决 Nginx 外网访问的问题。如果仍有其他疑问,可以进一步检查 Nginx 配置文件是否正确设置了监听地址或主机防火墙策略。祝顺利!