Fedora 38 Plasma KDE(ほぼ新しくインストール)でNginx-Dockerを設定しようとしています。 Nginxは、ポート3000でローカルに実行されているレスポンスサーバー(非ドッカー)に接続することでうまく機能します。ただし、Nginxはローカルで実行されているバックエンドサーバー(scala、http4s、non-docker)に接続できません。また、ポート5433と5432のdockerで2つのpostgresインスタンスが実行されており、バックエンドがこのポートに接続されています。
docker exec -it nginx-proxy curl host.docker.internal:4001/graphiql.html
curl: (7) Failed to connect to host.docker.internal port 4001 after 0 ms: Couldn't connect to server
curl localhost:4001/graphiql.html
# successful response
docker exec -it nginx-proxy curl host.docker.internal:3000
# successful response
curl localhost:3000
# successful response
netstatを使用すると、バックエンドサーバーはtcp6を使用し、React-serverは使用しないことを確認しました。 (tcpとtcp6のPostgres)。tcp6
gitとnpmを強制的に使用して問題が発生したため、これが目に見えますipv4
。
現在の質問が関連性があるかどうかわかりませんtcp6
。したがって、これは赤いニシンである可能性があります。 tcp6に関連するものなら、すべてが論理的に見える私のラップトップで実行されているので、ハードウェアではないようです。
$ netstat -anp | grep -E ':3000|:4001|:5433|:5432'
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 61886/node-18
tcp 0 0 0.0.0.0:5433 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN -
tcp6 0 0 127.0.0.1:4001 :::* LISTEN 59873/java
tcp6 0 0 :::5433 :::* LISTEN -
tcp6 0 0 :::5432 :::* LISTEN -
バックエンドサーバーを強制的にIPV4で実行またはDockerizeする方法を理解しようとするかもしれませんが、これがうまくいけば、おそらく次の12の予期しないIPV6問題が遅れるでしょう。
Nginx docker-compose.yml
version: '3.7'
services:
nginx:
image: nginx:alpine
container_name: nginx-proxy
restart: always
volumes:
- ./html:/usr/share/nginx/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./nginx.conf:/etc/nginx/nginx.conf
ports:
- '80:80'
extra_hosts:
- "host.docker.internal:host-gateway"
nginx.conf
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location /graphql {
proxy_pass http://host.docker.internal:4001/graphql;
}
location /graphiql.html {
proxy_pass http://host.docker.internal:4001/graphiql.html;
}
location / {
proxy_pass http://host.docker.internal:3000;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}