You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian9下Nginx1.10仅外部访问报HTTP403,局域网内正常

排查外部域名访问Nginx出现403错误的步骤

先别急着认定是ISP端口转发的问题,咱们一步步来排查,先把本地可能的问题排除干净:

1. 检查Nginx Server块的server_name配置

你局域网内用poseidon或本地IP能正常访问,大概率是你的Nginx站点配置里的server_name没包含外部域名。打开你的站点配置文件(一般在/etc/nginx/sites-available/mysite或者/etc/nginx/sites-enabled/mysite),找到server块里的server_name指令,确保它包含了www.open-si.org和open-si.org,比如:

server_name poseidon 192.168.x.x www.open-si.org open-si.org;

修改后记得重启Nginx:systemctl restart nginx,再试试用外部域名访问。

2. 核对文件与目录权限

虽然局域网访问正常,但还是要确认Nginx运行用户(默认是www-data)对/home/www/mysite目录和index.php有读取权限:

  • 查看目录权限:ls -ld /home/www/mysite,确保权限至少是755(所有者读/写/执行,组和其他读/执行)
  • 查看文件权限:ls -l /home/www/mysite/index.php,确保权限至少是644(所有者读/写,组和其他读)
    如果权限不对,用下面的命令修正:
chmod 755 /home/www/mysite
chmod 644 /home/www/mysite/index.php
chown -R www-data:www-data /home/www/mysite

3. 查看Nginx错误日志找具体原因

这是排查403最有效的方法!打开Nginx的错误日志(默认路径/var/log/nginx/error.log),搜索最近的403相关记录,日志会明确告诉你出错原因:

  • 如果是directory index of "/home/www/mysite/" is forbidden:检查server块里的index指令是否包含index.php,比如index index.php index.html;
  • 如果是permission denied:就是上面的权限问题没解决
  • 如果是no suitable server found:就是server_name没匹配上外部域名

4. 排查ISP端口转发及公网连通性

如果上面的本地排查都没问题,再聚焦到外网端口转发:

  • 确认路由器端口转发规则:登录你的路由器管理后台,检查是否把外部80端口(HTTP)转发到了poseidon的局域网IP(比如192.168.1.100)的80端口,协议要选TCP。
  • 检测公网端口是否可达:用手机断开WiFi(用移动数据)访问http://open-si.org,或者在一台外网机器上执行curl -I http://open-si.org,如果连不上,可能是:
    • 路由器端口转发配置错误
    • 你的ISP封禁了80端口(很多家用宽带会封80端口防止个人建站),这种情况可以尝试改用8080端口,修改Nginx监听端口为8080,同时在路由器转发8080端口,访问时用http://open-si.org:8080测试。
  • 确认域名解析正确性:执行nslookup open-si.org和nslookup www.open-si.org,看返回的IP是不是你的公网IP,如果解析到了错误的IP,需要去域名服务商那里修正解析记录。

内容的提问来源于stack exchange,提问作者Emmanuel BRUNET

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:09:45