这是我早先有关如何使nginx反向代理302重定向到URI子文件夹而不是root的问题的后续内容。
我有一个Nginx代理服务器,该服务器使用rewrite
和proxy_pass
指令将外部请求代理到URL,就像https://domain.com/my/web/app/
位于的内部LAN服务器一样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) <-------|
这是我的nginx配置文件中的实际位置块:
location ^~ /my/web/app/
{
proxy_buffering off;
rewrite /my/web/app/(.*) /$1 break;
proxy_pass https://10.0.0.22/;
proxy_redirect default;
}
它非常适合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内容通过代理服务器时,是否可以动态解析和更新HTML内容?
2
您找到解决方案了吗?如果可以,您可以将其发布为答案吗?
—
惠更斯2014年