[踩了個坑] Laravel 訪問https網址,url('/')竟然只返回 http?

尢大人發表於2022-04-20

最近在抄文件laravel + breeze + vue的碼,部署如下:

// 開發環境
Https ---> 雲伺服器Nginx反向代理Http --->  vpn內網的本機Nginx ---> fpm ---> Laravel

// 生產環境
Https ---> 阿里雲 ---> 負載均衡SLB Http ---> K8S ---> Nginx ---> fpm ---> Laravel

開發的時候一直用的是http協議訪問,啥問題都沒有。

後來看到瀏覽器上有個不安全提示,想著雲伺服器上本來就有域名證照,所以把訪問協議改成https,這時候點選右上角的loginregister 路由前端就報錯了。

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

laracasts.com/discuss/channels/lar...
blog.csdn.net/u010347244/article/d...

一堆大佬的招式都是建議在app/Providers/AppServiceProvider.php加上以下這個forceScheme

$url->forceScheme('https');

但並不是我想要的效果。。。

訪問http就該是httphttps就得自動是https才對。

routes/web.php
【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

wocao!!!怎麼到了UrlGenerator線索就斷了。。。

Laravel的水真深,後來換騷操作,全域性搜程式碼UrlGenerator

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

還真找到了對應的UrlGenerator

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

【踩了個坑】訪問https網址,Laravel url('/')居然返回http?

至此找到了最終的線索:

  1. $this->isFromTrustedProxy() —已經配置過信任的代理ip
  2. self::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...

[踩了個坑]訪問https網址,Laravel url('/')居然返回http?

[踩了個坑]訪問https網址,Laravel url('/')居然返回http?

[踩了個坑]訪問https網址,Laravel url('/')居然返回http?

[踩了個坑]訪問https網址,Laravel url('/')居然返回http?

搞定!

  1. 遇到問題耐心搜尋+dd(),可以掌握新姿勢
  2. Laravel有些碼從IDE跳進去看不到真實的類,可以騷操作全域性搜尋一下
  3. https反向代理http,nginx配置那要向後端proxy傳送X-Forwarded-Proto欄位
本作品採用《CC 協議》,轉載必須註明作者和本文連結
CV專員在靜靜的抄你碼

相關文章