Apacheのポート番号は
httpd.conf の Listen ディレクティブで設定します。この記事では、Apacheのポート番号を変更する手順を解説します。
【この記事でわかること】
・Apacheのポート番号は httpd.conf の Listen ディレクティブで設定する
・デフォルトは80番(HTTP)と443番(HTTPS)
・ポート変更後はファイアウォール設定も忘れずに変更する
・Apacheを再起動して設定を反映させる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Listenディレクティブの設定方法
1. httpd.confを編集する
# httpd.confを編集 # vi /etc/httpd/conf/httpd.conf # Listen行を変更する(80から8080に変更する例) #Listen 80 Listen 8080
Listen ディレクティブに変更後のポート番号を指定します。特定のIPアドレスにバインドする場合は
Listen IPアドレス:ポート番号 の形式で指定します。2. ファイアウォールの設定を変更する
ポートを変更した場合は、ファイアウォールの設定も変更する必要があります。# firewalldの場合(CentOS 7以降) # firewall-cmd --add-port=8080/tcp --permanent # firewall-cmd --reload # iptablesの場合(CentOS 6以前) # iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
3. Apacheを再起動する
# 設定の構文チェック # apachectl configtest # Apacheを再起動して設定を反映 # systemctl restart httpd
本記事のまとめ
| やりたいこと | 設定 |
|---|---|
| ポートを8080に変更 | Listen 8080 |
| 特定IPにバインド | Listen 192.168.1.1:8080 |
| ファイアウォール解放 | firewall-cmd --add-port=8080/tcp --permanent |
| Apache再起動 | systemctl restart httpd |
ポート変更時の SELinux 設定(semanage port が必要なケース)
RHEL / Rocky / AlmaLinux などの SELinux が有効な環境では、Apache を 80 / 443 以外のポートに変更しただけでは起動できません。SELinux ポリシーでhttpd_t プロセスが許可されているポートが決まっているため、追加ポートに対し semanage port で許可を与える必要があります。1. SELinux が enforcing か確認する
# SELinux のステータスを確認する # getenforce Enforcing
2. semanage で許可済みポートを確認する
# httpd_port_t に登録されているポートを確認する # semanage port -l | grep http_port_t http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000 pegasus_http_port_t tcp 5988
http_port_t 行にあるポート番号だけが Apache の起動を許可されています。たとえば 8080 を使いたい場合、ここにないので追加が必要です。3. 新ポートを SELinux に登録する
# 8080 を http_port_t に追加する # semanage port -a -t http_port_t -p tcp 8080 # 確認 # semanage port -l | grep http_port_t http_port_t tcp 8080, 80, 81, 443, 488, 8008, 8009, 8443, 9000
semanage コマンドが入っていない場合は dnf install policycoreutils-python-utils でインストールしてください。4. 設定後に Apache を起動する
# Apache を起動する # systemctl restart httpd # 起動状態を確認する # systemctl status httpd # 起動失敗時は SELinux ログを確認する # ausearch -m AVC -ts recent | grep httpd
journalctl -u httpd と ausearch -m AVC を確認します。「SELinux is preventing httpd」と出ているなら、semanage 設定が漏れているか別のポリシー違反が原因です。クラウド環境のセキュリティグループ / ファイアウォールも忘れずに開ける
オンプレ環境ではfirewalld / iptables / ufw の設定だけで完結しますが、AWS / GCP / Azure などのクラウド環境では、サーバ内部のファイアウォール設定だけでなく、外側のセキュリティグループ(SG)/ ファイアウォールルールも開ける必要があります。1. AWS EC2 のセキュリティグループで 8080 を開ける
# AWS CLI でセキュリティグループにルール追加(インバウンド許可) # aws ec2 authorize-security-group-ingress \ --group-id sg-XXXXXXXXXXXXXXXXX \ --protocol tcp \ --port 8080 \ --cidr 0.0.0.0/0
--cidr 203.0.113.XX/32 のように制限を入れるのが鉄則です。2. Ubuntu 系(ufw 利用)の追加ポート開放
# ufw で 8080 を許可する # ufw allow 8080/tcp # 確認 # ufw status numbered Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] 8080/tcp ALLOW IN Anywhere
ufw が標準のファイアウォール管理ツールです。RHEL 系の firewall-cmd と混在させないよう、運用ルールを統一しておきましょう。3. ポート変更後の動作確認手順
# サーバ内部で listen しているか確認する # ss -tlnp | grep httpd LISTEN 0 511 0.0.0.0:8080 0.0.0.0:* users:(("httpd",pid=1234,fd=4)) # 外部から接続できるか確認する # curl -I http://サーバIP:8080/ HTTP/1.1 200 OK Server: Apache/2.4.62 (Rocky Linux)
ss → firewall-cmd --list-all → クラウドSGの順で原因切り分けすると最短です。Apacheサーバーの設定を体系的に学びたい方へ
ポート設定はApacheサーバー構築の基本スキルです。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:Apacheで接続クライアント数を設定する
- 前のページへ:KeepAliveを利用してApacheのパフォーマンスを向上させる
- この記事の属するカテゴリ:Apache・Linuxtips・Webサーバー管理・サーバー管理へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます