Я установил Apache Tomcat и Apache Webserver в системе Ubuntu 10.04 Server. Я в основном следил за этими шаги чтобы настроить соединитель mod-jk, и теперь мой веб-сервер перенаправляет весь трафик на Tomcat.
Это означает, что независимо от того, использую ли я порт 80 или 8080, мне предоставляется содержимое каталога Tomcat ROOT. Это нормально, но я все же хотел бы иметь возможность использовать Apache для обслуживания статического и PHP-контента (например, PHPMyAdmin).
Если вы выбираете популярный вариант mod_jk, ответ Оскара правильный. Вам нужно ограничить то, что обрабатывается Tomcat, изменив что-то вроде этого:
JkMount /* ajp13_worker
... только пути, которые вы хотите обработать Tomcat, например:
JkMount /*.jsp ajp13_worker
JkMount /*.cfc ajp13_worker
JkMount /*.cfm ajp13_worker
Если вы ищете дополнительные параметры, также можно использовать mod_proxy_http или mod_proxy_ajp. Я продолжу пару быстрых примеров для проксирования запросов * .jsp / *. Cfm / *. Cfc к Tomcat ...
Если вы хотите попробовать оба варианта, начните с включения обоих модулей (и любых зависимостей), что очень просто с Ubuntu 10.04 ;-)
sudo a2enmod proxy_http proxy_ajp
sudo /etc/init.d/apache2 restart
Мне нравится добавлять свою конфигурацию прокси в /etc/apache2/conf/httpd.conf в Ubuntu, но вы также можете поместить это только в одну или несколько конфигураций VirtualHost.
Чтобы разрешить использование любого прокси, при условии, что вы используете Apache и Tomcat на одном сервере, вам нужно добавить такую директиву:
<Proxy *>
Allow from 127.0.0.1
</Proxy>
Вот конфигурация с использованием mod_proxy_ajp:
ProxyPreserveHost On
ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://localhost:8009/$1$2
ProxyPassMatch ^/(.+\.jsp)$ ajp://localhost:8009/$1
Очевидно, что регулярные выражения можно настроить в соответствии с вашими потребностями (две вышеуказанные директивы ProxyPassMatch могут быть даже довольно легко объединены в одно регулярное выражение).
Чтобы сделать то же самое с mod_proxy_http, просто измените протокол и порт:
ProxyPreserveHost On
ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ http://localhost:8080/$1$2
ProxyPassMatch ^/(.+\.jsp)$ http://localhost:8080/$1
Если вы хотите проксировать определенные хосты и, возможно, замаскировать контекстный путь, вы можете предпочесть что-то вроде этого в конкретном VirtualHost:
ProxyPreserveHost Off
ProxyPass / http://example.site.com:8080/context/
ProxyPassReverse / http://example.site.com:8080/context/
Наконец, если вам нужно пофантазировать (скажем, что-то странное, вроде проверки строки запроса или чего-то еще, что вы можете придумать с помощью RewriteCond / RewriteRule), вы даже можете использовать mod_rewrite с флагом прокси (P) для прокси-сервера Tomcat. Вам нужно будет включить еще один модуль, mod_rewrite:
sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart
Затем в VirtualHost вы можете проксировать запросы CFML с помощью:
RewriteEngine On
RewriteRule ^/(.*\.cf[cm]l?)(/.*)?$ ajp://localhost:8009/$1$2 [P]
Как видите, вы можете проявить изобретательность: P Надеюсь, это поможет!
Используйте JkUnmount для вещей, которые вам не нужно обслуживать с помощью tomcat:
JkMount / * ваш рабочий
JkUnMount /*.php yourworker
JkUnMount /*.png yourworker
JkUnMount /*.jpg yourworker
и т.д...(Не уверен, что вы можете это сделать: JkUnMount /*.{php|jpg|gif|png|etc ..})
Или, если вы используете только jsp для tomcat, попробуйте:
jkMount /*.jsp рабочий