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

标签 laravel nginx docker

这是一个有点棘手的情况。我正在测试我最近容器化的 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/

相关文章:

php - 来自另一个域的发布请求结果 TokenMismatchException

laravel - Cloudflare 错误 502 错误网关 - Nginx - Laravel5

docker - 跨 Docker 容器共享内存 : '--ipc=host' vs. '--ipc=shareable'

php - Laravel 不对 Assets 和动态路由使用 https

angularjs - Angular + Laravel 项目的 CORS 问题

python - Django 没有正确重定向

docker - 使用 docker-compose 将多个 docker 容器链接到一个别名为 localhost 的容器

docker - 无法从主机连接到 Docker 容器

laravel - Laravel 中未定义路由登录

node.js - AWS Elastic Beanstalk - NodeJS : Get certificate SSL from Letsencrypt without Beanstalk Load Balancer