NginX配置Load Balance

1.     安裝 nginx
ubuntu 使用 apt-get
$sudo apt-get update
$sudo apt-get install nginx

2.      設定檔路徑
Nginx 的設定檔名為 ngix.conf,會依據安裝方式導致被放置的路徑不同,可以透過 nginx -t 來查詢


3.    NginX設定 /etc/nginx/nginx.conf
config 檔是由一連串的 directive 所組成的。directive 針對特定的部分作設定,分為兩種:simple directive block directive
simple directive 要以分號 ; 結尾,而 block directive 會有一組大括號 {},包著其他的 directivesimple 或是 block)。



 

  
Log相關設定



Gzip相關設定
設定Load blance後端Server以及規則
設定 proxy server
4.     Log_format可用參數
$remote_addr, $http_x_forwarded_for   記錄客戶端IP地址

$remote_user                                           記錄客戶端用戶名稱

$request                                                   記錄請求的URLHTTP協議

$status                                                      記錄請求狀態

$body_bytes_sent                                    發送給客戶端的字節數,不包括響應頭的大  
                                                                                                                             小; 該變量與Apache模塊mod_log_config
                                                                                                                            的“%B參數兼容。

$bytes_sent                                              發送給客戶端的總字節數。

$connection                                             連接的序列號。

$connection_requests                              當前通過一個連接獲得的請求數量。

$msec                                                       日誌寫入時間。單位為秒,精度是毫秒。

$pipe                                                        如果請求是通過HTTP流水線(pipelined)發 
                                                                                                                               送,pipe值為“p”,否則為“.”。

$http_referer                                             記錄從哪個頁面鏈接訪問過來的

$http_user_agent                                       記錄客戶端瀏覽器相關信息

$request_length                                       請求的長度(包括請求行,請求頭和請求正文)。

$request_time                                          請求處理時間,單位為秒,精度
毫秒; 從讀入客戶端的第一個字節開始,直到把最後一個字符發送給客戶端后進行日誌寫入為止。

$time_iso8601                                        ISO8601標準格式下的本地時間。

$time_local                                             通用日誌格式下的本地時間。



5.      
一、熱備:如果你有2台伺服器,當一臺伺服器發生事故時,才啟用第二台伺服器給提供服務。伺服器處理請求的順序:AAA突然A失去回應,則換BBBBBBBB.....
upstream mysvr {
      server 127.0.0.1:7878;
      server 192.168.10.121:3333 backup;  #熱備    
    }
二、輪詢:nginx預設就是輪詢其權重都預設為1,伺服器處理請求的順序:ABABABABAB....
upstream mysvr {
      server 127.0.0.1:7878;
      server 192.168.10.121:3333;      
    }
三、加權輪詢:跟據配置的權重的大小而分發給不同伺服器不同數量的請求。如果不設置,則預設為1。以下伺服器的請求順序為:ABBABBABBABBABB....
 upstream mysvr {
      server 127.0.0.1:7878 weight=1;
      server 192.168.10.121:3333 weight=2;
}


四、ip_hash:nginx會讓相同的客戶端ip請求相同的伺服器。
upstream mysvr {
      server 127.0.0.1:7878;
      server 192.168.10.121:3333;
      ip_hash;
    }
6.     代理伺服器相關設定

include mime.types; #文件擴展名與文件類型映射表

default_type application/octet-stream; #預設文件類型,預設為text/plain 

#access_log off; #取消服務日誌

log_format myFormat ' $remote_addr–$remote_user [$time_local] $request
$status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定義格式

access_log log/access.log myFormat; #combined為日誌格式的預設值

sendfile on; #允許sendfile方式傳輸文件,預設為off,可以在http塊,server塊,location塊。

sendfile_max_chunk 100k; #每個進程每次調用傳輸數量不能大於設定的值,預設為0,即不設上限。

keepalive_timeout 65; #連接超時時間,預設為75s,可以在httpserverlocation塊。

proxy_connect_timeout 1; #nginx伺服器與被代理的伺服器建立連接的超時時間,預設60

proxy_read_timeout 1; #nginx伺服器想被代理伺服器組發出read請求後,等待響應的超時間,預設為60秒。

proxy_send_timeout 1; #nginx伺服器想被代理伺服器組發出write請求後,等待響應的超時間,預設為60秒。

proxy_http_version 1.0 ; #Nginx伺服器提供代理服務的http協議版本1.01.1,預設設置為1.0版本。

#proxy_method get; #支持客戶端的請求方法。post/get

proxy_ignore_client_abort on; #客戶端斷網時,nginx伺服器是否終端對被代理伺服器的請求。預設為off

proxy_ignore_headers "Expires" "Set-Cookie"; #Nginx伺服器不處理設置的http相應投中的頭域,這裡空格隔開可以設置多個。

proxy_intercept_errors on; #如果被代理伺服器返回的狀態碼為400或者大於400,設置的error_page配置起作用。預設為off

proxy_headers_hash_max_size 1024; #存放http報文頭的哈希表容量上限,預設為512個字元。

proxy_headers_hash_bucket_size 128; #nginx伺服器申請存放http報文頭的哈希表容量大小。預設為64個字元。

proxy_next_upstream timeout; #反向代理upstream中設置的伺服器組,出現故障時,被代理伺服器返回的狀態值。error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off

#proxy_ssl_session_reuse on; 預設為on,如果我們在錯誤日誌中發現“SSL3_GET_FINSHED:digest check failed”的情況時,可以將該指令設置為off

7.      
8.      

9.      

留言