Tomcatサーバに80番ポートでアクセスする。

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番ポートでアクセスできるようになりました。

コメント

タイトルとURLをコピーしました