Nginx proxy pass

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску

Nginx proxy_pass

Файлы
location proxy_pass Пример конфигурации Request Received by upstream

/test_links

/new_location

location /test_links {
    proxy_pass https://noname.com.ua/new_location;
}
  • /test_links?foo=bar
  • /test_links/baz?foo=bar
  • /new_location?foo=bar
  • /new_location/baz?foo=bar



/test_links/

/new_location

location /test_links/ {
    proxy_pass https://noname.com.ua/new_location;
}
  • /test_links?foo=bar
  • /test_links/baz?foo=bar
  • /new_location?foo=bar
  • /new_locationbaz?foo=bar HTTP/1.0"





/test_links

/new_location/

location /test_links {
    proxy_pass https://noname.com.ua/new_location/;
}
  • /test_links?foo=bar
  • /test_links/baz?foo=bar
  • /new_location/?foo=bar HTTP/1.0
  • /new_location//baz?foo=bar




/test_links/

/new_location/

location /test_links {
    proxy_pass https://noname.com.ua/new_location/;
}
  • /test_links?foo=bar
  • /test_links/baz?foo=bar
  • "POST /new_location?foo=bar
  • POST /new_location/baz?foo=bar

Однако все это хорошо но не работает с переменными, точнее работает не так как ожидалось (мной)

Переменные

Пример правильного конфига

    location /test_links {
        set $test_links_destination_location    new_location; # без слеша вначале что бы удобнее было читать следующую переменную $test_link_proxy_pass
        set $test_link_proxy_pass               https://$app_backend_host/$test_links_destination_location$is_args$args;

        proxy_pass  $test_link_proxy_pass;
        access_log  /var/log/nginx/location-access.log-ssl;
        error_log   /var/log/nginx/location-error.log-ssl;
        access_log  /var/log/nginx/location-debug-access.log-ssl debug;
    }

Ключевой момент тут https://$app_backend_host/$test_links_destination_location$is_args$args;

  • Ожидаемо должно работать https://$app_backend_host/$test_links_destination_location но нет - теряются аргументы запроса
  • $is_args содержит знак ? или пустую строку если нет аргументов
  • $args содержит аргументы запроса


DNS