Laravel 5.7 如果网络服务器没有安装加密层,则不会生成 HTTPS 路由

Laravel 5.7 doesn't generate HTTPS routes if the webserver has no encryption layer installed

当前的服务器设置如下所示。

具有指向多个 docker 容器的 nginx 反向代理的服务器。 我们的 Laravel 5.7 应用程序在其中一个容器中运行,其中包含 nginx + php7.2 FPM

docker 中的网络服务器应该向反向代理传递一个不安全的响应,这使得它在外层是安全的。

容器化网络服务器侦听 80。

即使协议在 config/app.php APP_URL 设置中明确指定为 HTTPS,Laravel 生成的所有 URL 都是 HTTP。

我还尝试了一些其他技巧,sslizing 中间件等,但 none 似乎有效。

有什么想法吗?

你应该在 TrustProxies 中间件 https://github.com/laravel/laravel/blob/master/app/Http/Middleware/TrustProxies.php 中填写 $proxies 属性 例如:

protected $proxies = [
  'ip1',
   'ip2',
];

您可以在 Configure Trusted proxies section

中阅读更多相关信息

设法用 TrustProxies 完成并修改 nginx 配置。如果对以后的人有帮助,我会把相应的代理设置留在这里:

proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header   X-Forwarded-Host $server_name;
proxy_set_header   X-FORWARDED-PROTO https;