Ste*_*HHH 6 nginx reverse-proxy
我的 LAN 上有一个带有 URL 的 Web 服务器https://10.0.0.22,我正在尝试通过 nginx 反向代理从 Internet 访问它,URL 类似于https://domain.com/my/web/app.
我遇到的困难是本地服务器将 302 重定向发送到/login.php,然后 nginx 将其传回外部客户端的浏览器,https://domain.com/login.php而不是https://domain.com/my/web/app/login.php. 这会导致 404 错误,因为https://domain.com/login.php.
我曾尝试,但收效甚微许多不同的选项,其中包括广泛的rewrite,proxy_redirect和proxy_buffering指令,但是这是接近我可以得到它:
location ^~ /my/web/app/
{
proxy_buffering off;
rewrite /my/web/app/(.*) /$1 break;
proxy_pass https://10.0.0.22/;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法配置 nginx 以便内部 Web 服务器的 302 重定向到 /login.php外部显示为/my/web/app/login.php?
在对指令的不同组合和顺序进行持续调查和测试proxy_redirect后,在proxy_pass指令之后添加似乎解决了 URI 转换问题:
proxy_redirect https://10.0.0.22/ https://domain.com/my/web/app/;
Run Code Online (Sandbox Code Playgroud)
经过一些修补之后,似乎设置proxy_redirect为default隐含地做同样的事情:
proxy_redirect default;
Run Code Online (Sandbox Code Playgroud)
完整的位置块看起来像这样:
location ^~ /my/web/app/
{
proxy_buffering off;
rewrite /my/web/app/(.*) /$1 break;
proxy_pass https://10.0.0.22/;
#proxy_redirect https://10.0.0.22/ https://domain.com/my/web/app/;
proxy_redirect default;
}
Run Code Online (Sandbox Code Playgroud)
但是,图像仍然损坏,因为它们指向/images本地服务器。我不知道如何让nginx的翻译者(因为它们嵌入在HTML体),但要解决这个问题,现在,我可以添加一个专用location块/images 之前的位置块/my/web/app,像这样:
location ^~ /images/
{
proxy_pass https://10.0.0.22/images/;
proxy_redirect default;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23001 次 |
| 最近记录: |