Nginx 代理文件来自

Nginx 代理文件来自

我尝试从 azure blob 提供 angular 应用程序,问题是我无法使用 URI 和正则表达式进行代理。

我的配置是:

 location /web {
 proxy_pass https://blob.com/web/index.html;
}

location ^~ /monitor {
 proxy_pass https://blob2.net/angular/index.html;
}

location ~* \.(js|map|jpg|jpeg|png|ico)$ {
 proxy_pass https://blob2.net/angular;
    }

JS 文件应该来自 blob2/angular,因为它们位于那里。但是使用此配置,我遇到了异常“proxy_pass 不能有 URI 部分...”,这意味着 proxy_path 不能有带正则表达式的 uri。好的,所以我将最后一条语句更改为:

  location ~* \.(js|map|jpg|jpeg|png|ico)$ {
rewrite ^ /angular$1;
proxy_pass https://blob2.net;
    }

但仍然不起作用。

更新 将配置更改为

    location ~* (\.(?:js|map|jpe?g|png|ico))$ {
 proxy_pass https://angularweb.blob.core.windows.net/angular/$1;
    }

但是现在文件是404。日志中什么都没有,只有“31.168.50.6 - - [13/Jun/2017:10:28:53 +0000]“GET /inline.bundle.js HTTP/1.1”404 216“ - ”“Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleW$”

答案1

您应该能够使用这个位置块:

location ~* (\.(?:js|map|jpe?g|png|ico)$ {
    proxy_pass https://blob2.net/angular/$1;
}

在这里,我们将文件名捕获到$1变量中,然后在proxy_pass目标中使用该变量。

我还在正则表达式中组合了jpeg和,并通过将其添加到表达式的开头jpg使正则表达式的后缀组不再被捕获。?:

相关内容