3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AJP(Apache JServ Protocol)

Last updated at Posted at 2021-09-14

AJPとは

Apache httpd と Apache Tomcat を連携させるためのプロトコル

AJPを使う目的

インターネットからのリクエストを httpd で受付け、Java での動的な処理が必要なページの処理は裏方となる Tomcat に実行させたいためです。
この時、Apache httpd はプロキシの役目を担っていることを意識することが、本稿を読み進めて行く上で重要です。
https://weblabo.oscasierra.net/tomcat-mod-proxy-ajp/

Apache のモジュールを有効にする

AJP13 プロトコルを扱えるようにするには mod_proxymod_proxy_ajp をサーバに組み込む必要があります。
【公式】https://httpd.apache.org/docs/2.4/ja/mod/mod_proxy_ajp.html

sudo a2enmod proxy
sudo a2enmod proxy_ajp

結果
hoge@ubuntuserver:~$ sudo a2enmod proxy
 Enabling module proxy.
 To activate the new configuration, you need to run:
  systemctl restart apache2

hoge@ubuntuserver:~$ sudo a2enmod proxy_ajp
 Considering dependency proxy for proxy_ajp:
 Module proxy already enabled
 Enabling module proxy_ajp.
 To activate the new configuration, you need to run:
  systemctl restart apache2

Tomcat側設定変更

/var/lib/tomcat9/conf/server.xml

<!--8080ポートでのHTTP通信をコメントアウト
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
-->
(省略)

<Connector protocol="AJP/1.3"
               port="8009"
               secretRequired="false"
               redirectPort="8443" />
(省略)

参考:https://weblabo.oscasierra.net/tomcat-mod-proxy-ajp/

|項目|解説|
|----|----|----|
|secretRequired="false"|この属性がtrueの場合、AJPコネクタは、シークレット属性がnull以外、ゼロ以外の長さの値で設定されている場合にのみ起動します。この属性は、AJPコネクタを起動するためにシークレット属性を指定する必要があるかどうかのみを制御します。労働者が秘密を提供する必要があるかどうかは制御しません。デフォルト値はtrueです。この属性は、コネクタが信頼できるネットワークで使用されている場合にのみfalseに設定する必要があります。
【公式】https://tomcat.apache.org/tomcat-9.0-doc/config/ajp.html||
|address|複数のIPアドレスを持つサーバーの場合、この属性は、指定されたポートでリッスンするために使用されるアドレスを指定します。デフォルトでは、コネクタはループバックアドレスをリッスンします。システムプロパティを使用してJVMが別の方法で構成されていない限り、Javaベースのコネクタ(NIO、NIO2)は、0.0.0.0または::のいずれかで構成されている場合、IPv4アドレスとIPv6アドレスの両方でリッスンします。 APR /ネイティブコネクタは、0.0.0.0で構成されている場合にのみIPv4アドレスでリッスンし、::で構成されている場合はIPv6アドレス(およびオプションでipv6v6onlyの設定に応じてIPv4アドレス)でリッスンします。
【公式】https://tomcat.apache.org/tomcat-9.0-doc/config/ajp.html||
|ループバックアドレス|ループバックアドレスはネットワーク上において自分自身を表す仮想的なアドレスであり、IPv4においては「127.0.0.1」、IPv6においては「::1」(0:0:0:0:0:0:0:1)が使われる。また、ホスト名としては慣用的に「localhost」が用いられる。IPv6ではループバックアドレスは「::1」しか用いることができないと定義されているが、IPv4の「127.0.0.1」は慣習的に決められたもので、正式なものではない。このため、OSによってはこれ以外のIPアドレスをループバックアドレスとして使用できる場合もある(が、通常は別のアドレスは使わない)。
https://e-words.jp/w/%E3%83%AB%E3%83%BC%E3%83%97%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9.html||

http://blog.onodera.asia/2020/04/apachetomcatsecretrequiredfalse.html
https://qiita.com/ekzemplaro/items/ae5e3e3b17d206df6f0a

Tomcat 再起動

sudo systemctl restart tomcat9

Apache2 の設定変更

/etc/apache2/apache2.conf
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
ポイント 説明
上記をapache2.confに記述して上書きすれば良い。
「/」ルート ルート部分がlocalhost:8009となる

Apache2 の再起動

sudo systemctl restart apache2

ブラウザーで、下記にアクセス。

AJP前後 URL例 説明
設定前 http://sample_domain:8080/app_name/ 8080でHTTP通信
設定後 http://sample_domain/app_name/ ・8080をコメントアウトしたので、上のURLではアクセスできなくなっている。
・ルートでAJP通信を行うように設定した

3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?