gpt4 book ai didi

静态文件上的 Nginx 反向代理 404

转载 作者:行者123 更新时间:2023-12-04 15:19:59 24 4
gpt4 key购买 nike

我希望将一个 url/路径反向代理到端点上的不同端口,这些端口代表托管自己的 Web 应用程序的不同服务器。

我有 proxy_pass 工作,但静态文件失败,因为资源是相对于它们的实例。

我有例如 - server_name = myproxy.com:

location /app1/{
proxy_pass: http://192.168.1.1:8080/;
proxy_set_header Host 192.168.1.1;
}
location /app2/{
proxy_pass: http://192.168.1.1:8081/;
proxy_set_header Host 192.168.1.2;
}
location /{
proxy_pass: http://192.168.1.1:8080/;
proxy_set_header Host 192.168.1.1;
}

如上所述,反向代理工作得很好,除了与 app2 关联的静态文件。 App1 静态文件工作正常,但 App2 静态文件导致 404。这是有道理的,因为 App1 资源文件位于 /assets/app1.css这是有效的,因为我有一个位置重定向 /解决回 App1 但 App2 资源文件的地方,它们完全不同 /assets/app2.css结果是404。

那么,有没有办法从 /assets/app2.css 重写 App2 静态请求?到他们各自的代理位置?就像是:
location /app1/{
proxy_pass: http://192.168.1.1:8080/;
proxy_set_header Host 192.168.1.1;
}
location /app2/{
proxy_pass: http://192.168.1.1:8081/;
proxy_set_header Host 192.168.1.2;

*rewrite app2 static urls frome /assets/* to /app2/assets/*
}
location /{
proxy_pass: http://192.168.1.1:8080/;
proxy_set_header Host 192.168.1.1;
}

最佳答案

当一个文件/assets/app1.css (App1) 按来自 location /app1/ 的规则加载然后加载为 /assets/app1.css根据 location / 的规则. App2 具有相同的行为,但您 location /是为 App1 配置的,而不是为 App2 配置的。

您的配置必须是:

location /app1/ {
proxy_pass: http://192.168.1.1:8080/app1/;
}

location /app2/ {
proxy_pass: http://192.168.1.1:8081/app1/;
}

必填 : 别名 app1 在代理服务器和上游服务器上应该是相同的。在上游服务器上,它可能是原始 webroot 应用程序的符号链接(symbolic link)。

或者您可以使用不同的子域或端口....
server_name app1.localhost;
location / {
proxy_pass: http://192.168.1.1:8081/;
}

附言

我通过代理探索了许多使用 nginx 配置的操作。 Nginx 在一条规则下不能正常工作:
location /app1/ {
proxy_pass: http://192.168.1.1:8080/;
}

例如:
css 和 js 文件将被加载
- proxy_server/css ...- proxy_server/js ...
来自请求 proxy_server/app1/index.html你会得到404。

您可以添加 location /css/规则来配置。但是你的 app2 也可以使用这个位置。而且您无法检测到上游服务器由他代理。您可以使用 reffer 来检测上游
 server {
listen 80;

if ($uri ~ app1/) {
break;
}

if ($http_referer ~ app1/ ) {
rewrite (.*) /app1/$1 redirect;
}

location /app1/ {
proxy_pass http://192.168.1.1:8080/;
}
}

但 POST 数据将在重定向后被销毁。

如果只需要按位置调整代理服务器的配置,那就太好了。但这是一个梦想。

关于静态文件上的 Nginx 反向代理 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36849456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com