雷池重定向功能介绍

54 阅读1分钟

我司需要发布对外映射。相对于普通应用,直接返回系统资源,该系统使用了重定向,重定向地址为内网地址。

普通映射: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、再有此类情况即可进行配置