Не передаются заголовки при SSL

Andrew Kopeyko kaa at zvuki.ru
Thu Oct 22 18:33:49 MSD 2009


On Thu, 22 Oct 2009, dim-dim77 wrote:

> Добрый день
>
> nginx/0.8.17
>
> Есть конструкция:
>
> server {
...
>        ssl on;
...
>        proxy_set_header Host $host;
>        proxy_set_header X-Real-IP $remote_addr;
>        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>        proxy_set_header SSL_VERIFY $ssl_client_verify;
...
>        location / {
>                proxy_pass http://127.0.0.1/;
>        }
> }
>
> Так вот, если я захожу на сервер через прокси-сервер, то на бэкенд не 
> передается заголовок Via, а в заголовке X-Forwarded-For записан только 
> IP адрес прокси-сервера.
>
> Если же поставить "ssl off", то на бэкэнд нормально передается заголовок 
> Via, а в X-Forwarded-For записан и IP прокси-сервера, и IP клиента.

Предположу, что когда вы "ставите "ssl off"", вы ещё и в адресной строке 
схему меняете с 'https' на 'http'. Так ведь?

В таком случае ваш прокси-сервер будет добавлять заголовки "Via: " и 
"X-Forwarded-For: " в запрос к серверу - потому что "видит" открытый текст 
http-запроса.

Когда же вы заходите на https-enabled сервер прокси-сервер, то ваш 
прокси-сервер не видит никаких http-запросов\ответов - он только выполняет 
просьбу клиента соединить его с сервером напрямую, прозрачным 
TCP-туннелем, внутри которого браузер и сервер строят защищённое по 
протоколу SSL соединение.

Соответственно, с точки зрения https-сервера к нему пришёл прямой (без 
прокси) клиент с ip-адреса прокси - о чём он и уведомляет бэкенд 
выставлением заголовка "X-Forwarded-For: <IP адрес прокси-сервера>"
А IP-адреса конечного клиента - сервер в такой ситуации не знает.


-- 
Best regards,
Andrew Kopeyko <kaa at zvuki.ru>






More information about the nginx-ru mailing list