2016-05-30 12 views
2

Ich habe eine Webanwendung Ruby auf Schienen, die nicht für Multithreading konfiguriert ist. In nginx config habe ich einen Upstream-Block zum Load-Balancing eingerichtet. So:Load Balancing - Web-Anwendungen mit NGINX

upstream myapp { 
    server 127.0.0.1:3075; 
    server 127.0.0.1:3076; 
    server 127.0.0.1:3077; 
} 

stelle ich dünn mit 3 Anschlüssen auch 3 Prozess (3075,3076,3077).

Ich denke, wenn meine erste Anwendung '127.0.0.1:3075' beschäftigt ist, wird die gesamte Anfrage automatisch auf meine zweite Anwendung '127.0.0.1:3076' oder die dritte ausgewogen.

Aber Lastenausgleich funktioniert nicht, obwohl meine drei Webanwendungen ordnungsgemäß unabhängig ausgeführt werden.

Bitte helfen Sie mir, Fehler zu finden.

------------------- nginx Config --------------------

upstream myapp_hosts { 
    server 127.0.0.1:3075; 
    server 127.0.0.1:3076; 
    server 127.0.0.1:3077; 
} 

server { 
    listen  80; 
    server_name myapp.mydomain.com; 
    rewrite ^(.*)$ https://myapp.mydomain.com$1 permanent; # rewrite for https, i have another bloc server listen 443. 
    access_log /var/log/nginx/myapp.access.log; 

    location/{ 
      proxy_pass   http://myapp_hosts/; 
      proxy_connect_timeout 900; 
      proxy_send_timeout  900; 
      proxy_read_timeout  900; 
      proxy_buffer_size 16k; 
      proxy_buffers  32 16k; 
      proxy_busy_buffers_size 64k; 
    } 
    location /public { 
      root /var/www/nemo/; 

    } 
    location /images { 
      root /var/www/nemo/assets/; 

    } 
    location /javascripts { 
      root /var/www/nemo/assets/; 

    } 
    location /stylesheets { 
      root /var/www/nemo/assets/; 

    } 

    client_max_body_size 10m; 
    client_body_buffer_size 128k; 
    client_header_buffer_size 64k; 
} 
+0

_But Load Balancing ist nicht work_ kein Beweis? Wie testen Sie es? –

+0

Ich habe meine Frage mit voller Konfiguration Nginx Danke –

Antwort

1

Was ist der Zweck Ihrer Neufassung?

rewrite ^(.*)$ http://myapp.mydomain.com$1 permanent; 

Es sieht aus wie es geht, ständig etwas zu sich selbst aus der Basis dieser Regeln zu umleiten, in einer Umleitung Schleife führt. Vielleicht haben Sie diese Zeile mit einer HTTPS-Weiterleitungskonfiguration gemischt, die Sie woanders gefunden haben?

Versuchen Sie, diese Zeile zu entfernen und sehen Sie, ob sie funktioniert.

+0

Vielen Dank für Ihre Antwort, Ja, Sie haben Recht, die Neufassung für https, alle Anfrage http wird auf https umgeleitet werden, ich habe einen anderen Block-Server, der 443 hören. t es entfernen. –

+0

Was ist ein "Block-Server"? Wie auch immer, du solltest deine Proxy-Konfiguration dort haben. Der Rest Ihrer nginx-Konfiguration ist mit diesem Neuschreiben nutzlos. – sjagr

+0

Ja, Sie haben Recht, ich kann alle Standorte in 80 entfernen. Ich wiederhole sie in 443. –