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社のホームページでも以下のように説明があった。

Web ブラウザは、[インスタント Web 公開]ダイアログボックスで指定された TCP/IP アドレスによって、ホストコンピュータ上の FileMaker Pro データベースの参照先を決定します。デフォルトでは、ポート 80 を使って FileMaker ファイルを共有するように設定されます。Web サーバや他のアプリケーションによってポート 80 がすでに使用されている場合は、TCP/IP のポート番号を 591 に変更することを検討してください。FileMaker, Inc. では、IANA(Internet Assigned Numbers Authority)に対して、Web 公開用のポートとして 591 を登録しています。

インスタント Web 公開が使用するポートの指定

ということで,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の代替ポート番号を検討した。その結果,以下のポート番号を使えばよいことがわかった。

HTTP通信の代替ポート番号
  1. 80
  2. 8080
  3. 8008
  4. 11080
  5. 11180
  6. 20380

普段使うのがせいぜい2-3個なので,だいたい8080と8008くらいで収まるだろう。今後,大量にHTTPのポート番号が必要になった場合,この規則に従って採用したい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です