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',
];
中阅读更多相关信息
设法用 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;
当前的服务器设置如下所示。
具有指向多个 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',
];
中阅读更多相关信息
设法用 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;