Tomcat игнорирует X-Forwarded-Proto за Apache обратным прокси - PullRequest
0 голосов
/ 10 января 2020

Мой сервер Tomcat находится за Apache обратным прокси-сервером. Кажется, что все настроено правильно, request.isSecure() возвращает false.

Apache configuration

Apache работает на том же компьютере, что и Tomcat.

ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"

клапан Tomcat (сервер. xml)

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

При дальнейшей проверке Tomcat получает заголовок X-Forwarded-Proto с https. Однако должна быть неправильная конфигурация с клапаном выше.

1 Ответ

0 голосов
/ 10 января 2020

Согласно RemoteIpValve docs , Tomcat всегда проверяет , что req.getRemoteAddr() соответствует либо internalProxies, либо trustedProxies клапана.

Make убедитесь, что этот удаленный адрес соответствует тому, который вы установили в клапане. Если прокси-сервер использует IPv6-адрес (0:0:0:0:0:0:0:1), 127.0.0.1 не будет работать.

Вместо этого не переопределяйте internalProxies, так как регулярное выражение по умолчанию работает довольно хорошо, например:

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