Trouble with Nginx and Multiple Meteor/Nodejs Apps

后端 未结 2 2059
借酒劲吻你
借酒劲吻你 2020-12-24 09:33

I understand that multiple node.js, and I assume by extension Meteor, can be run on one server using Nginx. I\'ve got Nginx setup and running on a Ubuntu server just fine, I

2条回答
  •  梦毁少年i
    2020-12-24 10:11

    proxy_pass http://127.0.0.1:8002/1;  <-- these should be 
    proxy_pass http://**my_upstream_name**;  <--these
    

    then

    upstream my_upstream_name {  
    
    //Ngixn do a round robin load balance, some users will conect to / and othes to /app2
    
    server 127.0.0.1:8001;
    
    server 127.0.0.1:8002;
    
    }
    

    A few tips control the proxy:

    take a look here @nginx docs

    then here we go:

    weight = NUMBER - set weight of the server, if not set weight is equal to one. unbalance the default round robin.

    max_fails = NUMBER - number of unsuccessful attempts at communicating with the server within the time period (assigned by parameter fail_timeout) after which it is considered inoperative. If not set, the number of attempts is one. A value of 0 turns off this check. What is considered a failure is defined by proxy_next_upstream or fastcgi_next_upstream (except http_404 errors which do not count towards max_fails).

    fail_timeout = TIME - the time during which must occur *max_fails* number of unsuccessful attempts at communication with the server that would cause the server to be considered inoperative, and also the time for which the server will be considered inoperative (before another attempt is made). If not set the time is 10 seconds. fail_timeout has nothing to do with upstream response time, use proxy_connect_timeout and proxy_read_timeout for controlling this.

    down - marks server as permanently offline, to be used with the directive ip_hash.

    backup - (0.6.7 or later) only uses this server if the non-backup servers are all down or busy (cannot be used with the directive ip_hash)

    EXAMPLE generic
    
        upstream  my_upstream_name  {
          server   backend1.example.com    weight=5;
          server   127.0.0.1:8080          max_fails=3  fail_timeout=30s;
          server   unix:/tmp/backend3;
        }
    //   proxy_pass http://my_upstream_name; 
    

    tho these is what you need:

    if u just want to control de load between vhosts for one app :

     upstream  my_upstream_name{
              server   127.0.0.1:8080          max_fails=3  fail_timeout=30s;
              server   127.0.0.1:8081          max_fails=3  fail_timeout=30s;
              server   127.0.0.1:8082          max_fails=3  fail_timeout=30s;
              server   127.0.0.1:8083 backup;
    //  proxy_pass http://my_upstream_name; 
    // amazingness no.1, the keyword "backup" means that this server should only be used when the rest are non-responsive
        } 
    

    if u have 2 or more apps: 1 upstream per app like:

    upstream  my_upstream_name{
                  server   127.0.0.1:8080          max_fails=3  fail_timeout=30s;
                  server   127.0.0.1:8081          max_fails=3  fail_timeout=30s;
                  server   127.0.0.1:8082          max_fails=3  fail_timeout=30s;
                  server   127.0.0.1:8083 backup;  
                } 
    upstream  my_upstream_name_app2  {
                  server   127.0.0.1:8084          max_fails=3  fail_timeout=30s;
                  server   127.0.0.1:8085          max_fails=3  fail_timeout=30s;
                  server   127.0.0.1:8086          max_fails=3  fail_timeout=30s;
                  server   127.0.0.1:8087 backup; 
                } 
    upstream  my_upstream_name_app3  {
                  server   127.0.0.1:8088          max_fails=3  fail_timeout=30s;
                  server   127.0.0.1:8089          max_fails=3  fail_timeout=30s;
                  server   127.0.0.1:8090          max_fails=3  fail_timeout=30s;
                  server   127.0.0.1:8091 backup;  
                } 
    

    hope it helps.

提交回复
热议问题