NGINX反向代理与第三方应用程序

时间:2018-06-15 14:52:18

标签: nginx

我正在使用带有几个第三方应用程序的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用于多个应用程序,我相信每个应用程序都需要自己的位置。无论如何要解决这个问题吗?

1 个答案:

答案 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/";
}