У меня есть обратный прокси-сервер IIS, настроенный на моем устройстве для разработки, чтобы проверить, как мое приложение обрабатывает запросы, прошедшие разгрузку SSL.
Моему приложению необходимо воссоздать исходный запрос, добавить некоторые параметры строки запроса и отправить его обратно клиенту. По умолчанию IIS / ARR / URL-rewrite не добавляет стандартные заголовки «X-Forwarded-Host» и «X-Forwarded-Proto». Вместо этого самые близкие вещи, которые я могу найти, - это «X-ARR-SSL» и «X-Forwarded-For».
Я счастлив разобрать исходный IP-адрес из "X-Forwarded-For", но когда я смотрю на порт, это не имеет никакого смысла. Мой обратный прокси-сервер SSL настроен на прослушивание порта SSL по умолчанию (443), но в заголовке указан порт 52585.
Мой вопрос: знает ли кто-нибудь, как определить целевой порт исходного запроса является? Я хочу, чтобы мое приложение могло надежно обрабатывать запросы, проксируемые IIS, но похоже, что мне придется угадывать порт в зависимости от того, является ли запрос HTTP или HTTPS.
Номер порта, устанавливаемый IIS в заголовке x-Forwarded-For, отличается от первоначально заданного порта.
Ответы (1)
X-Forwarded-For
не имеет ничего общего с сервером. Это IP-адрес клиента. Он добавляется к заголовкам запроса, чтобы веб-сервер мог идентифицировать настоящего клиента, а не обратный прокси. Другие упомянутые вами заголовки были стандартами де-факто, которые теперь заменены RFC 7239. Согласно RFC, номер порта будет включен в раздел хоста заголовка Forwarded
следующим образом:
Forwarded: for=192.0.2.60;proto=http;host=example.com:888;by=203.0.113.43
Я подозреваю, что некоторые обратные прокси-серверы добавляют номер порта как часть заголовка X-Forwarded-Host
после двоеточия, как если бы он был в заголовке Host
, но поскольку это не определенный стандартный заголовок, вы просто нужно попробовать это с вашим обратным прокси, чтобы увидеть.
См. Также: Что такое полная спецификация X -Forwarded-Proto HTTP-заголовок?
Forwarded
по умолчанию при работе в качестве прокси.
- person nashyura; 20.03.2015
https://site/myapp.aspx
, может прийти в мое приложение со строкой URL-адреса, имеющей вид svrBehindFirewall: 45 / myapp .aspx. Если я хочу отправить обратно URL-адрес, который ссылается на мой сайт, мне нужно будет знать, каков был исходный протокол (https), исходное имя сервера и каков был исходный целевой порт (вероятно, 443).
- person nashyura; 20.03.2015
http://serverBehindFirewall:95/myapp.aspx?page=2
, то запрос этого URL-адреса клиентом никогда не достигнет моего приложения.
- person nashyura; 20.03.2015
X-Forwarded-For
. Так определяется новая спецификация для заголовка Forwarded
. Если разработчик кода для X-Forwarded-Host
в вашем обратном прокси-сервере решил реализовать этот заголовок так же, как и в новой спецификации, то номер порта будет именно там. Многие обратные прокси-серверы являются программируемыми и позволяют администратору указать, какие заголовки с какими значениями вставлять, и в этом случае вы можете сделать это самостоятельно.
- person James; 20.03.2015
X-Forwarded-For
. По какой-то безумной причине я понял, что заголовок X-Forwarded-For
содержит целевой IP-адрес исходного запроса (хотя вы и вики четко заявили об обратном).
- person nashyura; 20.03.2015