Problema com o GWT por trás de um proxy reverso - nginx ou apache

2

Eu originalmente fiz esta pergunta sobre SO , mas talvez SF seja um lugar melhor para a tração nessa questão.

Estou tendo este problema com o GWT quando ele está por trás de um proxy reverso. O aplicativo de backend é implantado dentro de um contexto - vamos chamá-lo / contexto.

O aplicativo GWT funciona bem quando eu o clico diretamente:

link

Eu posso configurar um proxy reverso na frente dele. Aqui está o meu exemplo nginx:

upstream backend {
    server 127.0.0.1:8080;
}

...

location / {
   proxy_pass        http://backend/context/;
}

Mas, quando percorro o proxy reverso, o GWT fica confuso, dizendo:

2009-10-04 14:05:41.140:/:WARN:  Login: ERROR: The serialization policy file '/C7F5ECA5E3C10B453290DE47D3BE0F0E.gwt.rpc' was not found; did you forget to include it in this deployment?
2009-10-04 14:05:41.140:/:WARN:  Login: WARNING: Failed to get the SerializationPolicy 'C7F5ECA5E3C10B453290DE47D3BE0F0E' for module 'https://hostname:444/'; a legacy, 1.3.3 compatible, serialization policy will be used.  You may experience SerializationExceptions as a result.
2009-10-04 14:05:41.292:/:WARN:  StoryService: ERROR: The serialization policy file '/0445C2D48AEF2FB8CB70C4D4A7849D88.gwt.rpc' was not found; did you forget to include it in this deployment?
2009-10-04 14:05:41.292:/:WARN:  StoryService: WARNING: Failed to get the SerializationPolicy '0445C2D48AEF2FB8CB70C4D4A7849D88' for module 'https://hostname:444/'; a legacy, 1.3.3 compatible, serialization policy will be used.  You may experience SerializationExceptions as a result.

Em outras palavras, o GWT não está recebendo a palavra que precisa para prefixar / context / e, em seguida, procurar por C7F5ECA5E3C10B453290DE47D3BE0F0E.gwt.rpc, mas somente quando a solicitação vier através do proxy. Uma solução alternativa é adicionar o contexto ao URL do site:

location /context/ {
    proxy_pass        http://backend/context/;
}

mas isso significa que o contexto agora faz parte da URL que o usuário vê, e isso é feio.

Alguém sabe como tornar o GWT feliz nesse caso?

Versões de software:
GWT - 1.7.0 (mesmo problema com 1.7.1)
Jetty - 6.1.21 (mas o mesmo problema existia em tomcat)
nginx - 0.7.62 (mesmo problema no apache 2.x)

Minha suspeita é que talvez o GWT esteja captando o cabeçalho Referer e ficando confuso (existe uma maneira de o nginx desligar esse cabeçalho?) ou que haja uma diferença, pois o tráfego entre o proxy e o GWT / Jetty é HTTP / 1.0 em vez de HTTP / 1.1.

    
por Don Branson 09.10.2009 / 22:57

1 resposta

1

Eu acho que você deveria

location /context/ {
    proxy_pass        http://backend/context/;
}

e, em seguida, use a reescrita para separar / parte do contexto da URL

    
por 13.10.2009 / 19:49