質問: OS:winにてTomcatとApache間連携でmod_proxyを利用する設定について質問です。 ◆httpd.confファイルの中身にについて LoadModule roxy_module modules/mod_proxy_ajp.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so この上記2行をコメントアウトをはずして Include conf/extra/httpd-ajp.conf '# Secure (SSL/TLS) connections ('は不要です。) と記載追加し ◆新規でhttpd-ajp.confファイルを新規作成し ProxyPass / ajp://localhost:8009/ と記載する という設定があり、この結果http://localhost/js10/~ポート指定なし でアプリケーションにアクセスできるようになると参考書にありました。 これはJSP&サーブレットの処理だけをTomcatに転送(処理分担)し 静的コンテンツのみAacheから直接に応答してるそうなのですが、 なぜ設定編集や追加の際にTomcatの文字がひとつも入ってこないのでしょうか。 具体的に上の合計4つの文の編集や追加で何が起こっているのか アドバイス頂けないでしょうか。 よろしくお願いいたします。 ※因みにこの連携は最近のpleiadesをインストールすると自動的にこの設定がされているのでしょうか。
回答: >具体的に上の合計4つの文の編集や追加で何が起こっているのか ``` LoadModule proxy_module modules/mod_proxy_ajp.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so ``` この設定は、apacheに対して、モジュールを使うための設定 ``` Include conf/extra/httpd-ajp.conf ``` この設定は、apacheとして、読み込むconfを指定 ``` ProxyPass / ajp://localhost:8009/ ``` この設定は、「/」のアクセスに対して、ajpを使いローカルホストの8009に転送する。 >なぜ設定編集や追加の際にTomcatの文字がひとつも入ってこないのでしょうか。 tomcat側がListenするportに対して、Apache側が処理を転送しているからです。 tomcatのバージョンのapacheのバージョンが不明なので、tomcatのディレクトリ構成やファイルに 差異があるかもしれませんが、 tomcatのディレクトリ内に、ファイルserver.xmlがあり、そこに以下のような記載があり それは、tomcat側がajpとしてポート8009でListenしていることを示す。 ``` ``` apacheとtomcatは、ajpというプロトコルで繋がっている。 (apacheからは8009という穴に送りつけてるイメージ) 読まれている参考書の前段に何かありそうに思いますが httpd-ajp.confnにて ``` ProxyPass / ajp://localhost:8009/ ``` は、http://domain/~ や http://127.0.0.1/~ のhttpリクエストを全て、tcpの8009(tocmatのajpポート)に転送します。そのため、静的コンテンツ(img.css.js)へのhttpリクエストでも、8009(tomcat側)に送られる。 例えば、tomcatが用意しているjspやサーブレットのサンプルをApache経由で確認する場合(tomcatのhttpポートでアクセスしない)は、 ``` ProxyPass /examples/ ajp://localhost:8009/examples/ ``` を設定します。そうすると、examplesのjspやservletの画面の画像は、examplesの中にあるものが表示されます。 >※因みにこの連携は最近のpleiadesをインストールすると自動的にこの設定がされているのでしょうか。 開発環境のeclipseにpluginを追加してパッケージジングしているpleiadesであれば、 apacheとtomcatを連携するというものではありません。 pleiadesのサイトで用意されているPleiades All in Oneは、 eclispe + 様々なplugin + jdk(java6,7,8等)+tomcat(6,7,8等)が含まれているだけで 開発するときに、http、jspやservlet等の機能を使うときに、ダウンロードして配置することが不要なだけです。