link_to从容器中托管的站点剥离端口

时间:2015-11-05 03:50:05

标签: laravel nginx docker

这有点棘手。我正在测试我最近集装箱化的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

1 个答案:

答案 0 :(得分:0)

解决方案是使用fideloper/proxy之类的东西来正确处理Nginx添加的代理头。我以为自己已经这样做了,但是我忘了把立面添加到app/config/app.php