Может proxy_pass работать с переменными? Я пытаюсь заставить работать следующую конфигурацию:
http {
...
map $http_user_agent $myvariable {
default 'mobile';
}
...
}
Конфигурация локации:
server {
listen 80;
...
location /site {
proxy_pass http://docker-site/site/$myvariable;
}
...
}
Конфигурация работает, если я заменю proxy_pass на http://docker-site/site/mobile;
Дайте мне знать, если я на правильном пути.
Эти два случая не совпадают. Если вы используете переменную, это значение заменит весь URI.
В таком случае:
location /site {
proxy_pass http://docker-site/site/mobile;
}
URI /site/foo
передается вверх по течению как /site/mobile/foo
.
Чтобы использовать вашу переменную, вы можете использовать перезапись (см. этот документ подробнее):
location /site {
rewrite ^/site(.*)$ /site/$myvariable$1 break;
proxy_pass http://docker-site;
}
Или расположение регулярного выражения:
location ~ ^/site(.*)$ {
proxy_pass http://docker-site/site/$myvariable$1;
}
Порядок оценки блоков расположения регулярных выражений имеет значение. Видеть этот документ для подробностей.