У меня проблема с GWT, когда она находится за обратным прокси. Бэкэнд-приложение развернуто в контексте - позвоните ему/контексту.
Приложение GWT отлично работает, когда я нахожу его прямо:
Я могу настроить обратный прокси-сервер перед этим. Вот пример nginx:
upstream backend { server 127.0.0.1:8080; } ... location / { proxy_pass http://backend/context/; }
Но когда я запускаю обратный прокси, GWT путается, говоря:
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.
Другими словами, GWT не получает слово, что ему нужно добавить /context/hen искать C7F5ECA5E3C10B453290DE47D3BE0F0E.gwt.rpc, но только тогда, когда запрос поступает через прокси-сервер. Обходным путем является добавление контекста к URL-адресу веб-сайта:
location /context/ { proxy_pass http://backend/context/; }
но это означает, что контекст теперь является частью URL-адреса, который пользователь видит, и что уродливо.
Кто-нибудь знает, как сделать GWT счастливым в этом случае?
Версия программного обеспечения:
GWT - 1.7.0 (такая же проблема с 1.7.1)
Jetty - 6.1.21 (но та же проблема существовала и при tomcat)
nginx - 0.7.62 (такая же проблема при apache 2.x)
Я просмотрел трафик между прокси и бэкэнд, используя DonsProxy, но там ничего не примечательно.