Racknerd VPS 外网无法访问 Nginx 的解决方案

选择了在 Racknerd 上购买一台海外 VPS,系统版本为 CentOS 7,但在安装 Nginx 后,外网无法正常访问。经过分析,发现问题多数出在防火墙端口未开放。以下是具体的解决方案。

👉 【建议收藏】2025年Racknerd最新优惠套餐整理汇总 - 每日更新可用活动优惠

1. 测试 Nginx 是否安装成功

运行以下命令测试 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 已安装成功,但如果外网仍无法访问,则需要检查防火墙配置。

2. 查看 80/443 端口是否开放

使用 firewall-cmd 查看防火墙是否已开放 HTTP 和 HTTPS 的端口。

bash $ firewall-cmd --query-port=80/tcp output: no $ firewall-cmd --query-port=443/tcp output: no

从结果中可以看到这两个端口默认是关闭的,因此需要手动将其开放。

3. 打开防火墙的指定端口

运行以下命令,以永久方式开放 80 和 443 端口。

bash $ firewall-cmd --permanent --add-port=80/tcp output: success $ firewall-cmd --permanent --add-port=443/tcp output: success

4. 重启防火墙加载配置

添加端口后,需要重启防火墙以使新规则生效。

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 配置文件是否正确设置了监听地址或主机防火墙策略。祝顺利!