我本地网络上的一台服务器正在运行 Apache2,它托管着一个可从互联网访问的网站。我可以从网络外部顺利访问该网站,但不能从网络内部访问。
也就是说,当我的互联网连接与为网络服务器提供互联网访问的路由器相同时,我无法访问该网站。
我认为这是因为路由器不允许同时在端口 80 上建立两个连接,但我可能错了。有什么想法吗?
答案1
问题是您的路由器(我假设是家用或 SoHo 型路由器)不会在内部接口上进行端口转发。
事情的经过如下:
- 局域网上的 PC 对您的网站进行 DNS 查找并获取路由器的公共 IP 地址
- Web 浏览器通过端口 80 向您的公共 IP 地址发送请求
- 您的路由器在其内部接口上接收请求,并且由于此接口上没有端口转发功能,因此它会将其发送到自己的网站或直接丢弃它,而不是将其转发到您的网络服务器。
为了解决这个问题,你必须使用你的网络服务器的本地 IP 地址 - 你应该把它放在你的主办方文件,以便您仍然可以使用它的 URL 而不是 IP 地址来访问它,以允许虚拟主机工作。
例如,将该行添加www.mygreatwebsite.com 192.168.1.10
到您的主机文件(自然插入您的实际详细信息)并使用 www.mygre... 而不是 IP 地址,这样当您的浏览器的 HTTP 请求到达 Apache 时它会获取 URL,从而虚拟主机可以工作。
答案2
听起来好像 apache 网络服务器没有列出您的内部 IP 地址上的连接。
如果你查看 httpd.conf,应该有一行名为 listen 的命令,其中包含 IP 地址和端口。如果你想要更多监听,只需新建一行并输入类似
Listen 192.170.2.5:8000
您是否安装了防火墙,这可能会导致问题吗?