我需要根据文件扩展名和查询字符串来代理传递静态资产(.js .css)。
例如:
domain.com/foo.css - 转到上游1 domain.com/foo.css?V=1234 - 转到上游2
原因是我有 3 个服务器设置 - 一个路由器、一个应用服务器和一个静态服务器。我希望任何带有干净 URL domain.com/foo.cs 的请求都转到上游 1(我的静态服务器配置的位置)。并且任何带有查询字符串 URL domain.com/foo.css?V=1234 的请求都转到上游 2(我的应用服务器配置的位置)。
也许可以使用http://wiki.nginx.org/HttpLuaModule?
谢谢!
答案1
用一个地图。
map $arg_v $node {
default upstream1;
"~^[0-9]+$" upstream2;
}
server {
listen 80;
server_name domain.com;
location ~ \.(css|js)$ {
proxy_pass http://$node;
}
}