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

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 100: Строка 100:
 
Однако все это хорошо но не работает с переменными, точнее работает не так как ожидалось (мной)
 
Однако все это хорошо но не работает с переменными, точнее работает не так как ожидалось (мной)
 
=Переменные=
 
=Переменные=
  +
  +
Пример правильного конфига
  +
<PRE>
  +
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;
  +
}
  +
</PRE>
  +
Ключевой момент тут <code>https://$app_backend_host/$test_links_destination_location$is_args$args;</code>
  +
* Ожидаемо должно работать <code>https://$app_backend_host/$test_links_destination_location</code> но нет - теряются аргументы запроса
  +
* <code>$is_args</code> содержит знак <code>?</code> или пустую строку если нет аргументов
  +
* <code>$args</code> содержит аргументы запроса
  +
  +
  +
=DNS=

Версия 10:31, 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