nginx 具有多个服务,内部 (xhr) 应用程序请求的干净 url?

问题描述 投票:0回答:1

我在同一台服务器上有两个应用程序(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”,以实现便携性和简单性。

我也有点困惑。

nginx mojolicious
1个回答
0
投票

魔力:

(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;

}
© www.soinside.com 2019 - 2024. All rights reserved.