UbuntuでTomcatのポート番号を変更

UbuntuでTomcatのポート番号を変更

Ubuntu環境、sever.xmlをいじってTomcatのポート番号を変更する。

関連ページ
Tomcatのデフォルトのポート番号は8080なので、たとえばunity-engineer.topのドメインに繋ぐ場合は、unity-engineer.top:8080という冗長なURLを打ち込まないとサイトを見ることは出来ません。
一応、このTomcatのポート番号を80に変更すればドメイン名だけでhttp通信できるし、443にすればドメイン名だけでhttps通信できます。

server.xmlを編集する

まず
server.xml
があるディレクトリに移動し、viコマンドで開きます。
cd 
[Tomcatのインストールディレクトリ]
/conf
sudo vi server.xml

中には大量のコメントアウトされた
Connector
設定が書いてありますが、初期状態では下コードが有効化されているはずです。
<Connector port="8080" protocol="HTTP/1.1"
<tab>connectionTimeout="20000"
<tab>redirectPort="8443" />
この
8080
の部分を
80
に変えるだけでOK。
<Connector port="80" protocol="HTTP/1.1"
<tab>connectionTimeout="20000"
<tab>redirectPort="8443" />
Tomcatを再起動します。
sudo service tomcat restart

これでポート80でTomcatに直接つなぐことはできます。ただ一般にはあまり良い方法とされてないらしいです。

TomcatはApacheと連携することを前提に設計されていて、そのApacheのデフォルトのポート番号はhttp通信が
80
、httpsは
443
になっています。
同じサーバ内で、違うアプリケーションが同一のポート番号を共有することはできません。
もしApacheと連携するつもりなら、このTomcatのポート番号を80や443にするのは確かによくないと思われます。

Apacheと連携する場合は、 リバースプロキシ という方法でTomcatがどんなポート番号であろうと助長なURL入力を避けることができます。
これがベストプラクティスではありますが、Apacheの知識が必須で、知識ゼロから導入するのは結構面倒でもあります。
Tomcatだけでサイトを運営するなら、ポートを80に変えてしまうのも別に良いんでわと思います。

ポート80接続とポート443接続両方に対応する

server.xml
はポート番号が被っていなければ、複数の
Connector
設定を有効にできます。
http通信とともにhttps通信を有効にする場合、下のようなコードを打ち込みます。
SSL認証は済んでいるものとします。
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"    
    SSLEnabled="true"    
    scheme="https"    
    secure="true"    
    clientAuth="false"    
    sslProtocol="TLS"    
    keystoreFile="
[keystoreのpath]
" keystorePass="
keystoreのパスワード
"    
    redirectPort="8443"/>
Tomcatを再起動します。
sudo service tomcat restart

natを使ってポート8080からポート80に繋ぐ

server.xmlを変えなくても、
natのPREROUTINGチェーン
を使うと内部的にポート8080の接続をポート80に変換してくれます。
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
こちらの方が解決法としては簡単かもしれないです。

PREROUTINGチェーンを解除するには下のコマンドを打ち込みます。
sudo iptables -t nat -F
0
0