2016-12-28 129 views
3

ヘルプが必要です。この問題の解決策を試してきましたが、答えが見えなかったり、むしろ私は何も出てこなかったのです。curl:(7)localhostポート8090への接続に失敗しました:接続が拒否されました

私はリバースプロキシとして動作するNGINXを持つドッカーコンテナを持っています。 Docker for Windowsバージョン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でホストされているWebサイトの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 

ドッカーとNGINXの新機能です。ホストマシン上のURLにアクセスすることが可能かどうか知りたいですか?はいの場合は、どこが間違っていますか?

127.0.0.1:8090の代わりにgoogle.co.inを使用すると同じ設定が有効です。

ありがとうございました。

答えて

10

ドッキング用容器の内部では、localhostおよび127.0.0.1は、容器自体を指します。あなたのコンテナでdockerdを実行しているホストマシンにアクセスするには、あたかもネットワーク上の別のマシンであるかのように、その公開ホスト名/ IPでホストを参照する必要があります。

+1

ありがとうございます。出来た。 localhostを使用する代わりに、私はホスト名を使用しました。以下の変更されたconfの詳細: '上流のmysite {サーバのホスト名:8090; } ' 'サーバー{ listen 0.0.0.0:80; server_name localhost; 所在地/ { proxy_pass http:// mysite; } } –

関連する問題