Nginx 配置 & keepalived安裝

location的語法和匹配規則

location [~|=|^~|~*] /uri {
     
}

location的匹配規則

精準匹配

location =/uri{}

優先級最高的匹配規則

一般匹配

location /uri{
    
}

普通匹配的優先級要高於正則匹配

如果存在多個相同的前綴的一般匹配,那麼最終會按照最大長度來做匹配

正則匹配

rewrite的使用

Rewrite通過ngx_http_rewrite_module模塊支持url重寫、支持if判斷,但不支持else

rewrite功能就是,使用nginx提供的全局變量或自己設置的變量,結合正則表達式和標誌位實現url重寫以及重定向

rewrite只能放在server{},location{},if{}中,並且只能對域名後邊的除去傳遞的參數外的字符串起作用

常用指令

If 空格 (條件) {設定條件進行重寫}

條件的語法:

  1. “=” 來判斷相等,用於字符比較
  2. “~” 用正則來匹配(表示區分大小寫),“~*” 不區分大小寫
  3. “-f -d -e” 來判斷是否爲文件、目錄、是否存在

return 指令

語法:return code;

停止處理並返回指定狀態碼給客戶端。

if ($request_uri ~ *\.sh ){
    return 403
}

set指令

set variable value;

定義一個變量並複製,值可以是文本、變量或者文本變量混合體

rewrite指令

語法:rewrite regex replacement [flag]{last / break/ redirect 返回臨時302/ permant  返回永久302}

last: 停止處理後續的rewrite指令集、 然後對當前重寫的uri在rewrite指令集上重新查找

break; 停止處理後續的rewrite指令集 ,並不會重新查找

綜合實例

如上配置對於: /images/ttt/test.png 會重寫到/mic?file=test.png, 於是匹配到 location /mic ; 通過try_files獲取存在的文件進行返回。最後由於文件不存在所以直接返回404錯誤

rewrite匹配規則

表面看rewrite和location功能有點像,都能實現跳轉,主要區別在於rewrite是在同一域名內更改獲取資源的路徑,而location是對一類路徑做控制訪問或反向代理,可以proxy_pass到其他機器。很多情況下rewrite也會寫在location裏,它們的執行順序是:

  • 執行server塊的rewrite指令
  • 執行location匹配
  • 執行選定的location中的rewrite指令

如果其中某步URI被重寫,則重新循環執行1-3,直到找到真實存在的文件;循環超過10次,則返回500 Internal Server Error錯誤

 

瀏覽器本地緩存配置及動靜分離

語法: expires 60s|m|h|d

操作步驟

  • 在html目錄下創建一個images文件,在該文件中放一張圖片
  • 修改index.html, 增加<img src=”圖片”/>
  • 修改nginx.conf配置。配置兩個location實現動靜分離,並且在靜態文件中增加expires的緩存期

Gzip壓縮策略

瀏覽器請求 -> 告訴服務端當前瀏覽器可以支持壓縮類型->服務端會把內容根據瀏覽器所支持的壓縮策略去進行壓縮返回

->瀏覽器拿到數據以後解碼;  常見的壓縮方式:gzip、deflate 、sdch

注意點

  1. 圖片、mp3這樣的二進制文件,沒必要做壓縮處理,因爲這類文件壓縮比很小,壓縮過程會耗費CPU資源
  2. 太小的文件沒必要壓縮,因爲壓縮以後會增加一些頭信息,反而導致文件變大
  3. Nginx默認只對text/html進行壓縮 ,如果要對html之外的內容進行壓縮傳輸,我們需要手動來配置

Nginx反向代理

Proxy_pass

通過反向代理把請求轉發到百度

Proxy_pass 既可以是ip地址,也可以是域名,同時還可以指定端口
Proxy_pass 指定的地址攜帶了URI,看我們前面的配置【/s】,那麼這裏的URI將會替換請求URI中匹配location參數部分;如上代碼將會訪問到 http://www.baidu.com/s

Gzip on|off 是否開啓gzip壓縮

Gzip_buffers 4 16k #設置系統獲取幾個單位的緩存用於存儲gzip的壓縮結果數據流。4 16k代表以16k爲單位,安裝原始數據大小以16k爲單位的4倍申請內存。
Gzip_comp_level[1-9] 壓縮級別, 級別越高,壓縮越小,但是會佔用CPU資源
Gzip_disable #正則匹配UA 表示什麼樣的瀏覽器不進行gzip
Gzip_min_length #開始壓縮的最小長度(小於多少就不做壓縮)
Gzip_http_version 1.0|1.1 表示開始壓縮的http協議版本
Gzip_proxied  (nginx 做前端代理時啓用該選項,表示無論後端服務器的headers頭返回什麼信息,都無條件啓用壓縮)
Gzip_type text/pliain,application/xml  對那些類型的文件做壓縮 (conf/mime.conf)
Gzip_vary on|off  是否傳輸gzip壓縮標識
interface_version

負載均衡

upstream 是Nginx的HTTP Upstream模塊,這個模塊通過一個簡單的調度算法來實現客戶端IP到後端服務器的負載均衡

Upstream常用參數介紹

 語法:server address [parameters]

其中關鍵字server必選。
address也必選,可以是主機名、域名、ip或unix socket,也可以指定端口號。
parameters是可選參數,可以是如下參數:

  • down:表示當前server已停用
  • backup:表示當前server是備用服務器,只有其它非backup後端服務器都掛掉了或者很忙纔會分配到請求
  •  weight:表示當前server負載權重,權重越大被請求機率越大。默認是1

max_failsfail_timeout一般會關聯使用,如果某臺server在fail_timeout時間內出現了max_fails次連接失敗,那麼Nginx會認爲其已經掛掉了,從而在fail_timeout時間內不再去請求它,fail_timeout默認是10s,max_fails默認是1,即默認情況是隻要發生錯誤就認爲服務器掛掉了,如果將max_fails設置爲0,則表示取消這項檢查。

ups支持的調度算法

ip_hash  根據ip的hash值來做轉發

默認是輪詢機制

權重 weight=x

fair 根據服務器的響應時間來分配請求

url_hash

安裝keepalived

  1. Tar -zxvf keepalived.tar.gz
  2. ./configure --prefix=/mic/data/program/keepalived --sysconf=/etc
  3. 缺少依賴:yum install gcc ; yum install openssl-devel;yum -y install libnl libnl-devel 
  4. 編譯安裝 make && make install
  5. cd到解壓的包 /parker/data/program/keepalived-1.3.9
  6. ln -s /mic/data/program/keepalived/sbin/keepalived    /sbin  --建立軟鏈接
  7. cp /mic/data/program/keepalived-1.3.9/keepalived/etc/init.d/keepalived      /etc/init.d/
  8. 添加到系統服務
    1. chkconfig --add keepalived
    2. chkconfig keepalived on
    3. Service keepalived start

基於keepalived+nginx的配置

配置文件詳見 keepalived.conf;  gitlab

 

 

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