Nginx 代理路径返回原始 url

Nginx 代理路径返回原始 url

Nginx 为几个网站充当代理。其中一个网站重定向到 SSO 登录,返回 URL 显示的为原始域,而不是代理域。

会议:

location /demo/web1 {
proxy_pass https://website1.net/web1/index.html;
proxy_redirect default;
proxy_redirect https://website1.net/web1/index.html https://proxywebsites.com/demo/web1;
}

location /demo/monitor {
proxy_pass https://monitorwebsite.net/monitor;
proxy_redirect default;
proxy_redirect https://monitorwebsite.net/monitor https://proxywebsites.com/demo/monitor;
}

location /Home/SignIn {
proxy_pass https://thirdWebsite.net/Home/SignIn;
proxy_redirect default;
proxy_redirect https://thirdWebsite.net/Home/SignIn https://proxywebsites.com/Home/SignIn;
}

它是如何工作的?当您加载 /demo/monitor 时,您将被重定向到 /Home/SignIn,然后您将从那里重定向到 SSO 网站,例如http://sso.com?id=blalba。问题是它使用“returnUrl”参数进​​行重定向,并且该参数中的返回 URL 不是代理,而是原点。例如: http://sso.com?id=blalba&ReturnUrl=monitorwebsite.net/monitor并且应该http://sso.com?id=blalba&ReturnUrl=proxywebsites.com/demo/monitor

答案1

nginx 似乎仅支持使用proxy_redirect指令重写规范化的 URI。因此无法更改Location:应用程序返回的标头中的任何查询参数。

因此,唯一的解决方案就是更改您的应用程序。

相关内容