我正在使用带有几个第三方应用程序的NGINX。当第三方应用引用具有绝对路径的资源或链接时,我遇到了问题。如果我拥有该应用程序,我将能够更改路径以包含每个应用程序的nginx位置,但由于我无法修改第三方应用程序,我正在查看loeschet
文件以获取答案。 / p>
nginx.conf
nginx.conf
现在在App1和App2中他们引用了这样的资源:
location /app1/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:8001;
}
location /app2/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:8002;
}
这会导致浏览器在
中查找文件<img src='/images/app1_image.xyz'>
而不是
http://domainname.com/images/app1_image.xyz
如果我有一个应用程序,我可以将位置设置为http://domainname.com/app1/images/app1_image.xyz
,但由于我将nginx用于多个应用程序,我相信每个应用程序都需要自己的位置。无论如何要解决这个问题吗?
答案 0 :(得分:0)
我能够通过使用sub_filter
来解决这个问题。这修复了每个应用的html页面中的所有引用。
location /app1/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:8001;
sub_filter_once off;
sub_filter 'href="/' 'href="/app1/';
sub_filter "href='/" "href='/app1/";
sub_filter 'src="/' 'src="/app1/';
sub_filter "src='/" "src='/app1/";
}
location /app2/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:8002;
sub_filter_once off;
sub_filter 'href="/' 'href="/app2/';
sub_filter "href='/" "href='/app2/";
sub_filter 'src="/' 'src="/app2/';
sub_filter "src='/" "src='/app2/";
}