WSL 端口映射
在使用 Windows Subsystem for Linux (WSL) 进行开发时,可能会需要在 WSL 中使用本地 Windows 上的应用或服务。为实现这一需求,我们可以使用端口映射的方式将 WSL 中的应用绑定到对应的本地端口上,以实现与本地应用或服务的交互。
端口映射的原理
端口映射是一种通过将本地主机的一个端口号绑定到特定的网络服务或进程,来使得用户可以访问远程服务的网络技术。在 WSL 中,我们可以使用端口映射技术来让 WSL 中的应用可以通过本地端口来访问本地服务,从而实现与本地服务的交互。
对于 WSL 中的应用来说,它们通常会使用 localhost 或 127.0.0.1 来访问本地服务。但是在 WSL 中,这些地址并不能够直接访问到本地的主机,因此需要进行端口映射来让 WSL 中的应用可以通过本地端口来访问本地服务。
端口映射的使用
端口映射可以使用 Windows 的 netsh 命令来实现,具体的步骤如下:
- 打开 Windows 终端,并以管理员身份运行。
-
在终端中使用以下命令来添加端口映射规则:
netsh interface portproxy add v4tov4 listenaddress=<WSL IP> listenport=<WSL 端口> connectaddress=<本地 IP> connectport=<本地端口>
其中,
例如:
假设 WSL 中的应用监听的端口为 8080,本地服务运行在 127.0.0.1:80 上,可以使用以下命令来进行端口映射:
netsh interface portproxy add v4tov4 listenaddress=172.18.66.48 listenport=8080 connectaddress=127.0.0.1 connectport=80
- 确认端口映射规则已经添加成功:
netsh interface portproxy show v4tov4
- 在 WSL 中通过 localhost 或 127.0.0.1 来访问本地服务,即可实现与本地服务的交互。
示例代码
下面是一个在 WSL 中使用端口映射来访问本地 Nginx 服务的示例代码:
- 首先在本地 Windows 主机上启动 Nginx 服务,将其绑定到本地 8000 端口:
nginx.exe -p . -c nginx.conf -g "daemon off;"
- 在 WSL 中执行以下命令来添加端口映射规则,将 WSL 中的 8080 端口映射到本地 Windows 主机的 8000 端口:
netsh interface portproxy add v4tov4 listenaddress=172.18.66.48 listenport=8080 connectaddress=127.0.0.1 connectport=8000
- 在 WSL 中访问 localhost:8080 即可实现与本地 Nginx 服务的交互:
curl http://localhost:8080/
结论
通过端口映射技术,我们可以很方便地实现 WSL 中的应用与本地应用或服务之间的交互。在实际开发过程中,端口映射技术可以帮助我们在 WSL 中使用一些必要的本地服务,加强了我们的开发效率。