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

Я изначально задавал этот вопрос на SO, но, возможно, SF - лучшее место для решения этого вопроса.

У меня эта проблема с GWT, когда он находится за обратным прокси. Бэкэнд-приложение разворачивается в контексте - давайте назовем его / context.

Приложение GWT отлично работает, когда я нажму его напрямую:

HTTP: // хост: 8080 / контекст /

Я могу настроить обратный прокси перед этим. Вот мой пример nginx:

верхний бэкэнд {
    сервер 127.0.0.1:8080;
}
...

место нахождения / {
   proxy_pass        http://backend/context/;
}

Но когда я запускаю обратный прокси-сервер, GWT запутывается, говоря:

2009-10-04 14: 05: 41.140: /: WARN: Логин: ОШИБКА: файл политики сериализации '/C7F5ECA5E3C10B453290DE47D3BE0F0E.gwt.rpc' не найден; Вы забыли включить его в это развертывание?
2009-10-04 14:05:41.140:/:WARN: Логин: WARNING: Не удалось получить SerializationPolicy 'C7F5ECA5E3C10B453290DE47D3BE0F0E' для модуля 'https://hostname:444/'; будет использоваться устаревшая, совместимая с 1.3.3 политика сериализации. В результате могут возникать исключения SerializationException.
2009-10-04 14:05:41.292:/:WARN:  StoryService: ОШИБКА: файл политики сериализации '/0445C2D48AEF2FB8CB70C4D4A7849D88.gwt.rpc' не найден; Вы забыли включить его в это развертывание?
2009-10-04 14:05:41.292:/:WARN:  StoryService: WARNING: Не удалось получить SerializationPolicy '0445C2D48AEF2FB8CB70C4D4A7849D88' для модуля 'https://hostname:444/'; будет использоваться устаревшая, совместимая с 1.3.3 политика сериализации. В результате могут возникать исключения SerializationException.

Другими словами, GWT не получает слово, необходимое для добавления / context / затем поиска C7F5ECA5E3C10B453290DE47D3BE0F0E.gwt.rpc, но только тогда, когда запрос приходит через прокси. Обходной путь должен добавить контекст к URL для веб-сайта:

местоположение / контекст / {
    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)

Я подозреваю, что, возможно, GWT обнаруживает заголовок Referer и запутывается (есть ли у nginx способ отключить этот заголовок?) Или что есть разница, поскольку трафик между прокси и GWT/Jetty - HTTP/1.0 вместо HTTP/1.1.

1 ответ

Решение

Я думаю тебе надо

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

а затем использовать перезапись, чтобы убрать / контекстную часть из URL

Другие вопросы по тегам