Tomcatを普通にインストールすると、8080番ポートで待機します。でも、外部に公開することを考えると、80番ポートでリクエストできるようにしたいです。
そのための手順のメモです。
server.xmlのポートを80に変更
server.xmlにポートの設定があります。
この8080を80に変更してTomcatを再起動します。
すると、80番ポートでアクセスできるかと思いきや、できませんでした。
8080番はもちろんOKで、9080番でもOKです。でも、80番ポートはLISTENしてくれません。
80番ポートで待機させるためには、プロセスをルート権限で実行する必要があります。ここではTomcatをルート権限で実行する必要があります。
しかし、今回はTomcatを専用のユーザーで実行したいと思っているので、そのままでは80ポートで待機させることができませんでした。
参考書籍
こちらの本にその対処法が複数書いてあったので、そのひとつを試しました。
Tomcatハンドブック 第2版
iptablesでポートフォワーディング
これの解決策の一つとしては、80ポートでリクエストされたものを、8080ポートで待機しているTomcatに、ルーティングすれば良いです。
リバースプロキシなどを置くのであれば、そこでポート変換をすれば良いと思います。そのままTomcatにポートフォワーディングするなら、たとえばiptablesを使って実現することができます。
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
これで、80ポートへのリクエストを、8080ポートで待機しているTomcatに流しこむことができます。
proxyPortの設定
こうするとTomcat自体は8080番ポートで待機させた状態で、クライアントからは80番ポートで接続できます。しかしながら、Tomcatは自分自身が8080番ポートでアクセスさせれていると認識しているので、互いに咬み合わない場合が生じます。
そこで、「Tomcat自身は8080番ポートで待機しているものの、リクエストは80番ポートを通しておこないますよ」ということを設定します。具体的には、設定ファイルのConnector要素にproxyPort属性を追加します。
これでTomcatをルート権限で実行せずに、80番ポートでアクセスできるようになりました。
コメント