Nginx proxy_pass на основе расширения файла и строки запроса
Мне нужно proxy_pass статические активы (.js .css) на основе расширения файла и строки запроса.
Например:
domain.com/foo.css - перейти на upstream1 domain.com/foo.css?V=1234 - перейти на upstream2
Причина в том, что у меня есть 3 настройки сервера - маршрутизатор, сервер приложений и статический сервер. Я хотел бы, чтобы любой запрос с чистым url domain.com/foo.cs перешел на upstream1 (где настроен мой статический сервер). И любой запрос, имеющий строку запроса url domain.com/foo.css?V=1234, чтобы перейти к upstream2 (где настроен мой сервер приложений).
Может быть, это можно сделать с помощью 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;
}
}