WSL2 上に構築した Nginx サーバーに、Windows の Web ブラウザからアクセスするための設定手順を、解説します。ポートフォワーディングの必要性についても補足で説明しています。
1. 前提条件
- WSL2 (Windows Subsystem for Linux 2) が構築済みであること
- Ubuntu などの Linux ディストリビューションが WSL2 にインストール済みであること
- 基本的なターミナルの操作ができること
2. Nginx のインストールと起動 (WSL2)
まずは、WSL2 で起動した Linux ディストリビューションのターミナルを開き、Nginx をインストールします。
sudo apt update # パッケージリストを更新
sudo apt install nginx # Nginx をインストール
インストール中にパスワードを求められたら、WSL2 に設定したユーザーのパスワードを入力してください。
Nginx のインストールが完了したら、以下のコマンドで起動します。
sudo systemctl start nginx # Nginx を起動
起動状態を確認するには、次のコマンドを実行します。active (running)
と表示されれば正常に起動しています。
sudo systemctl status nginx # Nginx の状態を確認
3. Windows ファイアウォールの設定
Windows のファイアウォールが Nginx のポート(通常は 80 番ポート)へのアクセスをブロックしている場合、アクセスを許可する必要があります。
- Windows のスタートメニューから「Windows Defender ファイアウォール」を検索して開きます。
- 「詳細設定」をクリックします。
- 左側のメニューから「受信の規則」を選択します。
- 右側の「操作」ペインから「新しい規則...」をクリックします。
- 「規則の種類」で「ポート」を選択し、「次へ」をクリックします。
- 「プロトコルおよびポート」で「TCP」を選択し、「特定のローカルポート」に「80」と入力し、「次へ」をクリックします。
- 「操作」で「接続を許可する」を選択し、「次へ」をクリックします。
- 「プロファイル」で、適用するネットワークの種類(通常はすべて)を選択し、「次へ」をクリックします。
- 「名前」に「Nginx (TCP-In)」など、わかりやすい名前を入力し、「完了」をクリックします。
4. WSL2 の IP アドレスの確認
WSL2 のターミナルで以下のコマンドを実行して、WSL2 の IP アドレスを確認します。
ip addr | grep eth0 | grep inet | awk '{print $2}' | cut -d'/' -f1
出力された IP アドレス(例:172.22.128.1
)をメモしておきます。
代替コマンド (上記でIPアドレスが取得できない場合):
hostname -I
スペース区切りでIPアドレスが複数表示される場合があります。基本的に最初のIPアドレスがWSL2のIPアドレスです。
5. Web ブラウザからのアクセス
Windows の Web ブラウザ(Chrome、Edge など)を開き、アドレスバーに以下の URL を入力してアクセスします。
http://[WSL2のIPアドレス]
例えば、WSL2 の IP アドレスが 172.22.128.1
だった場合、http://172.22.128.1
と入力します。
Nginx が正常に動作していれば、Nginx のデフォルトのウェルカムページが表示されるはずです。
6. ポートフォワーディングの要否と設定方法
通常、WSL2 は Windows とネットワークを共有するため、上記の手順でアクセス可能です。しかし、以下のケースではポートフォワーディングが必要になる場合があります。
- Windows のファイアウォールが厳格に設定されている場合: ファイアウォール設定だけではアクセスできない場合。
- 複雑なネットワーク構成の場合: VPN やプロキシなどを使用している場合。
- 特定のポート番号を使用したい場合: Nginx が動作するポートとは異なるポートでアクセスしたい場合。
ポートフォワーディングを行うには、管理者権限で PowerShell を起動し、以下のコマンドを実行します。
# Nginx が WSL2 で 80 番ポートで動作している場合
# Windows の 8080 番ポートへのアクセスを WSL2 の 80 番ポートに転送する例
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=80 connectaddress=(wsl ip addr | grep eth0 | grep inet | awk '{print $2}' | cut -d'/' -f1)
この設定を行うと、http://localhost:8080
または http://127.0.0.1:8080
で WSL2 上の Nginx にアクセスできます。
ポートフォワーディングを削除する場合は、以下のコマンドを実行します。
netsh interface portproxy delete v4tov4 listenport=8080 listenaddress=0.0.0.0
7. DNS 設定 (オプション)
上記 IP アドレスでのアクセスに加えて、hosts ファイルを編集して任意のドメイン名(例:mysite.local
)でアクセスできるようにすることも可能です。
- Windows のエディタ(管理者権限で起動)で
C:\Windows\System32\drivers\etc\hosts
を開きます。 - ファイルの末尾に
[WSL2のIPアドレス] mysite.local
のように追記して保存します。 - ブラウザで
http://mysite.local
にアクセスします。
8. トラブルシューティング
-
ページが表示されない:
- Nginx が起動しているか確認。
- Windows のファイアウォールでポート 80 が許可されているか確認。
- WSL2 の IP アドレスが正しいか確認。
- 必要に応じてポートフォワーディングを設定。
-
エラーメッセージが表示される:
- エラーメッセージの内容をよく読み、原因を特定。
- Nginx のログファイル(
/var/log/nginx/error.log
)にエラーの詳細が記録されている場合があります。
まとめ
この記事では、WSL2 上に構築した Nginx サーバーに Windows からアクセスするための手順を詳細に解説しました。通常はポートフォワーディングは不要ですが、必要に応じて設定することで、より柔軟な開発環境を構築できます。