我尝试从azure blob服务angular度的应用程序,问题是,我不能用URI和正则expression式代理。
我的configuration是:
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,因为它们位于那里。 但有了这个configuration我有例外“proxy_pass不能有URI部分…”,这意味着proxy_path不能有正则expression式的URI。 好吧,所以我把最后一句话改成:
location ~* \.(js|map|jpg|jpeg|png|ico)$ { rewrite ^ /angular$1; proxy_pass https://blob2.net; }
但仍然不起作用。
更新更改configuration
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 $“
你应该可以使用这个位置块:
location ~* (\.(?:js|map|jpe?g|png|ico)$ { proxy_pass https://blob2.net/angular/$1; }
在这里,我们将文件的文件名捕获到$1variables,然后在proxy_pass目标中使用它。
我也在正则expression式中结合了jpeg和jpg ,并通过将?:添加到expression式的开头,使得正则expression式组无法捕获。