我在同一台服务器上有两个应用程序(Mojolicious)。我使用 nginx 根据传入的 URL 将请求路由到每个应用程序。应用程序 A 被调用以
http://1.2.3.4/A/...
开头的 url,与应用程序 B 类似。
这两个应用程序都是交互式的,例如单击我想通过 XHR POST 到同一服务器的按钮。除了 XHR 请求之外,我还有 CSS 和 JS 文件。
我知道如何在 nginx 级别删除“A”和“B”,例如
location ~ ^/A(.*)$ {
proxy_pass http://127.0.0.1:3000$1;
...
}
但是当我这样做时,显然 XHR 请求不起作用,因为它们返回到 nginx 时没有“A”或“B”。
我是否必须对每个应用程序中提到的每个网址中的“A”和“B”进行硬编码? 我必须说“/A/css/my.css”和“/B/css/my.css”吗?
我正在寻找一种方法,从每个应用程序中删除“A”和“B”,以实现便携性和简单性。
我也有点困惑。
魔力:
(e.g., App A)
get '/css/:file' => sub {
my $c = shift;
my $file = $c->param('file');
# Remove the "A" prefix from URL
$file =~ s{^A/}{};
$c->reply->static("public/css/$file");
};
ngix:
location /A {
rewrite ^/A(.*) /$1 break;
proxy_pass http://127.0.0.1:3000;
}