Nginx proxy pass: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
Строка 5: | Строка 5: | ||
* https://dev.to/danielkun/nginx-everything-about-proxypass-2ona |
* https://dev.to/danielkun/nginx-everything-about-proxypass-2ona |
||
* https://www.middlewareinventory.com/blog/nginx-dynamic-ip-address-upstream-dns-cache-issue-how-to-solve/ |
* https://www.middlewareinventory.com/blog/nginx-dynamic-ip-address-upstream-dns-cache-issue-how-to-solve/ |
||
− | + | * https://my.f5.com/manage/s/article/K000134632 |
|
+ | * https://ercanermis.com/prevent-nginx-from-caching-dns-for-proxy/ |
||
=Nginx <code>proxy_pass</code>= |
=Nginx <code>proxy_pass</code>= |
||
Версия 12:58, 9 июля 2024
Это заметка о бекендах, тут все протсто но постоянно забываются детали, записано что бы подсматривать.
- https://dev.to/danielkun/nginx-everything-about-proxypass-2ona
- https://www.middlewareinventory.com/blog/nginx-dynamic-ip-address-upstream-dns-cache-issue-how-to-solve/
- https://my.f5.com/manage/s/article/K000134632
- https://ercanermis.com/prevent-nginx-from-caching-dns-for-proxy/
Nginx proxy_pass
location | proxy_pass | Пример конфигурации | Request | Received by upstream |
---|---|---|---|---|
|
|
location /test_links { proxy_pass https://noname.com.ua/new_location; } |
|
|
|
|
location /test_links/ { proxy_pass https://noname.com.ua/new_location; } |
|
|
|
|
location /test_links { proxy_pass https://noname.com.ua/new_location/; } |
|
|
|
|
location /test_links { proxy_pass https://noname.com.ua/new_location/; } |
|
|
Однако все это хорошо но не работает с переменными, точнее работает не так как ожидалось (мной)
Переменные
Пример правильного конфига
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
Использовать пересенные что бы делать резолв при запросах
server { resolver 8.8.8.8 valid=1s; ...
Или
upstream new.backend.com { resolver 192.168.1.2 valid=30s; server example.com resolve; zone http_backend 32k; }