2016-12-28 2 views
3

도움이 필요합니다. 이 문제에 대한 해결책을 찾으려고했지만 답변을 볼 수 없거나 오히려 어떤 문제도 발견하지 못했습니다.curl : (7) localhost 포트 8090에 연결하지 못했습니다. 연결이 거부되었습니다.

리버스 프록시로 작동하는 NGINX가있는 도커 컨테이너가 있습니다. Windows 용 Docker 버전 1.12.5 (9503).

upstream mysite { 
    server 127.0.0.1:8090; 
    #server localhost:8090; (have also tried this option) 
} 

server { 
    listen 0.0.0.0:80; 
    server_name localhost; 

    location/{ 
     proxy_pass http://mysite; 
    } 
} 

위의 코드에서 localhost : 8090은 내 호스트 컴퓨터의 IIS에서 호스팅되는 웹 사이트의 URL입니다. 내가 Nginx에에있는 URL에 액세스하면, 다음과 같은 오류를 얻을 다음과 같은 오류 얻기 호스트 시스템

(simple HTML site, single page with only simple html, hosted on IIS with anonymous access granted to all.)

curl localhost:8090 

에 URL을 액세스하려고

2016/12/27 08:11:57 [error] 6#6: *4 no live upstreams while connecting to upstream, client: 172.17.0.1, server: localhost, request: "GET/HTTP/1.1", upstream: "http://googlesite/", host: "localhost" 
172.17.0.1 - - [27/Dec/2016:08:11:57 +0000] "GET/HTTP/1.1" 502 173 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0" "-" 

:

curl: (7) Failed to connect to localhost port 8090: Connection refused 

Docker 및 NGINX에 익숙하지 않습니다. 호스트 컴퓨터에서 URL에 액세스 할 수 있는지 알고 싶습니까? 예, 그렇다면 내가 틀렸어.

127.0.0.1:8090 대신 google.co.in을 사용하면 동일한 구성이 적용됩니다.

감사합니다.

답변

10

도커 컨테이너 내에서 localhost127.0.0.1은 컨테이너 자체를 의미합니다. 컨테이너로 dockerd를 실행하는 호스트 시스템에 액세스하려면 호스트의 공용 호스트 이름/IP를 네트워크의 다른 시스템 인 것처럼 호스트를 참조해야합니다.

+1

감사합니다. 그것은 효과가 있었다. localhost를 사용하는 대신에 나는 호스트 네임을 사용했다. 아래의 수정 된 세부 정보 : '업스트림 mysite {서버 호스트 이름 : 8090; } ' '서버 { 수신 0.0.0.0:80; server_name localhost; 위치/{ proxy_pass http : // mysite; } } –