反向代理应用程序及其与Nginx的静态文件

我试图做一些在我看来非常简单的事情,但是我一定是愚蠢的或者错过了一些非常明显的事情,因为我无法弄清楚。

我想访问运行在我的服务器上的多个Web应用程序,每个应用程序都有一个唯一的前缀:

http://mywebserver/app1 -> localhost:9001 http://mywebserver/app2 -> localhost:9002 ... 

根据我的理解,我需要将Nginxconfiguration为反向代理,所以我这样做了:

 server { listen 80; server_name mywebserver; location /app1{ proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:9001/; } ... } 

这个configuration允许我通过http://mywebserver/app1访问应用程序的主页,但是没有加载静态内容

当我打开我的浏览器的控制台时,我可以看到它试图从http://mywebserver/static/custom/index.js获取资源,而不是像http://mywebserver/app1/static/custom/index.js

我试图在位置块中添加一个root指令来提供静态,但是由于静态内容请求是在/而不是在/app1上进行的,所以它不被考虑。

如何解决这个问题? 是否有什么明显的我失踪或我完全误解了反向代理的概念?

谢谢。

从@sikian的build议做了诡计,我把位置声明从location /app1 { ... }更改为location /app1/ { ... }

静态文件在控制台中没有错误,应用程序似乎完全正常工作。