WSL2に外部から 127.0.0.1/8 でアクセスできない
問題
WSLのApacheなどは、127.0.0.1、127.0.0.2、127.0.0.3、……でアクセスできて、開発やテストに便利だったのですが、
WSL2はアクセスができないです。同じようなことはできないのですか?
答え
WSL2のLinuxは127.0.0.1でlocalhostにアクセスできる。内部からは問題ない。
$ curl 127.0.0.1 → ちゃんと返ってくる
WSL2のLinuxが127.0.0.1でlistenしていても、Windowsは ::1 に変換するので、外部からのアクセスはうまくいかないらしい。
以下のような対応が簡単でよいと思われる。
IPv6でアクセスする
ブラウザに入力するアドレスや、curlでアクセスするときなどは以下のようにする
http://[::1]/xxx/yyy
IPアドレスが1個しかないが仕方ない。
localhostでアクセスする
localhostでも到達可能
http://localhost/xxx/yyy
localhostのサブドメインも使える。127.0.0.1/8 と似たような感覚。
VirtualHostを使い分けることもできて便利。
http://test.localhost/ http://dev.localhost/ dev2.localhost dev3.localhost dev4.localhost php5.localhost php7.localhost php8.localhost
メッチャクチャ遅い仮想の開発環境の改善2 – NBK-Dev 2022年10月13日 15:05
[…] で、「んんん・・・ホスト名どうしようかなぁ・・・」となんとな~くダラダラとネットサーフィンしていたら、localhostのサブドメインでいいじゃん!とこちらのサイトで教えてもらいました。 さっそくApacheとNginxのヴァーチャルホストを書き換えて、WSLを再起動したところ・・・・バッチリでした! […]