質問: プロキシ(nginx)が不正なゲートウェイエラーを表示する port 5000で実行するサービス(dockerレジストリ)があります。nginxをインストールして、httpリクエストを8080から5000にリダイレクトします。 localhost:5000へのカールを作成すると機能しますが、localhost:8080へのカールを作成するとbad gatewayエラーが発生します。nginx設定ファイル:upstream docker-registry { server localhost:5000; } server { listen 8080; server_name registry.mydomain.com; proxy_set_header host $http_host; proxy_set_header x-real-ip $remote_addr; client_max_body_size 0; chunked_transfer_encoding on; location / { proxy_pass http://docker-registry; } location /_ping { auth_basic off; proxy_pass http://docker-registry; } location /v1/_ping { auth_basic off; proxy_pass http://docker-registry; } } /var/log/nginx/error.logでは、[crit] 15595#0: *1 connect() to [::1]:5000 failed (13: permission denied) while connecting to upstream, client: 127.0.0.1, server: registry.mydomain.com, request: "get / http/1.1", upstream: "http://[::1]:5000/", host: "localhost:8080" 何か案が?
回答: エラーメッセージに基づいて、localhost:5000がipv6アドレスとして解決されているかどうかを確認します。あなたはそれを127.0.0.1:5000に変更してみることができます編集: proxy_pass行で、urlの一部が欠落している可能性がありますか? $ request_uriを追加してみてください:proxy_pass http://docker-registry/$request_uri; またはおそらく:proxy_pass http://docker-registry$request_uri; どちらが最も正しいかわからない。考慮すべきもう一つ。あなたの設定は示しています:server_name registry.mydomain.com; したがって、localhost:8080は一致しない可能性があります。テストの場合、これを次のように変更できます。server_name registry.mydomain.com localhost; 次に、localhost:8080とドメインが一致します。私は、registry.mydomain.comは単なる例であり、実際のサーバーのfqdnをそこに配置するとします。