Абсолютные URL, не работающие с Apache2 AJP, проксируют Tomcat

Если это - весь вещь на поток, то Вы наталкиваетесь на "проблему" продукта задержки пропускной способности. В основном существует предел тому, каким количеством данные будут "в полете" в любой момент (в TCP, это - "размер окна"), и в течение данной круговой задержки, Вы не можете получить больше, чем определенное количество данных через в данный период времени, потому что отправитель должен ожидать получателя к ack получение данных, уже отправленных, прежде чем они смогут отправить больше. Примерно, Ваша пропускная способность TCP будет размером окна / круговая задержка (в секундах).

Это не просто вещь TCP (хотя я использую тот пример, потому что это - то с большей частью литературы там, если Вы хотите пойти, смотря далее). Все протоколы, которые ожидают подтверждения прежде, чем отправить больше данных, пострадают от той же проблемы. В теории Вы могли просто отправить все данные и не ожидать acks, но это обычно рассматривало плохую вещь, потому что можно "затопить" получателя, не давая им способа остановить пожарный шланг.

Для большинства протоколов можно настроить размер окна так, чтобы у Вас могло быть больше данных "в полете" сразу, и некоторые протоколы имеют опции, которые можно настроить для сокращения влияния подтверждений, но у них всех есть компромиссы, о которых необходимо думать для приложения.

2
задан 1 December 2010 в 16:20
4 ответа

Проблема состоит в том, что Ваш сервер кота встраивает ссылки в HTML с путем, который он знает. Не путь к Вашему прокси-серверу. (Собранный это из Вашей *.gif записи в журнале)

ProxyPassReverse не изменяет ссылки в HTML. Это только изменяет HTTP-заголовки.

Чтобы заставить это работать, необходимо настроить кота с соответствующим местоположением и путем в контексте приложения. Вероятно, необходимо будет переименовать webapp.war файл к ROOT.war и изменить любую конфигурацию контекста на "/".

3
ответ дан 3 December 2019 в 09:48

Вы могли бы попробовать эту статью, которая объясняет соответствующий способ использовать ProxyPassReverse:

http://www.humboldt.co.uk/2009/02/the-mystery-of-proxypassreverse.html

2
ответ дан 3 December 2019 в 09:48

В случае, если необходимо вернуться к mod_proxy:

<Location /tomcat>
    ProxyPass ajp://127.0.0.1:8009/tomcat
    ProxyPassReverse ajp://127.0.0.1:8009/tomcat
</Location>
0
ответ дан 3 December 2019 в 09:48

Так как Вы производите абсолютные URL существует несколько общих сценариев:

Используйте mod_proxy_html.

Или Вы могли бы использовать RewriteEngine переписать URL в / кому: /myapp/.

RewriteEngine On
RewriteCond %{REQUEST_URI} ! ^/myapp/
RewriteRule ^/(.*)$ /myapp/$1

Это из памяти так, Вы могли бы хотеть проверить это сами с помощью mod_rewrite Документации. Но я рекомендовал бы придерживаться с mod_proxy_html начиная с перезаписи ссылок, отправленных клиентам, было бы менее сложным, чем перезапись каждого запроса внутренне.

0
ответ дан 3 December 2019 в 09:48

Теги

Похожие вопросы