Welcome! Log In Create A New Profile

Advanced

Как правильно проксировать переменные $https и $scheme

August 28, 2014 06:58AM
Здравствуйте!
Я не нашёл полного ответа на свой вопрос, по этому я задам его здесь.

Суть проблемы с которой я столкнулся:
Есть балансер на основе nginx, который проксирует http и https соединения
на backend сервера (то же nginx).

Вне зависимости от того пришёл ли на балансер http или https запрос я
проксирую его на бэкэнд по http.

Всё работает, но на бэкэндах я не могу определить, какой запрос пришёл на
балансер http или https. Переменная $https всегда пустая, а $scheme всегда
имеет занчение "http".

Соответственно мне нужно как то проксировать переменные $https и $scheme.

Я делаю это так:
На балансере:
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
# тут проксируем переменную $scheme
proxy_set_header X-Forwarded-Proto $scheme;

proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}

На бэкэнде:
В секцию http добавляю:
map $http_x_forwarded_proto $https {
default '';
https on;
}

map $http_x_forwarded_proto $scheme {
default http;
https https;
}

Но это не работает:
nginx: [emerg] the duplicate "https" variable in
/usr/local/etc/nginx/nginx.conf:39

Не работает видимо по тому что нельзя изменять переменные $https и $scheme.

Можно было бы сделать так:
map $http_x_forwarded_proto $fastcgi_https {
default '';
https on;
}

map $http_x_forwarded_proto $fastcgi_scheme {
default http;
https https;
}

Но я не хотел бы использовать не стандартные переменные потому что ниже в
секции location я использую переменные $https и $scheme в множестве правил
с rewrite. Не стандартные переменные создадут неудобства в случае если
конфигурация изменится.

Подскажите пожалуйста как правильно решить мою задачу?
Спасибо.
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Как правильно проксировать переменные $https и $scheme

Konstantin Osipov August 28, 2014 06:58AM

Re: Как правильно проксировать переменные $https и $scheme

Валентин Бартенев August 28, 2014 08:36AM

Re: Как правильно проксировать переменные $https и $scheme

Violator43 September 16, 2014 01:48AM

Re: Как правильно проксировать переменные $https и $scheme

Konstantin Osipov September 16, 2014 04:10AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 146
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready