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

Aziz Rozyev arozyev на nginx.com
Сб Дек 16 12:21:43 UTC 2017


а вариант с 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