Nginx proxy pass: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 1: Строка 1:
 
[[Категория:nginx]]
 
[[Категория:nginx]]
 
[[Категория:Linux]]
 
[[Категория:Linux]]
  +
  +
* https://dev.to/danielkun/nginx-everything-about-proxypass-2ona
 
=Nginx <code>proxy_pass</code>=
 
=Nginx <code>proxy_pass</code>=
   
Строка 99: Строка 101:
   
 
Однако все это хорошо но не работает с переменными, точнее работает не так как ожидалось (мной)
 
Однако все это хорошо но не работает с переменными, точнее работает не так как ожидалось (мной)
  +
 
=Переменные=
 
=Переменные=
   

Версия 12:35, 9 июля 2024


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