Node.js 带有停靠节点的Nginx

Node.js 带有停靠节点的Nginx,node.js,nginx,docker,proxypass,Node.js,Nginx,Docker,Proxypass,我有一个已停靠的NodeJS应用程序,还有一个NGINX docker容器,用于在docker容器中的NodeJS进程之间进行负载平衡。我能够成功地卷曲两个NodeJs服务器,但NGINX找不到上游服务器 以下是nginx配置: upstream app { least_conn; # Use Least Connections strategy server 127.0.0.1:3000; # NodeJS Server 1 server

我有一个已停靠的NodeJS应用程序,还有一个NGINX docker容器,用于在docker容器中的NodeJS进程之间进行负载平衡。我能够成功地卷曲两个NodeJs服务器,但NGINX找不到上游服务器

以下是nginx配置:

upstream app {
    least_conn;              # Use Least Connections strategy
    server 127.0.0.1:3000;   # NodeJS Server 1
    server 127.0.0.1:3001;   # NodeJS Server 2
}
server {
    listen 80;
    server_name example.com;

    access_log /var/log/nginx/example.com-access.log;
    error_log  /var/log/nginx/example.com-error.log error;

    # Browser and robot always look for these
    # Turn off logging for them
    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt  { log_not_found off; access_log off; }

    # Handle static files so they are not proxied to NodeJS
    # You may want to also hand these requests to other upstream
    # servers, as you can define more than one!
    location ~* (images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico) {
      root /usr/share/nginx/html;
    }

    # pass the request to the node.js server
    # with some correct headers for proxy-awareness
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://app/;
        proxy_redirect off;

        # Handle Web Socket connections
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    # Proxy requests to the mobile api to the mobile api servers (old version of Android App uses m.goodrx.com URLs)
    location /mobile-api {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://www.goodrx.com/mobile-api;
        proxy_redirect off;

        # Handle Web Socket connections
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

然后启动节点容器绑定端口3000和3001以及nginx容器绑定端口80。当卷发127.0.0.1:80时,我收到一个错误的请求,但卷发127.0.0.1:3000和127.0.0.1:3001有效。知道NGINX代理会出什么问题吗?

127.0.0.1,或者localhost指向NGINX容器。您可以查看我的答案,但基本上您需要使用
--add host docker:
运行nginx容器,然后更改nginx配置:

upstream app {
    least_conn;              # Use Least Connections strategy
    server docker:3000;   # NodeJS Server 1
    server docker:3001;   # NodeJS Server 2
}