0

Debian サーバーで Apache と Tomcat を実行しています。Apache は mod_jk を使用して Tomcat との間でリクエストをプロキシします。Tomcat 内に Jenkins をインストールしました。セットアップは正常に機能し、プロキシも機能しています。

今、私は単に書き換えルールに問題があります(私は思う)。

が持っているものは次のとおりです。 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>

Jenkins は、私が Tomcat で提供したいアプリの 1 つです。他のほとんどのアプリケーションにも独自の仮想ホストがあります。私が mod_jk のことを理解している限り、このワーカーは私の他のすべてのアプリケーションには十分なはずですが、間違っているかもしれません。

すでにサブドメインを介して Jenkins にアクセスできるので、(前述のように) 正しい書き換えルールの問題だと思います。

どんな助けでも大歓迎です。アドバイスやヒントに感謝します:)

4

3 に答える 3

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>
于 2012-12-06T15:01:41.830 に答える
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 を使用して、Web ページ内のすべての URL をクライアントに送り返すときに書き直すという、頭の痛い問題を解決する必要があると思います。

于 2012-06-07T14:51:04.180 に答える