NAT 后面的 Web 服务器给出 403 错误

NAT 后面的 Web 服务器给出 403 错误

我有一个 Web 服务器,从本地 IP 地址提供页面服务。

它位于 NAT 后面,已正确设置 80 和 443 的端口转发(通过指向另一个本地 Web 服务器进行测试)。

当尝试从公共地址访问时,我得到 403,但同时一切都可以从本地网络访问。

Web 服务器是 apache。

检查的顺序是怎样的?

编辑:谢谢大家的回答。问题已解决。

我检查了 apache 访问日志(其中提到了 403),但并没有给我任何线索。当时我基本上想知道是 apache 还是 webapp(drupal)给出了这个响应。在对 apache 配置进行了三次检查后,我还更彻底地检查了 webapp,发现非本地 IP 被禁止了。

编辑2: 如果有人提供了一个好的答案(或扩展现有的答案),关于什么是确定它是 apache 还是 webapp 的正确方法,我会接受它作为答案。

答案1

您在 apache 配置中使用基于名称的虚拟主机吗?您如何从 LAN 连接并通过 NAT 路由器?如果您有基于名称的虚拟主机,则 HTTP 请求中的 Host 标头定义哪个虚拟主机为请求提供服务。例如,如果我有类似以下内容:

<VirtualHost *:80>
  ServerName my.internal.hostname
  .....
</VirtualHost>

<VirtualHost *:80>
  ServerName some.other.hostname
  ...
</VirtualHost>

我在外部路由器上连接http://my.nat.路由器/,我可能会最终使用我指定的最后一个虚拟主机名。如果该虚拟主机名设置在没有权限的 DocumentRoot 上,我会得到 403。

另一种可能性是,您指定了 DocumentRoot,但稍后的 Directory 指令中没有“允许所有”,而只有“允许来自 192.168.0.0/24”之类的内容。

答案2

apache 错误日志说了什么?那应该能给你一些线索。

最佳猜测 - 仔细检查您的 Web 服务器配置 - 您是否允许“任何”访问?其中可能有一条规则仅允许本地子网。

答案3

403 表示禁止访问。您允许匿名访问 apache 吗?

相关内容