假设我尝试代理所有针对 jpg、png 和 mp3 文件的请求,如下所示:
http://example.com/some/url/file.png
到
http://example.net/data/some/url/file.png
请注意,这是到另一台服务器的完全相同的路径,但数据添加。
以下是我目前所拥有的:
location ~* .(jpg|png|mp3)$ {
proxy_pass https://example.net/data/;
proxy_redirect https://example.net/data/ /
}
但是我一直收到错误
"proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block
出了什么问题?我该如何正确写入这个位置块?
答案1
如果您想在正则表达式匹配位置块中将不同的 URI 传递给后端,则需要更改 URI 使用rewrite
指令(命名位置也是如此):
location ~* \.(jpe?g|png|mp3)$ {
rewrite (.*) /data$1 break;
proxy_pass https://example.net;
proxy_redirect https://example.net/data/ /
}