我司需要发布对外映射。相对于普通应用,直接返回系统资源,该系统使用了重定向,重定向地址为内网地址。
普通映射:http://xxxxx/login.action?os_destination=%2Finxxxxxolation=true ,即为直接一个应用地址。
此次映射:http://x.x.x.x/xxxxxx/login?service**=http%3A%2F%2Fx.x.x.x** %3A10090%2F ,业务部门加了重定向。
鉴于雷池的安全机制,将其增加至雷池。同时需要解决重定向问题。
调研方案:
当后端服务器 http://x.x.x.x:xxx返回的重定向地址为 http://x.x.x.x:xxx/login(包含内网 IP)时,若直接通过 Nginx 代理端口,客户端会收到原始重定向地址,导致无法从公网访问(因 x.x.x.x 是内网地址)。通过 proxy_redirect 配置 http://$host 后,重定向地址会被替换为 http://代理服务器域名或 IP/login,确保客户端能正确访问代理后的地址。
对应的NGINX代码块为:
server {
listen 80;
server_name your-proxy-domain.com; # 代理服务器域名或 IP
location / {
proxy_pass http:// x.x.x.x:xxx ; # 转发至后端服务器
proxy_redirect http:// x.x.x.x:xxx http://$host; # 重写重定向地址
# 其他常用配置(如请求头设置)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
对应的雷池配置为:
后续此类情况可以通过配置之后查看公网IP是否可以访问该服务器。
因为该服务器配置了重定向,公网IP访问其域名之后,网址会突然变成内网IP、再有此类情况即可进行配置