WSLのWebアプリにWindowsから接続できない|localhostとポートの確認順
WSLでWebアプリを起動したのに、Windowsのブラウザーではページが開かないことがあります。再インストールを考える前に、アプリが動いている場所、待ち受けているポート、Windowsからの接続を順に見ると、原因を絞りやすくなります。
ここではWindowsから同じPC上のWSL 2へ接続する場面を、小さなHTTPサーバーで確かめます。Linux側にPython 3.7以降・curl・ssが利用できる環境を用意してください。Pythonの簡易サーバーはローカル確認用に使い、作業用の一時フォルダーだけを配信します。
起動している環境とURLを確認する
WindowsのPowerShellで、WSL本体の版と登録済み環境を表示します。
wsl --version
wsl --list --verbose
複数のUbuntuがある場合は、アプリを起動した環境の名前も確かめます。アプリの起動ログにあるポート番号と、ブラウザーへ入力したURLの番号が同じかも見てください。以下はhttp://127.0.0.1:8765/を使う例です。HTTPで起動したサーバーにHTTPSで接続するなど、方式が違っていてもページは開けません。
Linux側で確認用サーバーを起動する
WSLのLinux端末で、必要なコマンドが見つかることを確かめます。何も表示されないものがあれば、利用しているディストリビューションの方法で準備してから続けてください。
command -v python3
command -v curl
command -v ss
続けて同じ端末で次を実行します。mktemp -dで作る専用フォルダーに、表示を確かめるためのファイルを1枚置きます。
demo_dir=$(mktemp -d)
printf '%s\n' 'WSL localhost demo' > "$demo_dir/index.html"
python3 -m http.server 8765 --bind 127.0.0.1 --directory "$demo_dir"
この端末はサーバーの起動中、そのまま開いておきます。127.0.0.1へ明示的に待ち受けを限定した例です。すでに8765番が使われている場合は、空いている番号を選び、後続のURLと確認コマンドの番号も同じ値にしてください。
別のLinux端末で応答を確認する
同じディストリビューションの別の端末を開き、まずLinux内で応答するかを調べます。
curl --noproxy '*' --max-time 5 http://127.0.0.1:8765/
WSL localhost demo
この文字列が返れば、Linux側ではHTTPの応答が返っています。--noproxyは、この確認コマンドでプロキシを使わず直接つなぐ指定です。端末や組織全体のプロキシ設定を変更する操作ではありません。
応答しない場合は、待ち受けているポートも調べます。
ss -ltn '( sport = :8765 )'
サーバーが動いていれば、LISTENの行と127.0.0.1:8765が手掛かりになります。該当行がなければ、サーバー端末に戻って起動エラーや停止を調べます。ブラウザーやWindows側の設定を変える前に、この段階を通ると見直す場所を減らせます。
WindowsからTCP接続を確認する
Linux側で応答していることが分かったら、WindowsのPowerShellで確認します。
Test-NetConnection -ComputerName 127.0.0.1 -Port 8765 |
Select-Object ComputerName, RemotePort, TcpTestSucceeded
TcpTestSucceededがTrueなら、指定したポートへTCP接続できています。これはWebページの内容やアプリの正常性まで保証する結果ではありません。結果の読み方は、Test-NetConnectionでTCP接続を確認する方法でも紹介しています。
HTTPの応答とブラウザー表示を確認する
(Invoke-WebRequest -Uri 'http://127.0.0.1:8765/' -UseBasicParsing -TimeoutSec 5).Content
Windows側でもWSL localhost demoが返ったら、ブラウザーでhttp://127.0.0.1:8765/を開きます。最初はlocalhostという名前を使わずIPv4のループバックでそろえると、名前の解決先の違いを切り離して調べられます。
確認用ページは開けるのに普段のアプリが開けないなら、アプリの起動環境、ポート、URL、HTTP/HTTPS、起動ログを見比べてください。確認用ページもWindowsから開けない場合は、WSLのネットワーク設定やセキュリティ製品、プロキシの適用条件が次の手掛かりになります。
接続先の方向と公開範囲を見直す
Microsoftの資料では、NAT構成のWSLでもWindowsからLinuxのアプリへlocalhostで接続できます。一方、LinuxからWindows側へ接続する場合や、別のPCからWSLへ接続する場合は条件が変わります。今回のWindowsから同じPC上のWSLへの確認と、接続の向きを取り違えないようにしてください。
Windows 11の対応環境にはmirrored方式もありますが、localhostが開けないことだけで、設定変更が必要だと決まるわけではありません。利用中の方式と対象バージョンを公式資料で確認し、まず上の順で起動と到達性を調べると判断しやすくなります。0.0.0.0への待ち受け変更は接続を受け付ける範囲が広がるため、同じ意味の置き換えとして一律に行わないでください。
確認用サーバーを停止する
確認が終わったら、サーバーを起動したLinux端末でCtrl+Cを押して停止します。今回作った一時フォルダーは、そのサーバー端末で保持しているdemo_dirの場所です。必要な結果を確認した後、検証用のファイルだけを片付けてください。アプリを停止した後に同じポートへつながらなくなるのは、停止した状態として確認する結果です。
参考資料
-
前の記事
JavaScriptで数値をソートする|sortの比較関数と元配列を残す方法 2026.10.18
-
次の記事
Qi2モバイルバッテリー「QIROCA QP-10WA」レビュー|便利な点と気になる重さ 2026.10.19