1.
安裝 nginx
ubuntu 使用 apt-get
$sudo apt-get update
$sudo apt-get install nginx
2.
設定檔路徑
Nginx 的設定檔名為
Nginx 的設定檔名為
ngix.conf
,會依據安裝方式導致被放置的路徑不同,可以透過 nginx -t
來查詢
3.
NginX設定
/etc/nginx/nginx.conf
config 檔是由一連串的 directive 所組成的。directive 針對特定的部分作設定,分為兩種:simple directive 及 block directive。
simple
directive 要以分號 ; 結尾,而 block directive 會有一組大括號 {},包著其他的 directive(simple
或是 block)。
Log相關設定
Gzip相關設定
設定Load blance後端Server以及規則
設定 proxy server
4.
Log_format可用參數
$remote_addr, $http_x_forwarded_for 記錄客戶端IP地址
$remote_user 記錄客戶端用戶名稱
$request 記錄請求的URL和HTTP協議
$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,可以在http,server,location塊。
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.0,1.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.
留言
張貼留言