Двойное проксирование - теряется протокол

S
На сайте с 23.05.2004
Offline
316
538

В наличии nginx и 2 сервера. Оба первый сервер проксирует на второй,  второй уже на внутренние ресурсы. 

Проксирование происходит путем конструкции:

    location / {
    include proxy_params;
    proxy_pass http://192.168.50.101:80;

  }

Где в инклуде есть стандартное 

proxy_set_header X-Forwarded-Proto $scheme;

Проблема в том, обращаясь на основной сервер по https , до реальных серверов доезжает http . Т.е. X-Forwarded-Proto не передается по цепочке, а берется от предъидущего запроса .   Собственно вопрос, можно ли по цепи прокси передать начальный протокол, по которому обратился пользователь. 

Это просто подпись.
L
На сайте с 10.02.2015
Offline
224
#1

Как-то так:

proxy_set_header X-Forwarded-Proto $http_bla_bla_bla;

bla_bla_bla заменить на то, как X-Forwarded-Proto фигурирует в запросе

S
На сайте с 23.05.2004
Offline
316
#2
livetv #:
bla_bla_bla заменить на то, как X-Forwarded-Proto фигурирует в запросе

Ничего не понял.  Если имеется ввиду ручное подставление http https - то не катит, обращаться могут по разному. 

M
На сайте с 17.09.2016
Offline
126
#3
proxy_pass http://192.168.50.101:80;

Второй nginx будет в $scheme видеть http

На втором nginx  X-Forwarded-Proto нужно не $scheme передавать, а  $http_x_forwarded_proto

S
На сайте с 23.05.2004
Offline
316
#4
Mobiaaa #:

Второй nginx будет в $scheme видеть http

На втором nginx  X-Forwarded-Proto нужно не $scheme передавать, а  $http_x_forwarded_proto

Спасибо, все действительно просто. 

А то я уже начал строить схему через map брать заголовки, присваивать в переменную, передавать другим заголовком.

L
На сайте с 10.02.2015
Offline
224
#5
Stek #:

Ничего не понял.  Если имеется ввиду ручное подставление http https - то не катит, обращаться могут по разному. 

Теперь поняли?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий