2016-05-30 61 views
2

我有一個未配置爲多線程的rails應用程序ruby。 在nginx配置中,我設置了一個需要進行負載平衡的上游模塊。 像這樣:負載平衡 - 使用NGINX的Web應用程序

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

我建立也3個過程與薄3個端口(3075,3076,3077)。

我認爲當我的第一個應用程序'127.0.0.1:3075'忙時,所有請求會自動平衡到我的第二個應用程序'127.0.0.1:3076'或第三個應用程序。

但負載平衡不起作用,即使我的三個Web應用程序正確運行獨立。

請幫我找到錯誤。

------------------- nginx的配置--------------------

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負載平衡不work_任何證明?你如何測試它? –

+0

我完全配置nginx我的問題謝謝 –

回答

1

重寫的目的是什麼?

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

它看起來會不斷地根據這些規則重定向任何東西,導致重定向循環。您可能已將此行與您在其他地方找到的HTTPS重定向配置混合在一起,也許?

嘗試刪除該行,看看它是否工作。

+0

謝謝你的回答,是的,你是對的,重寫爲https,所有請求http將被重定向到https,我有另一個服務器,誰聽443所以我可以'不要刪除它。 –

+0

什麼是「集團服務器」?無論如何,你應該有你的代理配置。在重寫的時候,你的nginx配置的其餘部分是無用的。 – sjagr

+0

是的你是對的,我可以刪除80中的所有位置。我在443中重複它們。 –