외부 네트워크에서 Docker 호스팅 웹 서버에 액세스할 수 없습니다.

외부 네트워크에서 Docker 호스팅 웹 서버에 액세스할 수 없습니다.

나는 작은 개인 웹사이트를 virtualbox VM에서 내 개인용 컴퓨터에 호스팅되는 Docker 컨테이너로 마이그레이션하는 중입니다. 하지만 인터넷에서 해당 컨테이너에 연결하려고 할 때(Wi-Fi 없이 휴대폰으로 시도) "연결 시간 초과"가 발생하는 문제가 발생합니다. 동일한 네트워크의 다른 컴퓨터에서는 작동합니다.

지금까지 제가 테스트한 내용은 다음과 같습니다.

지역 네트워크

http://localhost를 사용하면 모든 것이 잘 작동하고http://192.168.1.10네트워크의 다른 컴퓨터에서

나는 그 테스트를 통해 내 컴퓨터와 docker 구성이 해당 컴퓨터 외부에서 서버에 액세스할 수 있도록 제대로 작동하고 있음을 이해합니다.

인터넷에서

내 인터넷 게이트웨이에는 포트 전달 설정이 있습니다. 192.168.1.15로 리디렉션하면 VM 서버에 올바르게 액세스할 수 있습니다.

192.168.1.10으로 리디렉션할 때 게이트웨이 시간 초과가 발생 하고 포트 확인 도구에 포트 80이 닫혀 있다고 표시됩니다.

나는 그 테스트를 통해 내 ISP가 방해가 되지 않고 내 게이트웨이가 데이터를 올바른 IP로 올바르게 전달하고 있음을 이해합니다. 또한 클라이언트 측(내 전화/전화 제공업체)에서는 문제가 되지 않습니다.

유용한 구성

  • 도커 작성 구성:
    version: "3.7"
    services:    
        proxy:
            image: nginx:stable
            ports:
                - "80:80"
            volumes:
                - ./proxy/conf.d:/etc/nginx/conf.d
  • ./proxy/conf.d/site.conf
    server {
        listen 80;
        server_name example.com;     # not actual DNS, but it doesn’t seem to be in cause.

        location / {
            deny all;
        }   
    }

예,잘되네사실 지금 당장 403 금지 오류가 발생했다는 뜻이에요

  • 게이트웨이 포트 전달(ui에서) 포트 80에서 포트 80 호스트 192.168.10
  • Virtualbox vm 네트워크는 브리지로 구성되며 IP는 192.168.1.15입니다.
  • 작성된 모든 내부 IP는 고정되어 있습니다. 토폴로지

다른 정보가 필요할 경우 알려주세요.

제외된

문제가 해결될 때까지 SSL 및 DNS 변수를 의도적으로 제외했습니다. 나중에 구성하겠습니다.

모든 부분이 개별적으로 잘 작동하는 것처럼 보이지만 확실히 뭔가가 빠졌기 때문에 점검할 다른 항목에 대한 아이디어를 주로 보고 있습니다.

편집: 원격 컴퓨터에서 컬 명령의 닫힌 포트/시간 초과 문제 출력을 좀 더 살펴보았습니다.

$  curl -v --output - 142.#.#.#
*   Trying 142.#.#.#:80...
* Connected to 142.#.#.# (142.#.#.#) port 80 (#0)
> GET / HTTP/1.1
> Host: 142.#.#.#
> User-Agent: curl/7.83.1
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 502 Connection timed out
< Date: Wed, 01 Jun 2022 16:34:06 GMT
< Connection: close
< Cache-Control: no-store
< Content-Type: text/html
< Content-Language: en
< Content-Length: 219
< 
<HEAD><TITLE>Connection timed out</TITLE></HEAD>
<BODY BGCOLOR="white" FGCOLOR="black">
<FONT FACE="Helvetica,Arial"><B>
 Connection timed out</B></FONT>

<!-- default "Connection timed out" response (502) -->
</BODY>
* Closing connection 0

포트 체크 출력

$ nmap 142.#.#.# -p 81
...
Host is up (0.077s latency).

PORT   STATE    SERVICE
80/tcp open     http


$ nc -zvw10 142.#.#.# 80
...
[142.#.#.#] 80 (http) open

그런데 처음에 사용한 ping.eu에는 아직도 닫혀 있는 상태로 표시되어 있습니다. 그들이 그것을 어떻게 확인하고 있는지 잘 모르겠습니다

관련 정보