web-dev-qa-db-ja.com

アップストリームへの接続中にdockernginx接続が拒否されました

光沢のあるサーバーを使用してポート3838でWebアプリを構築していますが、サーバーでnginxを使用するとうまく機能します。しかし、サーバーでnginxを停止して、docker nginxを使おうとすると、サイトで「502-Bad Gate Way」エラーが発生し、nginxログに次のように表示されます。

2016/04/28 18:51:15 [error] 8#8: *1 connect() failed (111: Connection refused) while connecting to upstream, ...

私はこのコマンドでdocker-nginxをインストールします:

Sudo docker pull nginx

私のドッカーのコマンドラインは次のようなものです(明確にするためにインデントを追加します):

Sudo docker run --name docker-nginx -p 80:80 
    -v ~/docker-nginx/default.conf:/etc/nginx/conf.d/default.conf
    -v  /usr/share/nginx/html:/usr/share/nginx/html nginx

ホームディレクトリに「docker-nginx」という名前のフォルダーを作成し、nginx confファイルをこのフォルダーに移動して、念のため、etc/nginx dirにある元のconfを削除します。

私のnginx confファイルは次のようになります:

server {
    listen 80 default_server;
    # listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
            proxy_pass http://127.0.0.1:3838/;
            proxy_redirect http://127.0.0.1:3838/ $scheme://$Host/;
            auth_basic "Username and Password are required";
            auth_basic_user_file /etc/nginx/.htpasswd;
            # enhance the performance
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $Host;
    }
}
6
jjdblast

アップストリームを直接定義する必要があります。現在、nginxはWebアプリケーションにプロキシできません。

http://nginx.org/en/docs/http/ngx_http_upstream_module.html

upstream backend {
    server backend1.example.com       weight=5;
    server backend2.example.com:8080;
    server unix:/tmp/backend3;

    server backup1.example.com:8080   backup;
    server backup2.example.com:8080   backup;
}

server {
    location / {
        proxy_pass http://backend;
    }
}
7