最近在抄文件laravel + breeze + vue
的碼,部署如下:
// 開發環境
Https ---> 雲伺服器Nginx反向代理Http ---> vpn內網的本機Nginx ---> fpm ---> Laravel
// 生產環境
Https ---> 阿里雲 ---> 負載均衡SLB Http ---> K8S ---> Nginx ---> fpm ---> Laravel
開發的時候一直用的是http
協議訪問,啥問題都沒有。
後來看到瀏覽器上有個不安全
提示,想著雲伺服器上本來就有域名證照,所以把訪問協議改成https
,這時候點選右上角的login
、register
路由前端就報錯了。
laracasts.com/discuss/channels/lar...
blog.csdn.net/u010347244/article/d...
一堆大佬的招式都是建議在app/Providers/AppServiceProvider.php
加上以下這個forceScheme
$url->forceScheme('https');
但並不是我想要的效果。。。
訪問http
就該是http
,https
就得自動是https
才對。
routes/web.php
wocao!!!怎麼到了UrlGenerator線索就斷了。。。
Laravel的水真深,後來換騷操作,全域性搜程式碼UrlGenerator
還真找到了對應的UrlGenerator
至此找到了最終的線索:
$this->isFromTrustedProxy()
—已經配置過信任的代理ipself::HEADER_X_FORWARDED_PROTO
—這個是新姿勢!!!
百度谷歌一頓 nginx HEADER_X_FORWARDED_PROTO
終於找到了對應的解決方案:
Nginx反向代理加上以下這句:
#設定向後端proxy傳送X-Forwarded-Proto欄位
proxy_set_header X-Forwarded-Proto $scheme;
生產環境阿里雲負載均衡配置搜了下文件,找到了相應配置入口
help.aliyun.com/document_detail/86...
搞定!
- 遇到問題耐心搜尋+dd(),可以掌握新姿勢
- Laravel有些碼從IDE跳進去看不到真實的類,可以騷操作全域性搜尋一下
- https反向代理http,nginx配置那要向後端proxy傳送X-Forwarded-Proto欄位
本作品採用《CC 協議》,轉載必須註明作者和本文連結