nginx 處理後臺http的重定向問題

項目背景

項目接入了統一認證登錄,同時註冊了回調地址https://localhost/test(這裏用了假的路徑,只用作描述問題)。中間省去了nginx反向代理,整個登錄流程:
(1)點擊登錄,跳轉到統一認證登錄頁面https
(2)輸入手機號及驗證碼,完成登錄
(3)統一認證平臺回調地址(https://localhost/test?token=xx),服務後臺根據token完成用戶登錄,之後會在後臺重定向到 /index 首頁。

問題描述

統一認證登錄回調後臺的https登錄(nginx反向代理http服務)接口(https://localhost/test),登錄成功後,返回的url爲http://localhost:443/index

初步定位

可以看到返回的端口正確,說明肯定是經過nginx,且是https協議過去的,可以從示例的截圖中確認:


Nginx日誌
但是,返回後的地址請求仍是

瀏覽器結果

原因分析

在統一認證回調後,調用https回調接口,經過nginx進入http後臺服務,後臺完成用戶登錄後,有個請求重定向到/index,導致返回的協議類型爲後臺協議(http),至於爲什麼還是帶上了nginx端口(443),還沒弄明白

解決方式

增加nginx上的配置,對後臺的重定向請求http強制轉換成https,配置項爲:

...
# 這個配置解決重定向後https變成了http 的問題。
proxy_redirect http:// https://;
...

再次測試,後的結果,可以看到把http後臺的重定向轉成了https


後臺http重定向轉成https
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章