HTTP通信用80ポートの代替ポート番号
Apache HTTP ServerやJenkinsなどを自前の環境で同居させる場合,ポート番号80や8080が競合することに気付いた。そこで,HTTP通信用の代替ポート番号について調査・検討した。
導入
自前の環境でHTTP通信を用いたWebアプリケーションの動作を確認する場合,Webアプリケーション同士でポート番号が競合する。両立させるには,片方のポート番号の変更が必要となる。自前の環境なので,好きなポート番号をつければいいのだが,何の規則にも従わずにつけるが具合が悪い。そこで,このポート番号をどうするか悩んでしまった。
JenkinsのようにJavaのWebアプリケーションでは,デフォルトのポート番号が8080であることが多い。80がHTTP通信のデフォルトポート番号というのは知っていたのだが,8080にどういう意味があるのか知らなかった。
IANAでの代替ポート番号
調べてみたところ,ポート番号を管理しているIANAで 8080は [Description] が [HTTP Alternate (see port 80)] となっていた。IANAでは代替用のポート番号も定義しており,8080は80に対する正式な代替ポート番号のようだ。ただ,今回はその8080も競合するため,その他の代替ポート番号も必要になる。
IANAで8080で説明にあった [http alternate] で検索したところ,以下のポート番号がヒットした。
- 591
- 8008
- 8080
591は [Description] に [FileMaker, Inc. – HTTP Alternate (see Port 80)] と記されていた。591はどうやらFileMaker社専用のポート番号になっているらしい。FileMaker社のホームページでも以下のように説明があった。
ということで,8080の他に使えるのは8008のポート番号ということがわかった。
追加の代替ポート番号
万が一,大量にHTTPのポート番号が必要になった場合に備えて,他のポート番号を検討した。
まず,IANAで [HTTP] のキーワードで検索して探してみた。8088のRadan HTTP,20002のCommtact HTTPなどがヒットしたが,このへんはFileMakeと同じでベンダー固有のHTTPのポート番号のようだ。
元々定義されている代替ポート番号の8080や8008から察するに,HTTPのデフォルトポート番号80との関連がわかりやすいように,下2桁が80の他に空いているポート番号が適切に感じた。
そこで,下2桁が80の空きポート番号をポート番号20000くらいまで探してみた。探した結果,以下の番号が空いていた。
- 880, 980
- 3280, 4380, 5180, 5380, 5480, 5880, 5980, 6180-6380, 6680, 6780 6980, 7180, 7380-7580, 8180, 8480-8780, 9180, 9480-9780
- 10180-10780, 11080-20380
途中まで不規則で空いているが,11080から連続して空いていることがわかった。そのため,HTTPのポート番号がたくさん必要な場合は11080から20380まで100番ごとに選べばよいことがわかった。
結論
HTTP通信用のポート番号80の代替ポート番号を検討した。その結果,以下のポート番号を使えばよいことがわかった。
普段使うのがせいぜい2-3個なので,だいたい8080と8008くらいで収まるだろう。今後,大量にHTTPのポート番号が必要になった場合,この規則に従って採用したい。