2012-06-07 1 views
0

У меня есть Apache и Tomcat, работающий на моем сервере Debian, Apache, используя mod_jk для проксирования запросов Tomcat и обратно. Я установил Дженкинса внутри Tomcat. Настройка работала нормально, проксирование тоже работает.Прокси-сервер Apache для Tomcat через поддомен, используя mod_jk, скрывая путь в URL-адресе

Теперь у меня просто проблема с правилами переписывания (я думаю).

Что есть является: ci.<mydomain>.com/jenkins

То, что я хочу является: ci.<mydomain>.com

Я не достаточно опытен с правилами перезаписи в Apache и документации/Google не помогает я тоже (возможно, я не использую правильные ключевые слова). Так что любая помощь приветствуется.

Вот мои настройки:
Apache версии: Apache/2.2.16 (Debian)
Tomcat версии: Apache Tomcat/7.0.27

мой worker.properties файл выглядит следующим образом:

# Define 1 real worker using ajp13 
worker.list=worker1 
# Set properties for worker1 (ajp13) 
worker.worker1.type=ajp13 
worker.worker1.host=localhost 
worker.worker1.port=8009 

Определение моей подобласти/виртуального хоста:

<VirtualHost *> 
    ServerName ci.<mydomain>.com 
    ServerAlias www.ci.<mydomain>.de 

    ErrorLog /var/log/apache2/ci_error.log 
    LogLevel warn 
    CustomLog /var/log/apache2/ci_access.log combined 

    JKMount /jenkins/* worker1 
    JKMount /jenkins worker1 

    RewriteEngine on 
    RewriteRule ^/$ /jenkins/ [R=permanent] 
    RewriteRule ^/jenkins/(.*)$ ajp://localhost:8009/jenkins/$1 [P] 
</VirtualHost> 

Дженкинс только одно приложение I хочу быть поданным Tomcat. У большинства других приложений также будет свой собственный виртуальный хост. Насколько я понял материал mod_jk, этого работника должно быть достаточно для всех моих других приложений, но, возможно, я ошибаюсь.

Как я могу получить доступ к Дженкинсу через субдомен уже, я думаю, что это (как упоминалось ранее) только вопрос правильных правил перезаписи.

Любая помощь приветствуется, и я благодарен за любой совет или намек :)

ответ

1

Я не верю, вы можете использовать mod_rewrite/RewriteRule для прокси к Tomcat. URL-адреса формы ajp:// используются с mod_proxy_ajp, как правило, с использованием директивы ProxyPass.

Я думаю, что вы хотите это:

RewriteEngine on 
RewriteRule ^/$ /jenkins/ [R=permanent] 

JKMount /jenkins/* worker1 
JKMount /jenkins worker1 

Поскольку вы только соответствие /, а не что-то более интересного, вы, вероятно, можете избавиться от mod_rewrite вообще и вместо этого использовать mod_alias игровой Redirect директивы:

Redirect 301/http://yourhost/jenkins/ 

Или:

RedirectPermanent/http://yourhost/jenkins/ 

Обратите внимание, что во всех этих случаях клиент будет в конечном счете видеть /jenkins/ в своем URL-адресе. Если вы хотите полностью устранить /jenkins, я считаю, что вам придется использовать mod_proxy и пройти кучу головных болей, чтобы переписать все ваши URL-адреса на своих веб-страницах, поскольку они отправляются обратно клиенту.

+0

Привет, Кристофер, огромное спасибо, я боялся, что кто-то упомянет кучу головных болей за то, что я хочу. хотя я дам ваше предложение попробовать в ближайшие дни и буду поддерживать вас в курсе :) – bully

+0

Если вы хотите запустить Jenkins на том, что кажется '/' (а не '/ jenkins'), то почему бы не просто нарисовать карту'/* 'to' worker1' и есть Jenkins - ваш ROOT webapp в Tomcat? –

+0

Привет, Кристофер, потому что я хочу запустить больше, чем Дженкинс в tomcat. Как вы предполагаете, я хочу настроить среду разработки, и я предпочитаю субдомены по сравнению с URL-адресами, зависящими от контекста. так что будет ci.domain, wiki.domain, ... И это привело меня к этой интересной проблеме. наличие более одного экземпляра tomcat не является решением, так как, к сожалению, у моего сервера ограниченные ресурсы :( – bully

6

Не уверен, что это все еще проблема, но это должно быть легко исправить.Я делаю что-то очень похожее, вот что вам нужно:

<VirtualHost *> 
    ServerName ci.<mydomain>.com 
    ServerAlias www.ci.<mydomain>.de 

    ErrorLog /var/log/apache2/ci_error.log 
    LogLevel warn 
    CustomLog /var/log/apache2/ci_access.log combined 

    JKMount /jenkins/* worker1 
    JKMount /jenkins worker1 

    RewriteEngine On 
    RewriteRule ^/(.*)$ /jenkins/$1 [PT] 
</VirtualHost> 
+0

Привет, Майк, спасибо за ответ. Нет, теперь это не проблема, но это может быть и в будущем. Я дам ему попробовать, поэтому спасибо за ваши отзывы в любом случае :) – bully

+0

https://wiki.jenkins-ci.org/display/JENKINS/Running+Jenkins+behind+Apache – KCD

Смежные вопросы