Я изначально задал этот вопрос на SO, но, возможно, SF - лучшее место для обсуждения этого вопроса.
У меня проблема с GWT, когда он находится за обратным прокси. Бэкэнд-приложение развертывается в контексте - назовем его / context.
Приложение GWT отлично работает, когда я нажимаю на него напрямую:
http: // хост: 8080 / контекст /
Я могу настроить обратный прокси перед ним. Вот мой пример с 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 /, а затем искать 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)
Я подозреваю, что, возможно, GWT подхватывает заголовок Referer и запутывается (есть ли способ для nginx отключить этот заголовок?) Или что есть разница, поскольку трафик между прокси и GWT / Jetty - это HTTP / 1.0 вместо HTTP / 1.1.
я думаю ты должен
location /context/ {
proxy_pass http://backend/context/;
}
а затем используйте перезапись, чтобы удалить / контекстную часть из URL-адреса