nginx 反向代理,負載均衡,重定向,讀寫分離
一.nginx反向代理
配置檔案nginx.conf
在server裡面增加一條location:
location /test {
proxy_pass http://192.168.141.170:80/dashboard;
proxy_set_header X-Real-IP $remote_addr;
}
然後使用nginx -t 測試成功後,重啟nginx,如果server端需要記錄訪問者ip則需要在對面做相應配置。
如果後端為apache則修改httpd.conf中的Logformat。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
-> %(x-real-ip)i
二.nginx負載均衡
編輯nginx.conf檔案
新增內容:
upstream webserv {
server 192.168.140.78 weight=1 max_fails=2 fail_timeout=2;
server 192.168.141.170 weight=1 max_fails=2 fail_timeout=2;
}
注意:weight為權重排程可以輪巡,max_fails,fail_timeout設定自我健康檢查。
在location處,改變內容:
proxy_pass http://webserv/;
如果,全部宕機則顯示一個web錯誤頁面:
首先定義一個server:
例如:
在代理伺服器設定errorpage:
server{
listen 8080;
server_name localhost;
root /web/errpagers;
index index.html;
}
然後在建立目錄/web/errpagers,並在目錄下建立index.html檔案,然後在upstream處新增為backup。
upstream webserv {
#server 192.168.140.78 weight=1 max_fails=2 fail_timeout=2;
server 192.168.141.170 weight=1 max_fails=2 fail_timeout=2;
server 192.168.140.78:8080 backup;
}
如果前面的server全部宕機則頁面顯示自定義錯誤index.html
nginx支援三種負載均衡模式:
round-robin(預設,需要權重),ip_hash,least_conn
三.nginx快取
cache:共享記憶體(儲存鍵和快取物件元資料)磁碟空間:儲存資料
定義快取:
proxy_cache_path /nginx/cache/first levels=1:2 keys_zone=first:20m max_size=1g;
然後再location中引用此快取:
proxy_cache first;
proxy_cache_valid 200 10m;
如果測試是否命中在server中新增:
add_header X-cache $upstream_cache_status;
四.nginx重定向URL
rewite模組:
if(condition){}
例子:
location /img/ {
rewrite http://192.168.140.78/img/;
}
五.nginx讀寫分離
找到direction,然後後面新增 Dav on。
location / {
proxy_pass http://192.168.140.170/;
if ($request_method = "PUT") {
proxy_pass http://192.168.140.78/;
}
}