web-dev-qa-db-ja.com

curl:(7)localhostポート8090への接続に失敗しました:接続が拒否されました

助けが必要。この問題の解決策を試みており、答えを見つけることができなかったか、むしろ私はまったく遭遇しませんでした。

リバースプロキシとして機能する、NGINXを備えたdockerコンテナーがあります。 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にアクセスすると、次のエラーが表示されます。

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" "-"

ホストマシンのURLにアクセスしようとしました

(シンプルなHTMLサイト、シンプルなHTMLのみを含む単一ページ、IISすべてに匿名アクセスが許可されています。)

curl localhost:8090

次のエラーを取得します。

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

DockerとNGINXは初めてです。ホストマシンのURLにアクセスできるかどうかを知りたいですか?はいの場合、どこが間違っていますか。

127.0.0.1:8090の代わりにgoogle.co.inを使用すると、同じ構成が機能します。

ありがとう。

7
Babu Reddy

Dockerコンテナー内のlocalhostおよび127.0.0.1はコンテナ自体を指します。コンテナでdockerdを実行しているホストマシンにアクセスするには、ネットワーク上の別のマシンであるかのように、パブリックホスト名/ IPでホストを参照する必要があります。

15
Robin479