Re: https upstream server и локальный backup http upstream

Fedor Dikarev fe на hamilton.rinet.ru
Сб Дек 16 16:28:10 UTC 2017


Попробовал этот вариант, и без error_page он не переключается на local.
Но если вписать error_page внутрь if-а, то вроде как работает как нужно.
Осталось убедить самого себя, что без if-а тут не обойтись. Хотя и очень
хочется.

16.12.17 15:21, Aziz Rozyev пишет:
> а вариант с 2 апстримами не подходит?
> 
> upstream remote_up {
>     remote_upstream:443;
> }
> 
> upstream local_up {
>     localhost:7070;
> }
> 
> map $http_x_some_header $remote {
>   “”        0;
>   “default” 1;
> }
> 
> if ($remote) {
>   proxy_pass https://remote;
> }
> proxy_pass http://local;
> 
> 
> br,
> Aziz.
> 
> 
> 
> 
> 
>> On 16 Dec 2017, at 12:50, Fedor Dikarev <fe на hamilton.rinet.ru> wrote:
>>
>> Привет!
>>
>> Я тут пытаюсь навести красоту в одном конфиге Nginx-а и что-то пока
>> совсем беда :-(
>>
>> Формулировка, правда, изначально довольно извращенная:
>> есть Nginx, по-умолчанию проксирует запрос в локально работающую node.
>> Но если в запросе есть заголовок X-Some-Header, то запрос
>> нужно спроксировать на другой сервер по https.
>> Второе но: если этот прокси недоступен/не ответил/просто 500-тит, то
>> сделать fallback опять на локальную node.
>>
>> первая мысль была:
>> map $http_x_some_header $use_backend {
>>  "" http://localhost:7070;
>>  default https://remote_upstream;
>> }
>> upstream remote_upstream {
>>  server remote:443;
>>  server localhost:7070 backup;
>> }
>>
>> но локальный сервер не https, и все не очень красиво :-(
>> думал тут еще поднять на этом же nginx локальный https на порту 7073,
>> проксировать в него как backup, но тут начинаются сложности с
>> сертификатами.
>>
>> Опять же думал о другом варианте:
>> proxy_pass $use_backend;
>> error_page 500 502 504 = @fallback_local_node;
>>
>> location @fallback_local_node {
>>  internal;
>>  proxy_pass http://localhost:7070;
>> }
>>
>> но тут получается что если заголовка не было, node ответил 502, то мы
>> пойдем в node еще раз. Не то, чтобы прям ужас, но некрасиво
>> получается...
>>
>> Может кто подскажет тут красивое решение?
>>
>> Ну и как feature request: может можно добавить к опции backup для
>> директивы server в upstream еще какой-нибудь параметр backup_proto=http
>> или другую опцию backup_http, чтобы при переключении на backup сервер
>> менялся и протокол обращения.
>> -- 
>> Fedor Dikarev
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru на nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
> 

-- 
Fedor Dikarev


Подробная информация о списке рассылки nginx-ru