私のアプリケーションが動作している別のコンテナにコンテナ内のnginxリバースプロキシを設定しようとしています。ここに私のnginx.confは次のとおりです。Docker nginxリバースプロキシが502の不正なゲートウェイを返します。 "上流への接続中に接続が拒否されました"
daemon off;
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
upstream appserver {
server app:3000;
}
server {
listen 80;
server_name localhost;
location/{
proxy_pass http://appserver/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
}
}
マイドッキングウィンドウ-compose.ymlは、次のようになります。
version: '3'
services:
db:
image: postgres
redis:
image: redis
web:
build: ./web
image: web
ports:
- "8080:80"
app:
build: ./app
image: app
command: puma
volumes:
- ./app:/app
expose:
- "3000"
ports:
- "3000:3000"
depends_on:
- db
- redis
- web
Dockerfileリバースプロキシのため、単純にコピーする設定ファイルとnginxのサービスを開始します。ここに問題があります:
ホストのブラウザでlocalhost:8080にアクセスすると、nginxは502 Bad Gatewayを返します。ログは、 "web_1 | 2017/02/26 22:55:15 [エラー] 12#12:*アップストリームのクライアントに接続中にconnect()が失敗しました(111:Connection refused):172.25.0.1、server:localhost、リクエスト: "GET/HTTP/1.1"、上流: "http://127.0.53.53:3000/"、ホスト: "localhost:8080" web_1 | 172.25.0.1 - [26/Feb/2017:22:55:15 +0000] "GET/HTTP /1.1 "502 576" - "Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(GeckoのようなKHTML)Chrome/56.0.2924.87 Safari/537.36" " - " "
すぐにすぐに私はnginxが私のアプリケーションコンテナにアクセスすることはできませんが、 "ウェブ"コンテナ内の "カールアプリ:3000"を実行すると、適切な応答を返すと思っています。また、ポートが転送されると、ポート3000でアプリに直接アクセスすることもできます。だから私は、そのリソースにアクセスしようとしている方法について、自分のnginx.confに問題があるように感じています。私はしばらくの間、この壁に頭を叩いていました。何か案は?
"上流:" http://127.0.53.53:3000/ ""がログからのそのエラーメッセージのどこから来るのかわかりません。 nslookupは172.25.0の 'app'のための適切なIPを返します。* – adam
あなたの 'web'コンテナはあなたの' app'コンテナではなく、 'depends_on'ではないでしょうか?起動時にエラーが表示される場合があります。 – jkinkead
@jkinkeadは本当に問題でした。周囲の人たちにそれを直してもらいました。ありがとう。 – adam