Назад | Перейти на главную страницу

Проблема с GWT за обратным прокси - nginx или apache

Я изначально задал этот вопрос на 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-адреса