基于文件扩展名和查询字符串的Nginx proxy_pass

基于文件扩展名和查询字符串的Nginx proxy_pass

我需要根据文件扩展名和查询字符串来代理传递静态资产(.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;
    }

 }

相关内容