Назад | Перейти на главную страницу

RemoteIpValve не выполняет свою работу

У меня есть несколько серверов Tomcat за балансировщиком нагрузки NetScaler, который выполняет разгрузку SSL. я добавил следующую строку в server.xml для всех из них:

     <Valve className="org.apache.catalina.valves.RemoteIpValve"
            remoteIpHeader="x-forwarded-for" protocolHeader="x-forwarded-proto" />

это работает на всех серверах, кроме двух (идентичных). Я пытаюсь заставить его работать с этими двумя.

я понюхал трафик, и он содержит x-forwarded-proto заголовок со значением https, как этому следовало быть. возвращенный результат для request.getHeader("x-forwarded-proto") является https. тем не мение, request.getScheme() возвращается http и request.isSecure() возвращается false.

как я могу заставить работать remoteIpValve?

Спасибо.

Какой удаленный IP-адрес балансировщика нагрузки?

IP-адрес подключаемого устройства (в данном случае балансировщика нагрузки) должен быть в internalProxies конфигурации, в противном случае преобразования в удаленный адрес, схему, порт и безопасность запроса не применяются.

По умолчанию разрешены localhost и большинство диапазонов RFC1918 (кроме 172.16 / 12). Если IP-адрес вашего прокси-сервера при подключении к серверу tomcat не находится в одном из этих диапазонов, вам необходимо настроить internalProxies настройка, чтобы разрешить балансировщик нагрузки.