3秒でわかる
HTTP 通信で既定として使われるポート番号。ブラウザが URL に番号を書かなくてもつながるのは、この番号が省略時の宛先だからです。
もう少し詳しく
どういうものか
80 番ポートは、HTTP 通信の既定のポート番号として割り当てられている番号です。IP アドレスが建物の住所だとすると、ポート番号は部屋番号にあたります。同じサーバーの中で複数のサービスが待ち受けられるのは、番号で区別しているからです。
http://example.com/ と書いたとき、ブラウザは自動的に 80 番へ接続します。http://example.com:8080/ のように書けば別の番号へ接続します。
なぜ必要か
番号が決まっていないと、相手に接続するたびに「このサイトは何番ですか」と確かめる必要が出ます。よく使うサービスの番号を先に決めておくことで、URL からポートの表記を省けます。80 番は HTTP、443 番は HTTPS、22 番は SSH、25 番は SMTP といった具合に、0 番から 1023 番までがこうした用途向けに予約されています。
具体例
# 何が 80 番を使っているか確かめる
sudo ss -lntp | grep ':80'
# 実際に手で HTTP を話してみる
<a href="/glossary/curl" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">curl</a> -v http://example.com/
# nginx で 80 番を待ち受ける設定
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri; # HTTPS へ寄せる
}今のサイトは 80 番で受けたリクエストを 443 番へ転送する形が一般的です。80 番を閉じてしまうと、番号を書かずに来た利用者がつながらなくなります。
つまずきやすいところ
1024 番未満のポートは、Linux では管理者権限がないと待ち受けられません。開発中に一般ユーザーでアプリを 80 番で起動しようとして Permission denied になるのはこれが理由です。開発時は 3000 番や 8080 番を使い、本番ではリバースプロキシに 80 番を持たせる構成がよく採られます。
同じ番号を二つのプロセスで待ち受けることもできません。Address already in use が出たときは、先に別のサーバーが上がっていないかを確認します。
似た用語との違い
| 番号 | 用途 |
|---|---|
| 80 | HTTP。暗号化なし |
| 443 | HTTPS。TLS で暗号化 |
| 8080 | 開発用や代替の HTTP でよく使われる。予約された番号ではない |
覚え方
住所が IP、部屋番号がポート、80 号室が HTTP の受付です。番号を書かずに訪ねると 80 号室へ通される、と覚えておくと URL の省略が説明できます。