事象
CentOS7環境下で、Apache HTTP Server(以下httpd)とTomcatをAJP通信で接続をさせたい。
しかしながら、500エラーばかりが返ってくる。
httpdのログを確認すると、以下の様なメッセージが出力されていた。
[proxy:error] Permission denied: AH00957: AJP: attempt to connect to 127.0.0.1:8010 (localhost) failed [proxy_ajp:error] AH00896: failed to make connection to backend: localhost
対応方法
httpd_can_network_connectを許可する。
一時的対応
setsebool httpd_can_network_connect=true
恒久的対応
setsebool -P httpd_can_network_connect=true
tips
SE Linuxのポリシー確認方法
getsebool -a
getsebool ポリシー名
同じタイミングで他にもやらかしてたこと
Tomcatのポート番号が重複
httpdのポートフォワード指定方法が重複
内容
複数台のコンテキストパス名が同じところを指していた
(proxy_ajp.conf)
#Tomcat1号機 ProxyPass / ajp://localhost:8009/ ProxyPassReverse / ajp://localhost:8009/ #Tomcat2号機 ProxyPass / ajp://localhost:8010/ ProxyPassReverse / ajp://localhost:8010/
対応方法
色々やり方あるであろうが、今回はコンテキストパスを書くことにした
(proxy_ajp.conf)
#Tomcat1号機 ProxyPass /hoge ajp://localhost:8009/hoge ProxyPassReverse /hoge ajp://localhost:8009/hoge #Tomcat2号機 ProxyPass /hogehoge ajp://localhost:8010/hogehoge ProxyPassReverse /hogehoge ajp://localhost:8010/hogehoge
TomcatのsecretRequired属性がtrueのまま
内容
httpdのproxy_ajp.xmlの設定は上述のままである。
しかし、TomcatのConnectorタグの属性にsecretRequiredを定義していない。
Tomcat9.0.31よりsecretRequiredのデフォルト値はtrueであり、httpdおよびTomcatにシークレットキーを指定する必要がある。
対応方法
このサイトの説明が綺麗であった
qiita.com