当前位置: 首页 > 知识库问答 >
问题:

Nginx连接在连接到Docker容器中的Node.js上游时被拒绝

段干英杰
2023-03-14

我有以下设置:

此外,在node.js进程stdout/stderr中没有错误或崩溃的迹象。

以下是我看到的错误:

2014/07/31 12:48:54 [error] 15#0: *10 connect() failed (111: Connection refused) while connecting to upstream, client: 172.17.42.1, server: f074d2f4389f, request: "GET /users/me HTTP/1.1", upstream: "http://[::1]:3000/users/me", host: "xxx.xxx.com", referrer: "https://xxx.xxx.com/"

会有什么问题?

[supervisord]
nodaemon=true
logfile=/var/log/supervisor/supervisord.log    ; supervisord log file
logfile_maxbytes=50MB                           ; maximum size of logfile before rotation
logfile_backups=10                              ; number of backed up logfiles
loglevel=info                                  ; info, debug, warn, trace
pidfile=/var/run/supervisord.pid                ; pidfile location
childlogdir=/var/log/supervisor/               ; where child log files will live"
[include]
files = /etc/supervisor/conf.d/supervisord.conf

[program:api]
command=node api-cluster.js
directory=/src
autorestart=true
startretries=100000000
stdout_logfile=/var/log/supervisor/api_stdout.log
stderr_logfile=/var/log/supervisor/api_stderr.log

[program:nginx]
command=/usr/sbin/nginx
autorestart=true
startretries=100000000
stdout_logfile=/var/log/supervisor/nginx_stdout.log
stderr_logfile=/var/log/supervisor/nginx_stderr.log"
# -------------------------------------------------------------------
#                         Nginx configuraiton
# -------------------------------------------------------------------

worker_processes 4;
daemon off;

error_log   stderr  info;
pid         /var/run/nginx.pid;

events {
    #use epoll;
    worker_connections 768;
}

http {
    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include     /etc/nginx/mime.types;
    default_type application/octet-stream;

    log_format main 'ip=\$http_x_real_ip [\$time_local] '
    '"\$request" \$status \$body_bytes_sent "\$http_referer" '
    '"\$http_user_agent"' ;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    upstream app_proxy {
        server localhost:3000;      # nodejs server
    }

    server {
        listen          80 deferred;
        server_name     \$hostname;
        access_log      /dev/stdout main;

        location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|scripts/|views/|styles/|bower_components/|robots.txt|humans.txt|favicon.ico|home/|html|xml) {
            root /src/web/public;
            access_log off;
            expires max;
        }

        location / {
            proxy_redirect off;
            #proxy_set_header X-Real-IP \$remote_addr;
            #proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto \$scheme;
            proxy_set_header Host \$http_host;
            proxy_set_header X-NginX-Proxy true;
            proxy_intercept_errors off;
            proxy_pass       http://app_proxy/;
        }
    }
}

共有1个答案

黄靖
2023-03-14

Nginx连接到IPv6环回[::1]上的nodejs。nodejs可能只是在监听IPv4。

尝试设置

upstream api {
    server 127.0.0.1:5000;
}
 类似资料:
  • 试图在localhost中建立从app容器到mysql容器的连接,出现连接拒绝异常 我们正在采取一种docker的方法来调用rest api服务来采用微服务的方法。我们正在建立应用程序容器和mysql容器之间的连接,同时我们编写了一个docker-compose文件,创建了mysql容器和应用程序容器,为这两个容器公开了端口。下面是运行docker-compose文件docker-compose

  • 问题内容: 我正在使用Nginx和Gunicorn配置Django项目。 在Nginx服务器中访问端口时,我的错误日志文件中出现以下错误; 2014/05/30 11:59:42 [crit] 4075#0:* 6 connect()到127.0.0.1:8001在连接到上游时失败(13:权限被拒绝),客户端:127.0.0.1,服务器:localhost,请求:“ GET / HTTP / 1.

  • 我知道有很多关于502坏网关的帖子,但是我还没有解决这个问题。我正在使用Docker Comment为Nginx和PHP-FPM创建单独的容器。 错误我得到加载PHP文件在浏览器(超文本标记语言文件渲染罚款): 我已经试着使用Unix套接字等工具调整各种配置好几个小时了,但仍然收到502个PHP文件错误。你能看出什么地方不对劲吗? 这是所有必需的文件。。 多克作曲家。yml: docker/ngi

  • 我正在运行2个spring boot应用程序:一个客户端和rest-api。客户机与rest-api通信,rest-API与mongodb数据库通信。所有3层都在docker容器中运行。 我启动容器,通常指定docker文件中公开的端口,并将它们映射到主机上的端口,例如:-p 7070:7070,其中7070是docker文件中公开的端口。 当我通过< code > Java-jar[applic

  • 我试图构建多个服务,并用Nginx反向代理它们。 所以service1是: http://api/service1(nginx)=>docker(http://service1:4001/)=>express(http://localhost:4000) 这是我第一次从头开始尝试nginx,我被困住了,我无法从http://localhost:80/service1或http://api/serv

  • 注意:最后一个###.##.###.####是运行代码的google compute VM的外部IP。我相信前两个IP是我的家IP。 在连接到上游:[nginx]时,我尝试了:上的