Apacheで長いURLに対応する設定
Apache2.4 - Tomcat Connector - Tomcat8 構成。
Apache2.4の導入については下記参照。
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" />