无法通过域 URL 访问 Nginx 站点

Posted

技术标签:

【中文标题】无法通过域 URL 访问 Nginx 站点【英文标题】:Nginx site cannot be accessed through domain URL 【发布时间】:2019-04-07 04:35:15 【问题描述】:

问题:

我已经在我的家庭网络上建立了一个(Docker)Django-Gunicorn-nginx 站点。它可以在本地网络上运行,但我无法通过我的域访问它。

设置:

在 namecheap.com 中注册了一个域。 设置动态 DNS 以使用 namecheap 域更新我的公共 IP。 在我家庭网络中的计算机上设置网站并为其提供静态 IP。 启用从公共 80 到 LAN 80 的端口转发。

测试:

我已经在端口 22 上启用了端口转发,并且我已经能够通过 SSH 连接到使用 ssh user@domain 为网站提供服务的计算机,并且运行良好 -> domain/ddns ok

李>

我已从连接在同一 LAN 上的另一台计算机访问该网站,方法是使用服务该网站的计算机的完整静态 IP,它运行良好 -> website/server ok

我已致电我的 ISP,检查一切是否设置正确,是否允许我从我的网络为网站提供服务,显然没有问题 -> router/network ok

线索:

当我尝试从我的家庭网络外部、通过域或我的完整公共 IP 访问该站点时,我得到一个 ERR_EMPTY_RESPONSE。

当我尝试从我的家庭网络、通过域或使用完整的公共 IP(而不是通过实际工作的 LAN IP)访问该站点时,我被重定向到页面 192.168.0.1/intercept.html,其中包含来自我的 ISP 的消息说我没有连接到互联网(我实际上有):

所以,在这一点上,我有点失落。我想了解解决这种情况的最佳方法。

【问题讨论】:

ISP 通常会阻止端口 80。“ERR_EMPTY_RESPONSE”似乎表明端口转发设置不正确或未按预期工作。也许试试 8080 之类的差异端口,看看它是否有效。 【参考方案1】:

正如@ben5556 建议的那样,我尝试了端口 8000 并且成功了 :) 所以我的 ISP 可能阻塞了端口 80。

首先我尝试了 8080 端口,但是在路由器配置页面上启用端口转发时,它显示了一条警告,指出该端口是为其他东西保留的,所以我尝试使用端口 8000。

这很烦人,因为我打电话给我的 ISP,他们说使用端口 80 应该没有问题。此外,在端口 80 上启用端口转发时根本没有警告。

更新

在公共端口 8000 上提供网络服务毫无意义,因为浏览器默认使用端口 80,因此最终的解决方案是启用从公共 80 到 LAN 8000 的端口转发。显然只有 LAN 端口 80 被阻止,所以这个解决方案运行良好。

【讨论】:

不要相信你的 ISP,他们是只想要你钱的坏人。

以上是关于无法通过域 URL 访问 Nginx 站点的主要内容,如果未能解决你的问题,请参考以下文章

nginx站点目录及文件URL访问控制

无法通过公共 ip 访问 EC2 实例上的站点

无法访问此站点以获取 AWS Elastic Beanstalk 环境 URL

修改站点和主页URL后无法访问WordPress站点

通过 Gunicorn/Nginx 使用 Django 的站点框架运行多个站点

通过受限访问 URL 从另一个站点访问一个站点的问题