こぼれネット

https://wp.kobore.net/2025/12/28/post-23393/ を前提知識として、EC2-2の同一LANの他のホストから,https://192.168.0.3を実現するメモを纒めて下さい

了解しました。
以下は ご提示の
https://wp.kobore.net/2025/12/28/post-23393/

前提知識として固定し、その上で

EC2-2(WSL2 上)で動いている Web サービスを、
同一 LAN 内の他ホストから
https://192.168.0.3/ で安定的にアクセス可能にするための実運用メモ

を、抜け・省略なし/再現可能/将来読み返しても壊さない形でまとめます。

(※「なぜその手順が必要か」もすべて明示します)


EC2-2(WSL2)を LAN 内から

https://192.168.0.3/ で公開するための確定メモ


0. ゴールと非ゴール

ゴール

非ゴール(今回はやらない)


1. 全体構成(完成形)

[LAN 内の別PC ブラウザ]
        |
        | https://192.168.0.3
        v
[Windows ホスト]
  443 / 80
        |
        | portproxy
        v
[WSL2: ubuntu-ec2-2]
  nginx (TLS終端)
        |
        | http://127.0.0.1:18080
        v
[docker compose]
  reverse-proxy (18080)
        |
        +--> api (FastAPI)
        +--> EC2-1 media (HLS / thumbs)

2. 前提条件(成立していること)

Windows 側

WSL 側


3. mkcert による証明書(既存前提の整理)

3.1 作成済み証明書

mkcert 192.168.0.3 localhost 127.0.0.1 ::1

生成物:

SAN 含有:

LAN IP 直接指定に完全対応


4. 証明書を ubuntu-ec2-2 に配置

(※ 既定 Ubuntu ではなく ubuntu-ec2-2

wsl -d ubuntu-ec2-2
sudo mkdir -p /etc/nginx/ssl/192.168.0.3

sudo cp /mnt/c/Users/tomoi/Downloads/192.168.0.3+3.pem \
        /etc/nginx/ssl/192.168.0.3/cert.pem

sudo cp /mnt/c/Users/tomoi/Downloads/192.168.0.3+3-key.pem \
        /etc/nginx/ssl/192.168.0.3/key.pem

sudo chmod 644 /etc/nginx/ssl/192.168.0.3/cert.pem
sudo chmod 600 /etc/nginx/ssl/192.168.0.3/key.pem

5. ubuntu-ec2-2 に nginx を導入・常駐化

sudo apt update
sudo apt install -y nginx
sudo systemctl enable nginx

6. nginx(TLS 終端)設定

6.1 設定ファイル作成

/etc/nginx/sites-available/192.168.0.3.conf

server {
    listen 443 ssl;
    server_name 192.168.0.3;

    ssl_certificate     /etc/nginx/ssl/192.168.0.3/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/192.168.0.3/key.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://127.0.0.1:18080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
}

server {
    listen 80;
    server_name 192.168.0.3;
    return 301 https://$host$request_uri;
}

6.2 有効化

sudo ln -sf /etc/nginx/sites-available/192.168.0.3.conf \
           /etc/nginx/sites-enabled/

sudo nginx -t
sudo systemctl restart nginx

7. Windows → WSL の portproxy 設定

7.1 ubuntu-ec2-2 の IP を取得

wsl -d ubuntu-ec2-2 -- hostname -I

例:

172.29.11.141

7.2 portproxy 設定(管理者 PowerShell)

netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=443
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=80

netsh interface portproxy add v4tov4 `
  listenaddress=0.0.0.0 listenport=443 `
  connectaddress=172.29.11.141 connectport=443

netsh interface portproxy add v4tov4 `
  listenaddress=0.0.0.0 listenport=80 `
  connectaddress=172.29.11.141 connectport=80

確認:

netsh interface portproxy show all

8. Windows ファイアウォール

New-NetFirewallRule -DisplayName "Allow HTTPS 443" `
  -Direction Inbound -Action Allow -Protocol TCP -LocalPort 443 -Profile Any

New-NetFirewallRule -DisplayName "Allow HTTP 80" `
  -Direction Inbound -Action Allow -Protocol TCP -LocalPort 80 -Profile Any

9. LAN 内クライアント側(重要)

CA インストール(1回だけ)

  • rootCA.pem をクライアントにコピー

  • certlm.msc

  • ローカル コンピューター

  • 信頼されたルート証明機関

certmgr.msc(現在のユーザー)では不可


10. 動作確認

ubuntu-ec2-2 内

curl -kI https://127.0.0.1/

Windows 自身

https://192.168.0.3/

LAN 内別 PC

https://192.168.0.3/

🔒 が表示されれば成功。


11. よく壊れる原因(実体験ベース)

原因 症状
WSL IP 変更 無言で https が死ぬ
portproxy が旧IP curl が通らない
nginx が別ディストリ 設定が反映されない
CA を Current User に入れた Chrome/Edge が警告

12. 固定化(強く推奨)

WSL IP 変動対策

PowerShell スクリプト:

# C:\scripts\wsl_https_fix.ps1
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=443
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=80

$wsl_ip = wsl -d ubuntu-ec2-2 -- hostname -I
$wsl_ip = $wsl_ip.Trim().Split(" ")[0]

netsh interface portproxy add v4tov4 `
  listenaddress=0.0.0.0 listenport=443 `
  connectaddress=$wsl_ip connectport=443

netsh interface portproxy add v4tov4 `
  listenaddress=0.0.0.0 listenport=80 `
  connectaddress=$wsl_ip connectport=80
タスクスケジューラ:

13. 最終まとめ(要点だけ)

 

モバイルバージョンを終了