У меня проблема с GWT, когда он работает за обратным прокси. Бэкэнд-приложение разворачивается в контексте - назовем его /context.
Приложение GWT прекрасно работает, когда я нажимаю на него напрямую:
http://host:8080/context/
Я могу настроить обратный прокси перед ним. Вот мой пример 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)
Пристань - 6.1.21 (но та же проблема существовала при tomcat)
nginx - 0.7.62 (та же проблема в apache 2.x)
Я посмотрел на трафик между прокси и бэкэндом, используя DonsProxy , но там нет ничего примечательного.