MyTetra Share
Делитесь знаниями!
Сохранить GET-параметры в proxy_pass с переменными в NGINX
30.11.2018
16:28
Автор: br0ke
Текстовые метки: nginx, proxy, pass, proxy_pass, variable, var, url, uri, args, argument, arguments, is_args, get, query, parameter, parameters, param, params
Раздел: Информационные технологии - Linux - nginx

Если в директиве proxy_pass использовать переменные, то NGINX не сможет сконструировать/пересобрать целевой URL и, например, утратит аргументы (обрежет ?arg1=value&arg2=value и не вернет на место). В таких случаях придётся указать NGINX как сконструировать URL.


Если нужно только сменить хост и отправить тот же самый запрос, то можно обойтись таким способом:


location /service/ {

# Note the trailing slash on the proxy_pass.

# It tells nginx to replace /service/ with / when passing the request.

proxy_pass http://apache/;

}


Если же нужно произвести какие-то манипуляции с адресом, то запрос полностью придётся конструировать вручную, например:


location ~ ^/service/(.*) {

proxy_pass http://apache/$1$is_args$args;

}


$1 -- часть адреса после /service/ и без аргументов; то, что заматчилось на (.*);

$is_args -- равна ? если в запросе были аргументы или пустой строке в противном случае;

$args -- аргументы из URL: arg1=value&arg2=value

 
MyTetra Share v.0.52
Яндекс индекс цитирования