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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章