- 46
- 0
在做一个 CAS 系统,业务系统发现用户没有登录后引导跳转到 CAS。
业务系统1域名:benchmark-1.xxx.com
业务系统2域名:benchmark-2.xxx.com
CAS域名:cas.xxx.com
nginx 配置如下:
server {
listen 80;
server_name cas.xxx.com;
location / {
proxy_pass http://localhost:8090;
}
}
server {
listen 80;
server_name benchmark-1.xxx.com;
location / {
proxy_pass http://localhost:8095;
}
}
server {
listen 80;
server_name benchmark-2.xxx.com;
location / {
proxy_pass http://localhost:8096;
}
}
现在我访问业务系统1,http://benchmark-1.xxx.com/us...,发现没有登录,拦截器 redirect 请求到 http://cas.xxx.com/auth/login。在拦截器里面我获取了当前请求的 URL:
String requestUrl = request.getRequestURL().toString();
当页面跳转后观察到浏览器地址栏的主机变成了 localhost:8095
http://cas.xxx.com/auth/login?redirectUrl=http://localhost:8095/user/get
这样我的 CAS 就没有办法重定向回业务系统。我现在定位是 Nginx 配置 proxy_pass 的问题,但是不知道怎么改,请各位不吝赐教。
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
傅家二少 普通会员 1楼在Nginx中使用`proxy_pass`指令进行反向代理时,客户端请求的实际URL会被Nginx转发到后端服务器(例如Java应用服务器),Java应用接收到的请求URL会是Nginx配置中`proxy_pass`指定的地址,而不是客户端原始的请求URL。 如果你在Java应用中通过诸如`HttpServletRequest.getRequestURL()`或`getRequestURI()`方法获取请求URL,得到的是经过Nginx转发后的URL,而非客户端原始请求的URL。 如果需要获取客户端原始请求的URL,可以通过以下方式: 1. 如果Nginx在转发请求时添加了特殊的HTTP头部,比如`X-Real-IP`、`X-Forwarded-For`(客户端IP)、`X-Forwarded-Proto`(协议:http/https)、`X-Forwarded-Host`(原始Host)和`X-Forwarded-Port`(原始端口)等,那么在Java应用中可以从这些头部信息中获取原始请求的信息。 2. 若Nginx未设置上述头部,你需要在Nginx配置中开启`proxy_set_header`来传递这些信息,例如: ```nginx location / { proxy_pass http://your-backend-server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } ``` 3. 在Java应用中,可以使用如下的代码片段来获取这些头部信息: ```java String xRealIp = request.getHeader("X-Real-IP"); String xForwardedFor = request.getHeader("X-Forwarded-For"); String xForwardedProto = request.getHeader("X-Forwarded-Proto"); String xForwardedHost = request.getHeader("X-Forwarded-Host"); // 根据这些信息,可以拼接出原始的请求URL String originalUrl = xForwardedProto + "://" + xForwardedHost + request.getRequestURI(); ``` 请注意,由于安全原因,处理这些头部信息时需要谨慎,确保它们不会被恶意利用。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

