tomcat7 + nginx ssl faz com que o loop de redirecionamento

1

Temos a seguinte configuração: vários subdomínios levam ao mesmo servidor, que está executando o nginx como um proxy para cada um deles. Todos os subdomínios são usados atualmente para testar recursos em desenvolvimento, portanto, seu conteúdo é mais ou menos idêntico.

Isto é mais ou menos como cada arquivo de configuração do site nginx se parece

server {

listen       80;
server_name  full.web.address;

location / {
    proxy_pass              http://devhost:8080;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header        Host $http_host;

    proxy_cache global;
    proxy_cache_valid  200 302  600m;
    proxy_cache_valid  404      1m;

}

location /robots.txt {
    alias   /var/www/default/robots.txt;
}

}

server {

listen       443;
server_name  full.web.address;

location / {

    proxy_pass              http://devhost:8080/;

    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header        Host $http_host;
    proxy_set_header        X-Forwarded-Proto https;

    proxy_cache global;
    proxy_cache_valid  200 302  600m;
    proxy_cache_valid  404      1m;
}

location /robots.txt {
     alias   /var/www/default/robots.txt;
}

ssl                  on;
ssl_certificate      /etc/nginx/combined.crt;
ssl_certificate_key  /etc/nginx/cert.key;
ssl_session_timeout  5m;
ssl_protocols  SSLv2 SSLv3 TLSv1;
}

devhost ou o que quer que seja, é definido em / etc / hosts por um script na reinicialização. Nós temos três servidores Tomcat 7 rodando agora e em todos os seus arquivos web.xml nós temos o seguinte:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Confidential resources</web-resource-name>
        <url-pattern>/manager/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>
            CONFIDENTIAL
        </transport-guarantee>
    </user-data-constraint>
</security-constraint>

Todo servidor.xml tem o mesmo:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           URIEncoding="UTF-8" />

<Engine name="Catalina" defaultHost="full.web.address">


  <Realm className="org.apache.catalina.realm.LockOutRealm">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase"/>
  </Realm>

  <Host name="full.web.address"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">
    <Valve className="org.apache.catalina.valves.RemoteIpValve"
       remoteIpHeader="x-forwarded-for"
       remoteIpProxiesHeader="x-forwarded-by"
       protocolHeader="x-forwarded-proto"
    />
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

  </Host>
</Engine>

Eles também usam o mesmo arquivo WAR. Eu realmente copiei tudo e mudei apenas os nomes e endereços IP. O problema é que em um deles ele vai para link sem nenhum problema, nos outros ele vai em um loop de redirecionamento infinito para em si. As configurações e o conteúdo são idênticos.

    
por coladict 15.07.2014 / 16:29

2 respostas

0

Novo dia, novas ideias. Verifiquei a documentação da Valve da Tomcat e forneci a resposta no link em internalProxies:

By default, 10/8, 192.168/16, 169.254/16 and 127/8 are allowed ; 172.16/12 has not been enabled by default because it is complex to describe with regular expressions

O servidor que não estava funcionando estava no subgrupo 172.16 / 12, porque está em um contêiner Docker. Uma vez que é inacessível fora com a porta não sendo encaminhada, era seguro definir internalProxies=". *"

    
por 16.07.2014 / 11:11
0

A frase "172.16 / 12 não foi ativada por padrão porque é complexa para descrever com expressões regulares" me fez estremecer quando a li pela primeira vez. De qualquer forma, você pode copiar o regexp da documentação do Tomcat 8 para RemoteIpValve . Aqui está um exemplo completo:

      <Valve className="org.apache.catalina.valves.RemoteIpValve"
         internalProxies="10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}| 169\.254\.\d{1,3}\.\d{1,3}|127\.\d{1,3}\.\d{1,3}\.\d{1,3}| 172\.1[6-9]{1}\.\d{1,3}\.\d{1,3}|172\.2[0-9]{1}\.\d{1,3}\.\d{1,3}| 172\.3[0-1]{1}\.\d{1,3}\.\d{1,3}"
         protocolHeader="X-Forwarded-Proto" />

Talvez você possa incorporá-lo em sua resposta?

    
por 29.05.2015 / 18:38