ぺーぺーSEのブログ

備忘録・メモ用サイト。

Apacheで長いURLに対応する設定

Apache2.4 - Tomcat Connector - Tomcat8 構成。
Apache2.4の導入については下記参照。

blog.pepese.com

Tomcat Connectorの導入(mod_jk)

mod_jkのビルドおよび設定。

cd /tmp
wget http://ftp.jaist.ac.jp/pub/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.40-src.tar.gz
tar xvf tomcat-connectors-1.2.40-src.tar.gz
cd tomcat-connectors-1.2.40-src/native
./configure --with-apxs=/opt/apache/bin/apxs # apacheをインスコしたところにapxsってのがある
make
cp /tmp/tomcat-connectors-1.2.40-src/native/apache-2.0/mod_jk.so /opt/apache/modules

・httpd.conf

LoadModule jk_module modules/mod_jk.so
Include conf/mod_jk.conf

・/opt/apache/conf/mod_jk.conf

JkWorkersFile /opt/apache/conf/workers.properties
JkLogFile /opt/apache/logs/mod_jk.log
JkLogLevel info
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkMount /* tomcatA

・/opt/apache/conf/workers.properties

# Define workers
worker.list=tomcatA
# Set properties
worker.tomcatA.type=ajp13
worker.tomcatA.host=localhost
worker.tomcatA.port=8009


Tomcat Connectorの導入(mod_proxy_ajp)

・httpd.conf

LoadModule proxy_module modules/mod_proxy.so         # コメントアウトをはずす
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so # コメントアウトをはずす

ProxyPass / ajp://localhost:8009/


設定方法

ここでは、URL長10000に対応する設定をする。

■Apache Core
設定項目 設定値 default
LimitRequestLine 10000 8190

このディレクティブで設定した値より長いURLリクエストを投げると「414 / Request-URI Too Large」がApacheから返却される。
しかし、この設定だけだと、8192〜10000間のURL長のリクエストをなげると、どこかしらでエラーが発生して「400」が返却される。
回避するためには後述の設定が必要になる。

■その他の設定
種別 設定項目 設定値 default
mod_proxy ProxyIOBufferSize 10000 8192
mod_jk max_packet_size 10000 8192
Tomcat packetSize 10000 8192
Tomcat socket.appReadBufSize 10000 8192

・httpd.conf(mod_proxy_ajpを使用する場合)

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LimitRequestLine 10000
ProxyIOBufferSize 10000
ProxyPass / ajp://localhost:8009/

・httpd.conf(mod_jkを使用する場合)

LimitRequestLine 10000
LoadModule jk_module modules/mod_jk.so
Include conf/mod_jk.conf

・mod_jk.conf(mod_jkを使用する場合)

JkWorkersFile /opt/apach/conf/workers.properties
JkLogFile /opt/apach/logs/mod_jk.log
JkLogLevel info
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkMount /* tomcatA

・workers.properties(mod_jkを使用する場合)

worker.tomcatA.type=ajp13
worker.tomcatA.host=localhost
worker.tomcatA.port=8009
worker.tomcatA.max_packet_size=10000

・server.xml

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" packetSize="10000" socket.appReadBufSize="10000" />