Nginx配置負載均衡與解決跨域問題

一、負載均衡配置

	upstream blogServer{
        server 127.0.0.1:8080;
    }
     server {
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass http://blogServer;         
		}
	}

這裏需要注意,集羣名稱不能使用下劃線_,否則會導致無法解析。

二、解決跨域

server {
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass http://blogServer;
          	add_header Access-Control-Allow-Methods *;
            add_header Access-Control-Max-Age 3600;
            add_header Access-Control-Allow-Credentials true;
            add_header Access-Control-Allow-Origin $http_origin;
            add_header Access-Control-Allow-Headers $http_access_control_request_headers;
            if ($request_method = OPTIONS ) {
                return 200;
            }
			
        }
    }

三、失敗跳轉問題

在配置負載均衡後,當集羣中當請求發送到一臺壞的服務區後,出現一段等待響應過程的過程,要等它失敗,纔會跳轉其他服務。 這個時間由以下3個參數控制:

proxy_connect_timeout:與服務器連接的超時時間,默認60s
fail_timeout:當該時間內服務器沒響應,則認爲服務器失效,默認10s
max_fails:允許連接失敗次數,默認爲1
等待時間 = proxy_connect_timeout + fail_timeout * max_fails

配置截圖

四、負載均衡策略

1、輪詢

這種是默認的策略,把每個請求按順序逐一分配到不同的server,如果server掛掉,能自動剔除。

upstream  fengzp.com {   
    server   192.168.99.100:42000; 
    server   192.168.99.100:42001;  
}
2、最少連接

把請求分配到連接數最少的server

upstream  fengzp.com {   
    least_conn;
    server   192.168.99.100:42000; 
    server   192.168.99.100:42001;  
}
3、最少連接

使用weight來指定server訪問比率,weight默認是1。以下配置會是server2訪問的比例是server1的兩倍。

upstream  fengzp.com {   
    server   192.168.99.100:42000 weight=1; 
    server   192.168.99.100:42001 weight=2;  
}
4、ip_hash

每個請求會按照訪問ip的hash值分配,這樣同一客戶端連續的Web請求都會被分發到同一server進行處理,可以解決session的問題。如果server掛掉,能自動剔除。

upstream  fengzp.com {   
    ip_hash;
    server   192.168.99.100:42000; 
    server   192.168.99.100:42001;  
}

ip_hash可以和weight結合使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章