隨時筆記:
反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器。
實際上,我們配置了Nginx反向代理后,當我們訪問一個域名/IP地址時,實際訪問的是我們配置的Nginx服務器,Nginx服務器的真實身份只是代理,它代理了許多不同的真正服務器(如下圖中的Tomcat,Resin,IIS等)。這就是反向代理。
要點:
內容 | 說明 |
---|---|
更改nginx的配置文件 | 在http/server/location層次結構下,添加proxy_pass http://localhost:8080(tomcat端口); |
將Tomcat的靜態文件配置到nginx上進行緩存 | js、html、圖片等,這樣就可以提高應用的訪問效率了。新增 location ~ .(html豎線js豎線css豎線png豎線gif豎線jpg)$ 節點,內容{root /usr/apache-tomcat-7.0.77/webapps/ROOT;} |
檢查配置文件是否正確的命令 | /usr/local/nginx/sbin/nginx -t |
啟動nginx的命令 | /usr/local/nginx/sbin/nginx |
停止nginx的命令 | /usr/local/nginx/sbin/nginx -s stop |
在不停止Nginx服務的情況下加載Nginx配置 | kill -HUP cat /usr/local/nginx/nginx.pid
|
重新加載Nginx配置 | nginx -s reload |
查看nginx狀態 | http://www.xxx.com/nginxstatus(前提:nginx網站開啟后(已啟用stub_stauts)) |
狀態參數1:active connections | 對后端發起的活動連接數 |
狀態參數2:server accepts handled requests | nginx 總共處理的連接, 成功創建了幾次握手 總共處理了多少個請求 |
狀態參數3:reading | nginx 讀取到客戶端的Header信息數 |
狀態參數4:writing | nginx 返回給客戶端的Header信息數 |
狀態參數5:waiting | 開啟 keep-alive 的情況下,這個值等于 active - (reading + writing) |
nginx中的upstream:
nginx與tomcat的結合,主要用的是nginx中的upstream,后端可包括有多臺tomcat來處理nginx的請求,
upstream目前支持4種方式的分配
1、輪詢(默認):
a,每個請求按時間順序逐一分配到不同的后端服務器 ,如果后端服務器down掉,能自動剔除。
b,weight|指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況。
例如:
upstream bakend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
2、ip_hash:
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session 的問題。
例如:
upstream bakend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
3、fair(第三方):
按后端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream bakend {
server server1;
server server2;
fair;
}
4、url_hash(第三方):
按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效。
例:在upstream中加入hash語句,server語句中不能寫入weight等其他的參數,hash_method是使用的hash算法
upstream bakend {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
tips:
upstream bakend{#定義負載均衡 設備的Ip及設備狀態
ip_hash;
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}
在需要使用負載均衡的server中增加
proxy_pass http://bakend/ ;
每個設備的狀態設置為:
1.down 表示單前的server暫時不參與負載
2.weight 默認為1.weight越大,負載的權重就越大。
3.max_fails :允許請求失敗的次數默認為1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤
4.fail_timeout:max_fails次失敗后,暫停的時間。
5.backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。
nginx支持同時設置多組的負載均衡,用來給不用的server來使用。
client_body_in_file_only 設置為On 可以講client post過來的數據記錄到文件中用來做debug
client_body_temp_path 設置記錄文件的目錄 可以設置最多3層目錄
location 對URL進行匹配.可以進行重定向或者進行新的代理 負載均衡