这是一个有点棘手的情况。我正在测试我最近容器化的 Laravel 应用程序的部署。我制作了一个基于 php 的容器,它在自身内部运行 Apache 来为应用程序提供服务。如果我只是运行这个容器,绑定(bind)到端口 5000,那么 link_to('/login')
正确生成指向 localhost:5000/login
的链接.
然而,现在我正在测试一个实际的部署场景,这个容器在 nginx 负载均衡器后面运行。我使用 Vagrant 设置了一个 VM,它运行两个容器:一个用于 nginx 负载均衡器,一个用于 Apache/Laravel 应用程序。我在主机的端口 7000 上访问虚拟机的端口 80。
在这种情况下,link_to('/login')
现在生成指向 localhost/login
的链接.港口哪里失踪了?它应该链接到 localhost:7000/login
,因为那是我访问页面的端口。
我该如何调试呢?我试过研究 link_to
的实现,但我怀疑问题出在其他地方。
编辑
此外,我刚刚发现,如果我通过 HTTPS(在 nginx 终止;Apache 仍然通过 HTTP 完成所有操作)为站点提供服务,那么这也会从 link_to
创建的链接中删除。 .而不是 https://localhost:7443/login
,链接看起来像 localhost/login
.
最佳答案
解决方案是使用类似 fideloper/proxy正确处理 Nginx 添加的代理 header 。我以为我已经这样做了,但我忘记将外观添加到 app/config/app.php
.
关于laravel - link_to 从容器中托管的站点中剥离端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33536386/