文章出處

ngx_http_log_module

rewrite regex replacement[flag];
把用戶請求的uri基于regex做檢查,匹配到時將替換為replacement指定的子字符串
在同一個location中存在的都哦個rewrite規則會自上而下逐個被檢查

ngx_http_fastcgi_module
LAMP:
proxy_fastcgi_module
LNMP

nginx緩存k=v結構 內存中存儲的K 磁盤中存儲的是value

K文件的名字 url

 

http

定義
fastcgi_cache_path /var/cache/nginx/fastcgi levels:1:2:2 keys_zone=fcgicache:10m;
調用

location {
fastcgi_cache fcgicache;
fastcgi_cache_key $request_uri;
fastcgi_cache_valid 200 302;

}

nginx應用實例:

定義proxy緩存

 

調用緩存

例一:

 

例二:

 

ngx_http_proxy_module

正向代理: 一個web程序的代理程序一般代理80,443,21
打開瀏覽器屬性設置代理服務器地址和端口,這種機制就叫正向代理
正向代理支持緩存,設置緩存策略
代表請求者的身份

反向代理:通常工作在服務器的前端,保護服務器安全
基于套接字響應,每個鏈接維護一個套接字文件
并發能力有限(代理服務器加緩存)

通過location判斷請求的url數據來做動靜分離
(1)
proxy_pass http://localhost:8080
location ,if in location ,limit_except
proxy_pass后面的路徑不帶uri時,其余將location的uri傳遞給后端主機
location /uri/{
proxy_pass http://host;
}

proxy_pass后面路徑是一個uri時,其會將location的uri替換為proxy_pass后端主機的uri
location /uri/{
proxy_pass http://host/new_uri;

}

如果location定義其uri使用正則模式匹配時,則proxy_pass后d路徑必須不能使用uri
location ~|~* pattern {
proxy_pass http://host;
}


實例:

location /bbs/ {
proxy_pass http://192.168.1.1/;

}

location ~*\.(jpg|gif|png)$ {
proxy_pass http://192.168.1.1;
}
請求資源的動靜分離:
nginx做代理服務器,location匹配規則,所有靜態資源發給靜態資源主機
所有php結尾的發給php服務

proxy_set_header X-Rreal-ip $remote_addr; #設定向后端主機發送的請求報文的首部及其值
proxy_set_header X-Forwarded-For $proxy_addr_x_forwared_for;


緩存相關的選項(先定義后調用)
內存:key-value
url--->md5
磁盤:
2 2
定義緩存
proxy_cache_path /var/cache/nginx/proxy leves=1:2:2 keys_zone=pcache:10m inactive=365 max_size=10g
調用緩存
location中添加
proxy_cache_key pcache;
proxy_cache_key $request_uri;
proxy_cache_key $request_uri$scheme$proxy_host;
proxy_cache_valid 302 302 10m;
proxy_cache_use_stale error;

ngx_http_proxy_module
proxy_connect_timeout 30s;
后端服務器建立鏈接的超時時長,默認60s,最長75s
proxy_read_timeout 60s
等待后端主機發送響應報文的超時時長,默認60s
proxy_send_timeout 60;
向后端服務器發送請求報文超時時長,默認60s

ngx_http_headers_module
{http,server,location,if}

(1)add_header X-via $server_addr
(2)expires [modified] time;
expires epoch |max|off;
ngx_http_upstream_module
將多個后端主機定義一個組
用于http

upstream name{...}
定義后端服務器組,引入新的上下文,只能用于新的httpd
name :名稱,字符串
servce
server address [參數]
定義服務器的地址和相關的參數:
地址格式:
ip[:port]
hostname[:port]
參數:
wegiht=number 權重
max_fails=number 最大錯誤嘗試次數
fail_timeout=time 設置服務器不可用的超時時長
backup:備用主機
down:維護模式(手動標記,不再處理任何請求)(查看系統有沒有tcp連接)

實例:
upstream webserver {
ip hash;
server 192.168.1.1:80 weight=1 max_fails=3;
server 192.168.1.2:80
#sticky cookie srv_id expires=1h path=/;
}
調用upsteram
proxy_pass http://webserver;

ip_hash
源地址哈希,調度算法;(客戶端ip)
least_conn
最少鏈接調度算法;
health_check;
定義后端主機的健康狀態檢測
可用參數:
interval= 檢測的頻度,默認5s
fails=number 判斷為失敗的檢測次數
passes=number:判斷為成功的檢測次數
match=name 基于那個match做檢測結果為"成功"or"失敗"的判定
port=number 向服務器的那個端口發起健康狀態檢測請求
match name {...}
僅能用戶http上下文,對后端主機做健康狀態檢測時,定義其結果判斷標準
專用指令
status:期望的響應碼
status code
status !code
status code-code
header:基于響應首部進行判斷
heard HEADER=VALUE
heard HEADER!=VALUE
header

 

 

定義

match health {
status 200;
body ~"ok";
}
通常用于location
health_check match=health interval=2 fails=3 uri=/.health.html;

hash key [consistent]
定義調度方法,可自定義基于何種信息key進行綁定
hash $remote_addr $request_uri
add_header X-cache $upstream_cache_status

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()