Ste*_*HHH 15 nginx reverse-proxy
这是我之前关于如何使 nginx 反向代理 302 重定向到 URI 子文件夹而不是 root 的问题的后续。
我有一个使用Nginx上的代理服务器rewrite
和proxy_pass
指令来代理外部请求的URL就像https://domain.com/my/web/app/
在一个局域网内部的服务器https://10.0.0.22/
。这是我用 ASCII UML 表示翻译的尝试:
.-------------. .------------------.
| Nginx proxy | | Local web server |
| (domain.com) | | (10.0.0.22) |
'-------------' '------------------'
| |
| |
GET https://domain.com/my/web/app/ ----------->| |
|---------------->| GET /
| |
|<----------------| 302 redirect /login.php
302 redirect /my/web/app/login.php <-----------| |
| |
GET https://domain.com/my/web/app/login.php -->| |
|---------------->| GET /login.php
| |
|<----------------| 200
HTML body content (images, CSS, links) <-------|
Run Code Online (Sandbox Code Playgroud)
这是我的 nginx 配置文件中的实际位置块:
location ^~ /my/web/app/
{
proxy_buffering off;
rewrite /my/web/app/(.*) /$1 break;
proxy_pass https://10.0.0.22/;
proxy_redirect default;
}
Run Code Online (Sandbox Code Playgroud)
它非常适用于 HTTP 请求和响应的内部和外部 URI 路径之间的 URI 转换,但不会转换 HTML 内容(正文图像、CSS、脚本)中的任何 URI。
例如,具有嵌入在 HTML 响应中的相对路径的图像(带有 /images/logo.png 之类的 URI)被传递回 Web 客户端并被解释为https://domain.com/images/logo.png
而不是https://domain.com/my/web/app/images/logo.png
。
我可以理解为什么会发生这种情况,但是如果有一种方法可以动态代理内容和请求,那就太好了。有没有办法让 nginx 也转换嵌入在 HTML 内容中的 URI?是否可以在通过代理服务器时动态解析和更新 HTML 内容?
小智 5
到目前为止,我找到的唯一解决方案是HttpSubsModule(另请参阅github 页面)。
该模块不是官方 Nginx 源代码的一部分,因此您可能需要自己构建 Nginx 才能使用该模块。
归档时间: |
|
查看次数: |
31100 次 |
最近记录: |