2017-01-25 4 views
0

Ich erstellte eine Node.js Website, die Google-Authentifizierung verwendet. Die Website wird von mehr als 100 Benutzern gleichzeitig verwendet, was sich auf die Leistung auswirkt. Ich verstehe also, dass Nginx bei der Skalierung der Site helfen kann, indem es mehrere Instanzen der Node.js-Anwendung in mehreren Ports erstellt und dann Nginx als Load Balancer verwendet.Nginx Lastenausgleich mit Node.js und Google Oauth

Also, ich habe Nginx konfiguriert, aber das Problem ist, dass es scheint nicht mit Google-Authentifizierung zu arbeiten. Ich bin in der Lage, die erste Seite meiner Website zu sehen und kann mich über Google anmelden, aber nach diesem Punkt funktioniert es nicht.

Irgendwelche Vorschläge zu dem, was fehlt, um dies zu funktionieren.

Dies ist meine Konfigurationsdatei:

upstream my_app 
{ 
    least_conn;     # Use Least Connections strategy 
    server ip:3001;  # NodeJS Server 2 I changed the actual ip 
    server ip:3002;  # NodeJS Server 3 
    server ip:3003;  # NodeJS Server 4 
    server ip:3004;  # NodeJS Server 5 
    keepalive 256; 
} 


server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 
    expires epoch; 
    add_header Cache-Control "no-cache, public, must-revalidate, proxy-revalidate"; 
    server_name ip; 
    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; } 
    # 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_buffers 8 16k; 
     proxy_buffer_size 32k; 
     proxy_pass http://my_app ; 
     proxy_redirect off ; 
     add_header Pragma "no-cache"; 

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

} 

Ich habe gerade angefangen zu nginx Lernen, ich überprüft, wenn der Upstream nur eine IP-Adresse und es funktioniert. d. h. es funktioniert als Reverse-Proxy, aber nicht als Load-Balancer, und meine Vermutung beruht auf der Art der Google-Authentifizierung.

Und der Fehler, den ich im Fehlerprotokoll erhalten, ist Verbindung verweigert. Danke.

+2

Hallo Kathy, warum zeigst du uns nicht einen Code, um eine Idee zu bekommen, was du bisher versucht hast? – Flip

+0

Meinst du die Nginx-Konfiguration? –

Antwort

0

Ich finde heraus, was falsch war. least_conn Load Balancing-Technik war nicht das Recht zu wählen, da es Sitzung nicht persistieren. Ich änderte es zu Hash $ remote_addr oder hash_ip und es funktioniert.

Verwandte Themen