这有点棘手。我正在测试我最近集装箱化的Laravel应用程序的部署。我已经创建了一个基于php的容器,它在自身内部运行Apache来为应用程序提供服务。如果我只是运行此容器,绑定到端口5000,则link_to('/login')
正确生成指向localhost:5000/login
的链接。
但是,现在我正在测试一个实际的部署方案,其中此容器在nginx负载均衡器后面运行。我使用Vagrant设置了一个VM,它运行两个容器:一个用于nginx负载均衡器,另一个用于Apache / Laravel应用程序。我在主机端口7000上访问VM的端口80。
在这种情况下,link_to('/login')
现在会生成指向localhost/login
的链接。港口哪里丢失了?它应链接到localhost:7000/login
,因为这是我正在访问该页面的端口。
我该如何调试?我已经尝试过调查link_to
的实现,但我怀疑问题出在其他地方。
修改
我刚刚发现,如果我通过HTTPS服务该站点(在nginx处终止; Apache仍然通过HTTP执行所有操作),这也会从link_to
创建的链接中删除。该链接不是https://localhost:7443/login
,而是localhost/login
。
答案 0 :(得分:0)
解决方案是使用fideloper/proxy之类的东西来正确处理Nginx添加的代理头。我以为自己已经这样做了,但是我忘了把立面添加到app/config/app.php
。