Skip to content

🔄 NGINX (公開ポート) の変更手順

概要

Docker InfrastructureのエントリーポイントであるNGINXは、デフォルトで 443 番ポート (HTTPS) を使用します。 ポート競合やネットワーク要件により、これを変更する場合(例: 8443 に変更)の手順です。

重要

NGINXのポートは「外部からの入り口」であるため、変更した場合、URLも https://local.dev:8443 のようにポート番号付きでアクセスする必要があります。

変更手順

ポートを 443 から 8443 に変更する場合を例にします。

1. NGINX設定の修正 (nginx.conf)

srcs/requirements/nginx/conf/nginx.conflisten 指示句を変更します。

nginx
server {
    # 変更前
    listen 443 ssl;
    listen [::]:443 ssl;
    
    # 変更後
    listen 8443 ssl;
    listen [::]:8443 ssl;
    # ...
}

2. Dockerfileの修正

srcs/requirements/nginx/DockerfileEXPOSE 指示句を更新します。

dockerfile
# 変更前
EXPOSE 443

# 変更後
EXPOSE 8443

3. Docker Composeの修正

srcs/docker-compose.yml のポートマッピングを変更します。

yaml
  nginx:
    # ...
    ports:
      # Host:Container
      # 変更前
      - "443:443"
      
      # 変更後
      - "8443:8443"

4. 環境設定の更新 (重要)

ポートを変更した場合、コンテナの再構築だけでなく、ファイアウォールやVMの設定変更も必要です。

1. サービス再構築

bash
make down
docker compose -f srcs/docker-compose.yml up -d --build nginx

2. ファイアウォール (UFW)

ゲストOS内で新しいポートを許可します。

bash
sudo ufw allow 8443/tcp
# sudo ufw delete allow 443/tcp  # 必要であれば古いポートを削除

3. VMポートフォワーディング (VirtualBox/UTM)

これが最も忘れがちな手順です。 仮想マシンを使用している場合、ホストOS(自分のPC)からゲストOSへの転送設定も変更してください。

  • 設定例:
    • Host Port: 8443 -> Guest Port: 8443

5. WordPress設定の修正 (重要)

NGINXのポートを変えても、WordPressが「自分のURLはポート443だ」と思っていると、アクセス時に古いポート(https://.../)へリダイレクトしてしまい、接続できません(301 Moved Permanently)。 恒久的に対応するには、WordPress起動時(setup.sh)に正しいURLをセットするようにします。

setup.sh の修正

srcs/requirements/wordpress/tools/setup.sh の末尾(exec "$@" の直前)に以下を追加します。

bash
# ポート変更対応: 常に現在のポート付き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:

javascript
// 修正前
// 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を追加する必要があります。

  1. 42 Intranet のアプリ設定ページ (Edit) を開く。
  2. Redirect URI のリストに以下を追加する。
    • https://local.dev:8443/website/auth/42/callback
  3. 保存する。

TIP

Redirect URIは複数登録可能です。既存の 443 用設定(ポートなし)を削除する必要はありません。

✅ 動作確認

ブラウザからアクセスする際、URLにポート番号を含める必要があります。

  • URL: https://local.dev:8443

TIP

ポート番号を指定しない場合(https://local.dev)、ブラウザは自動的に 443 に接続しようとして失敗します。

コンテナ間通信での確認

他のコンテナ(例: WordPress)から、内部ネットワーク経由でNGINXの新しいポートに接続できるか確認する方法です。

bash
# WordPressコンテナからNGINX (8443) へ接続確認
docker compose -f srcs/docker-compose.yml exec wordpress curl -kI https://nginx:8443

成功時の出力例:

text
HTTP/1.1 200 OK
Server: nginx/1.26.2
...

curl: (7) Failed to connect と出る場合は、ポート設定かファイアウォール(コンテナ内ではなくホスト側UFWなど)ではなく、NGINXの設定 (listen) が間違っている可能性があります。

Released under the MIT License.