nginx 代理静态文件位置,用于多个 Web 应用程序,其中静态文件具有相同的相对路径

nginx 代理静态文件位置,用于多个 Web 应用程序,其中静态文件具有相同的相对路径

我已经将 nginx 设置为在 apache 服务器上运行的不同 Web 应用程序的反向代理:

/var/www/app_abc
|-static
|    |-app.js
|    |-app.css
|-index.html

/var/www/app_xyz
|-static
|     |-app.js
|     |-app.css
|-index.html

app_abc 在 apache 虚拟主机端口 8081 上运行 app_xyz 在 apache 虚拟主机端口 8082 上运行

如果访问它们,它们在 Apache 中工作正常:

curl http://localhost:8081
curl http://localhost:8082

现在我只有一个域名:real-domain.com 我无法创建子域名,例如 abc.domain.com 或 xyz.domain.com

我有这样的 nginx 配置:

默认情况下,当请求时转到 app_abc 'http://www.real-domain.com':

location / {
    proxy_pass http://localhost:8081
}

如果请求http://www.real-domain.com/xyz,转到 app_xyz

location ~ /xyz(.*) {
 rewrite ^/xyz/?(.*) /$1 break;
 proxy_pass http://localhost:8082;
}

对于静态文件

location ~ ^/static {
   try_files $uri $uri/ /var/www/app_abc/$uri /var/www/app_xyz/$uri;
}

这里唯一的问题是这些请求:

static/app.js
static/app.cs

为了 ”http://www.real-domain.com/xyz“将返回 404

但适用于“http://www.real-domain.com/

我的问题是:

如何为不同的应用程序提供静态文件,其中不同应用程序中的静态文件具有相同的相对路径?

相关内容