🔄 NGINX (公開ポート) の変更手順
概要
Docker InfrastructureのエントリーポイントであるNGINXは、デフォルトで 443 番ポート (HTTPS) を使用します。 ポート競合やネットワーク要件により、これを変更する場合(例: 8443 に変更)の手順です。
重要
NGINXのポートは「外部からの入り口」であるため、変更した場合、URLも https://local.dev:8443 のようにポート番号付きでアクセスする必要があります。
変更手順
ポートを 443 から 8443 に変更する場合を例にします。
1. NGINX設定の修正 (nginx.conf)
srcs/requirements/nginx/conf/nginx.conf の listen 指示句を変更します。
server {
# 変更前
listen 443 ssl;
listen [::]:443 ssl;
# 変更後
listen 8443 ssl;
listen [::]:8443 ssl;
# ...
}2. Dockerfileの修正
srcs/requirements/nginx/Dockerfile の EXPOSE 指示句を更新します。
# 変更前
EXPOSE 443
# 変更後
EXPOSE 84433. Docker Composeの修正
srcs/docker-compose.yml のポートマッピングを変更します。
nginx:
# ...
ports:
# Host:Container
# 変更前
- "443:443"
# 変更後
- "8443:8443"4. 環境設定の更新 (重要)
ポートを変更した場合、コンテナの再構築だけでなく、ファイアウォールやVMの設定変更も必要です。
1. サービス再構築
make down
docker compose -f srcs/docker-compose.yml up -d --build nginx2. ファイアウォール (UFW)
ゲストOS内で新しいポートを許可します。
sudo ufw allow 8443/tcp
# sudo ufw delete allow 443/tcp # 必要であれば古いポートを削除3. VMポートフォワーディング (VirtualBox/UTM)
これが最も忘れがちな手順です。 仮想マシンを使用している場合、ホストOS(自分のPC)からゲストOSへの転送設定も変更してください。
- 設定例:
- Host Port:
8443-> Guest Port:8443
- Host Port:
5. WordPress設定の修正 (重要)
NGINXのポートを変えても、WordPressが「自分のURLはポート443だ」と思っていると、アクセス時に古いポート(https://.../)へリダイレクトしてしまい、接続できません(301 Moved Permanently)。 恒久的に対応するには、WordPress起動時(setup.sh)に正しいURLをセットするようにします。
setup.sh の修正
srcs/requirements/wordpress/tools/setup.sh の末尾(exec "$@" の直前)に以下を追加します。
# ポート変更対応: 常に現在のポート付きURLを設定
# (すでに設定されていても上書き更新するため、ポートを戻す際も値を変更するだけで済みます)
wp option update home 'https://local.dev:8443' --allow-root
wp option update siteurl 'https://local.dev:8443' --allow-rootこうすることで、コンテナ再起動のたびに正しいURLが適用されます。
6. Website (OAuth API) 設定の修正 (重要)
WordPressだけでなく、Bonus Websiteも認証機能(OAuth API)を使用しているため、ポート変更の影響を受けます。 変更後、ログインボタンを押すと「The redirect uri included is not valid.」というエラーが出たり、接続タイムアウトが発生することがあります。
1. server.js のコールバックURL修正
デフォルトではポートなし(443)のURLが生成されてしまうため、ポート付きのURLになるように修正します。
srcs/requirements/bonus/website/server.js:
// 修正前
// const callbackURL = `https://${DOMAIN_NAME}${BASE_URL}/auth/42/callback`;
// 修正後 (ポート番号 :8443 を明示)
const callbackURL = `https://${DOMAIN_NAME}:8443${BASE_URL}/auth/42/callback`;2. 42 Intranet アプリ設定の更新
OAuth APIのセキュリティ設定(Redirect URI)に、新しいポート付きのURLを追加する必要があります。
- 42 Intranet のアプリ設定ページ (Edit) を開く。
- Redirect URI のリストに以下を追加する。
https://local.dev:8443/website/auth/42/callback
- 保存する。
TIP
Redirect URIは複数登録可能です。既存の 443 用設定(ポートなし)を削除する必要はありません。
✅ 動作確認
ブラウザからアクセスする際、URLにポート番号を含める必要があります。
- URL:
https://local.dev:8443
TIP
ポート番号を指定しない場合(https://local.dev)、ブラウザは自動的に 443 に接続しようとして失敗します。
コンテナ間通信での確認
他のコンテナ(例: WordPress)から、内部ネットワーク経由でNGINXの新しいポートに接続できるか確認する方法です。
# WordPressコンテナからNGINX (8443) へ接続確認
docker compose -f srcs/docker-compose.yml exec wordpress curl -kI https://nginx:8443成功時の出力例:
HTTP/1.1 200 OK
Server: nginx/1.26.2
...※ curl: (7) Failed to connect と出る場合は、ポート設定かファイアウォール(コンテナ内ではなくホスト側UFWなど)ではなく、NGINXの設定 (listen) が間違っている可能性があります。