django - 无法通过域 URL 访问 Nginx 站点
问题描述
问题:
我在我的家庭网络上建立了一个(Docker)Django-Gunicorn-Nginx 站点。它适用于本地网络,但我无法通过我的域访问它。
设置:
- 在 namecheap.com 中注册了一个域。
- 设置动态 DNS 以使用 namecheap 域更新我的公共 IP。
- 在我的家庭网络中的计算机上设置网站并为其提供静态 IP。
- 启用从公共 80 到 LAN 80 的端口转发。
测试:
我已经在端口 22 上启用了端口转发,并且我已经能够通过 SSH 连接到为网站提供服务的计算机,
ssh user@domain
并且运行良好 ->domain/ddns ok
。我已经通过使用服务于网站的计算机的完整静态 IP 从连接在同一 LAN 上的另一台计算机访问该网站,并且它运行良好 ->
website/server ok
。我已经打电话给我的 ISP 以检查一切是否设置正确,以及是否允许我从我的网络提供网站服务,显然没有问题 ->
router/network ok
。
线索:
当我尝试从我的家庭网络外部、通过域或我的完整公共 IP 访问该站点时,我得到一个 ERR_EMPTY_RESPONSE。
当我尝试从我的家庭网络、通过域或使用完整的公共 IP(而不是通过实际工作的 LAN IP)访问该站点时,我被重定向到页面 192.168.0.1/intercept.html,其中包含来自我的 ISP 说我没有连接到互联网(我实际上有):
所以,在这一点上,我有点失落。我想了解解决这种情况的最佳方法。
解决方案
正如@ben5556 建议的那样,我尝试了端口 8000 并且它工作了:) 所以我的 ISP 可能阻塞了端口 80。
首先我尝试了端口 8080,但是在路由器配置页面上启用端口转发时,它显示了一条警告,指出该端口是为其他东西保留的,所以我尝试使用端口 8000。
这很烦人,因为我打电话给我的 ISP,他们说使用端口 80 应该没有问题。此外,在端口 80 上启用端口转发时根本没有任何警告。
更新
在公共端口 8000 上提供网络服务没有任何意义,因为浏览器默认使用端口 80,所以最终的解决方案是启用从公共 80 到 LAN 8000 的端口转发。显然只有 LAN 端口 80 被阻止,所以这个解决方案运行良好。