Конфигурация Linode NodeBalancers Tomcat для захвата IP-адреса клиента (x-forwarded-for)

Я использую Linode NodeBalancers для балансировки нагрузки на моих 2 серверах tomcat (для обслуживания https-запроса), одним из наших бизнес-требований является возможность захвата ClientIP для снятия отпечатков пальцев + другой цели.

Тем не менее, я не могу заставить NodeBalancers передавать IP-адрес клиента через x-forwarded-for, поддержка Linode также не знает, как это сделать в Tomcat Configuration?

Вот часть моей конфигурации Tomcat (server.xml)

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           keystoreFile="myKeyStore" 
           keystorePass="myKeyStorePassword"
           compression="on"
           compressableMimeType="text/html,text/xml,text/css,text/javascript"
           compressionMinSize="1024"
             maxPostSize="5097152"
           clientAuth="false" sslProtocol="TLS" />
  <Valve className="org.apache.catalina.valves.RemoteIpValve"
       remoteIpHeader="x-forwarded-for"
       protocolHeader="x-forwarded-proto"
       protocolHeaderHttpsValue="https"
  />

1 ответ

Похоже, что ваша конфигурация заголовка в порядке, однако следует обратить внимание на три момента:

  • Атрибут trustProxies должен доверять балансировщикам нагрузки. По умолчанию сюда входят все частные адреса, кроме тех, которые находятся в диапазоне 172.16/12.
  • Если вы используете клапан регистрации доступа Tomcat, убедитесь, что вы используете requestAttributesEnabled на клапане. Регистрация ведется асинхронно, и RemoteIpValve сбрасывает исходные значения, когда элемент управления возвращается к нему, однако атрибуты запроса не изменяются
  • Если вы разгружаете HTTPS, имейте в виду, что перенаправления с foo на foo / происходят в соединителе, прежде чем клапан сможет сделать свое дело. Возможно, вам также понадобится установить схему и proxyPort на соединителе, иначе вы сможете получить выгодные местоположения за 302 секунды.

Документация по клапанам довольно хорошая, но все три из них недавно застали меня врасплох (документы здесь http://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/valves/RemoteIpValve.html).

Другие вопросы по тегам