Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

I can't access to my nginx server in docker in wsl2 via my web-browser #12303

Open
1 of 2 tasks
WS-w-ID opened this issue Nov 21, 2024 · 14 comments
Open
1 of 2 tasks

I can't access to my nginx server in docker in wsl2 via my web-browser #12303

WS-w-ID opened this issue Nov 21, 2024 · 14 comments

Comments

@WS-w-ID
Copy link

WS-w-ID commented Nov 21, 2024

Windows Version

Microsoft Windows [version 10.0.22631.4460]

WSL Version

2.3.26.0

Are you using WSL 1 or WSL 2?

  • 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:

  1. I can access to it by POSTMAN or curl http://localhost:80 in cmd;
  2. I found it can works when I use wireshark to analyze. But it does't work when I stop wireshark;
  3. I have try to stop the firewall of my windows, it still does't work;
  4. In addition, I use clash in my windows, but there is setting of Bypass for local;

Diagnostic Logs

No response

Copy link

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 wsl-gh-logs@microsoft.com 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:

Closed similar issues:

Note: You can give me feedback by thumbs upping or thumbs downing this comment.

Copy link

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

@WS-w-ID
Copy link
Author

WS-w-ID commented Nov 21, 2024

Copy link

Diagnostic information
.wslconfig found
Detected appx version: 2.3.26.0

@OneBlue
Copy link
Collaborator

OneBlue commented Nov 23, 2024

@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.

1 similar comment
@OneBlue
Copy link
Collaborator

OneBlue commented Nov 23, 2024

@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
Copy link
Author

WS-w-ID commented Nov 23, 2024

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.

@borjamunozf
Copy link

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?

@Xxproner
Copy link

Xxproner commented Dec 5, 2024

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?

@WS-w-ID
Copy link
Author

WS-w-ID commented Dec 5, 2024

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.

@WS-w-ID
Copy link
Author

WS-w-ID commented Dec 5, 2024

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.

@Xxproner
Copy link

Xxproner commented Dec 7, 2024

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.

@WS-w-ID
Copy link
Author

WS-w-ID commented Dec 9, 2024

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.

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.

@NONOThingC
Copy link

I have the same issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants