I can't access to my nginx server in docker in wsl2 via my web-browser
Windows Version
Microsoft Windows [version 10.0.22631.4460]
WSL Version
2.3.26.0
Are you using WSL 1 or WSL 2?
- [x] WSL 2
- [ ] WSL 1
Kernel Version
5.15.167.4-1
Distro Version
Ubuntu 20.04
Other Software
Docker Desktop (Windows), version v27.3.1
Repro Steps
- Start a docker desktop and nginx via WLS2
- Try to access via windows browser localhost:80 or 127.0.0.1:80
- Unable to access it.
Expected Behavior
can able to access it.
Actual Behavior
question: I can not access to my nginx server in docker in wsl2 via my local web-browser by http://localhost:80, it shows:ERR_CONNECTION_TIMED_OUT; And:
- I can access to it by POSTMAN or
curl http://localhost:80in cmd; - I found it can works when I use wireshark to analyze. But it does't work when I stop wireshark;
- I have try to stop the firewall of my windows, it still does't work;
- In addition, I use clash in my windows, but there is setting of Bypass for local;
Diagnostic Logs
No response
Logs are required for review from WSL team
If this a feature request, please reply with '/feature'. If this is a question, reply with '/question'. Otherwise please attach logs by following the instructions below, your issue will not be reviewed unless they are added. These logs will help us understand what is going on in your machine.
How to collect WSL logs
Download and execute collect-wsl-logs.ps1 in an administrative powershell prompt:
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/collect-wsl-logs.ps1" -OutFile collect-wsl-logs.ps1
Set-ExecutionPolicy Bypass -Scope Process -Force
.\collect-wsl-logs.ps1
The script will output the path of the log file once done.
If this is a networking issue, please use collect-networking-logs.ps1, following the instructions here
Once completed please upload the output files to this Github issue.
Click here for more info on logging If you choose to email these logs instead of attaching to the bug, please send them to [email protected] with the number of the github issue in the subject, and in the message a link to your comment in the github issue and reply with '/emailed-logs'.
View similar issues
Please view the issues below to see if they solve your problem, and if the issue describes your problem please consider closing this one and thumbs upping the other issue to help us prioritize it!
Open similar issues:
- Cannot connect to container ports in wsl2 (#12255), similarity score: 0.79
- Localhost is not accessible from windows in mirrored mode (#11172), similarity score: 0.74
Closed similar issues:
- WSL2: Unable to access Docker(in wsl2) on host (#11096), similarity score: 0.81
- localhost:3000 / 127.0.0.1:3000 nodejs server unable to connect via windows browsers (#8509), similarity score: 0.75
- Connecting to local website from another computer on network (#5960), similarity score: 0.73
Note: You can give me feedback by thumbs upping or thumbs downing this comment.
The log file doesn't contain any WSL traces. Please make sure that you reproduced the issue while the log collection was running.
Diagnostic information
.wslconfig found
Detected appx version: 2.3.26.0
Found no WSL traces in the logs
Diagnostic information
.wslconfig found
Detected appx version: 2.3.26.0
@WS-w-ID: Does this work if you use another port with nginx, like port 8000 for instance ? Windows binds port 80 by default so this probably prevents port 80 from being bound by the WSL localhost relay.
@WS-w-ID: Does this work if you use another port with nginx, like port 8000 for instance ? Windows binds port 80 by default so this probably prevents port 80 from being bound by the WSL localhost relay.
I have tried to use port 8000, it still does't work. In addition, when I try to access the rabbitmq in my wsl2 via 'http://localhost:15672', it also does't work, but curl or postman can. So I suspect it's not a problem with nginx, because I can't access RabbitMQ's backend either. Is it because I can't access containers in Docker or my WSL2 at all via my web-browser.
An interesting thing that you mentioned:
- I found it can works when I use wireshark to analyze. But it does't work when I stop wireshark;
Do you mean that you're able to reach the localhost:8000 from browser only when wireshark is running?
This could be linked to https://github.com/microsoft/WSL/issues/11600#issuecomment-2187915259
are you using mirrored mode?
I have tried to use port 8000, it still does't work. In addition, when I try to access the rabbitmq in my wsl2 via 'http://localhost:15672', it also does't work, but curl or postman can. So I suspect it's not a problem with nginx, because I can't access RabbitMQ's backend either. Is it because I can't access containers in Docker or my WSL2 at all via my web-browser.
Did you use a Win or installed on wsl browser?
An interesting thing that you mentioned:
- I found it can works when I use wireshark to analyze. But it does't work when I stop wireshark;
Do you mean that you're able to reach the localhost:8000 from browser only when wireshark is running?
This could be linked to #11600 (comment)
are you using mirrored mode?
An interesting thing that you mentioned:
- I found it can works when I use wireshark to analyze. But it does't work when I stop wireshark;
Do you mean that you're able to reach the localhost:8000 from browser only when wireshark is running?
This could be linked to #11600 (comment)
are you using mirrored mode?
yes, it only work when wireshark is running. And mirrored mode is used.
I have tried to use port 8000, it still does't work. In addition, when I try to access the rabbitmq in my wsl2 via 'http://localhost:15672', it also does't work, but curl or postman can. So I suspect it's not a problem with nginx, because I can't access RabbitMQ's backend either. Is it because I can't access containers in Docker or my WSL2 at all via my web-browser.
Did you use a Win or installed on wsl browser?
It's just the Chorme browser in the Windows system. And I also tried other browsers like Edge, but it have the same problem.
I have tried to use port 8000, it still does't work. In addition, when I try to access the rabbitmq in my wsl2 via 'http://localhost:15672', it also does't work, but curl or postman can. So I suspect it's not a problem with nginx, because I can't access RabbitMQ's backend either. Is it because I can't access containers in Docker or my WSL2 at all via my web-browser.
Did you use a Win or installed on wsl browser?
It's just the Chorme browser in the Windows system. And I also tried other browsers like Edge, but it have the same problem.
Maybe docker launched on wsl has other ip address, not localhost:80 (127.0.0.1:80 it is the same). Could you try to type this line wsl -d Ubuntu hostname -i to cmd.exe, it displays wsl ip address. It may differ to 127.0.0.1. And try the ip address to ping it via a browser.
I have tried to use port 8000, it still does't work. In addition, when I try to access the rabbitmq in my wsl2 via 'http://localhost:15672', it also does't work, but curl or postman can. So I suspect it's not a problem with nginx, because I can't access RabbitMQ's backend either. Is it because I can't access containers in Docker or my WSL2 at all via my web-browser.
Did you use a Win or installed on wsl browser?
It's just the Chorme browser in the Windows system. And I also tried other browsers like Edge, but it have the same problem.
Maybe docker launched on wsl has other ip address, not localhost:80 (127.0.0.1:80 it is the same). Could you try to type this line
wsl -d Ubuntu hostname -ito cmd.exe, it displays wsl ip address. It may differ to 127.0.0.1. And try the ip address to ping it via a browser.
yes, I use the mirrored mode. I execute the code "wsl hostname -I", it displays my windows ip, and i use "hostAddressLoopback=true" in .wslconfig. But it still doesn't work via my browser.
I have the same issue.
A Windows Service to solve the problem:https://github.com/zcjie1/wsl2_network_fix
I have the same issue.