Linux/Fedora、NginX-Docker、IPV6 に関する問題

Linux/Fedora、NginX-Docker、IPV6 に関する問題

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)。tcp6gitと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;
        }

    }
}

関連情報