實驗一、
實驗環境:
1、一臺director主機。并部署nginx服務。
內網iP:192.168.1.1 外網iP:10.1.64.1
2、一臺后端服務器。并部署httpd服務。并創建兩個測試頁。
Vim /var/www/html/index.html
Vim /var/www/html/admin/index.html
實驗步驟:
1、配置director主機,vim /var/nginx/conf.d/default.conf
location / {
root /usr/share/nginx/html;
proxy_pass http://192.168.1.2;
index index.html index.htm;
}
location /admin/ {
proxy_pass http://192.168.1.2;
}
注意:當proxy_pass http://192.168.1.2;時,用瀏覽器訪問10.1.64.1/admin/時,
出現的頁面是定義在/var/www/html/admin/index.html中的頁面。
當proxy_pass http://192.168.1.2/;時,用瀏覽器訪問10.1.64.1/admin/時,
將被代理服務器代理到后端,顯示/var/www/html/index.html中的頁面。
2、將符合條件的URL代理至后端服務器。例如將圖片代理至后端。
location ~* \.(jpg|peg|gif|png)$ {
proxy_pass http://192.168.1.2;
}
在/var/www/html/放置一張圖片。
實驗二、
proxy_set_header field value;
設定發往后端主機的請求報文的請求首部的值;Context: http, server, location
通過實驗一的實驗結果查看后端服務器的httpd的access.log日志,會發現請求結果全是
由director192.168.1.1請求的。
將proxy_set_header模塊添加上后,可以在后端服務器的日志中記錄實際的報文發起者,
而不再記錄director的ip。
配置nginx服務。
將該模塊加入到server中
proxy_set_header X-Real-IP $remote_addr;
X-Real-IP $remote_addr:面向客戶端一側時,真正發出請求的客戶端的ip地址。于
將請求直接向后端代理。
配置httpd的httpd.conf配置文件
重啟服務,在瀏覽器中登錄網頁。查看后端服務器的access.log文件。
實驗三、定義proxy的緩存功能。
1、定義可用于proxy功能的緩存。只可定義于http。
vim /etc/nginx/nginx.conf
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:1:1 keys_zone=pxycache:20m max_size=1g;
定義緩存路徑:/var/cache/nginx/proxy_cache
定義緩存級別:level=1:1:1
Max_size:目錄一共用多大的空間來緩存緩存項
Keys_zone:
2、定義在需要調用緩存功能的配置段,例如對圖片定義緩存功能。
Vim default.conf
location ~* \.(jpg|jpeg|gif|png)$ {
proxy_pass http://192.168.1.2;
proxy_cache pxycache; 表示調用此緩存功能。
proxy_cache_key $request_uri;
proxy_cache_valid 200 302 301 1h; 對不同的響應碼作緩存時長。
proxy_cache_valid any 1m; 對其他響應碼作緩存時長,為1min。
}
4、重啟服務。在瀏覽器中輸入10.2.64.1/logo.png第一次響應會有點慢,但是當第一次請
求成功后,當第二次請求時就會很快了,因為在/var/cache/nginx/porxy_cache目錄中已
經生成了緩存項,可以進入該目錄進行驗證。
實驗四、
定義服務器組
實驗環境:
1、一臺director,并配置nginx服務。
內網ip:192.168.1.1 外網ip:10.1.64.1
2、兩臺后端服務器,分別部署httpd服務,并創建相應的測試頁。
Server1:192.168.1.2 server2:192.168.1.3
實驗步驟:
1、在nginx的http中定義后端服務器組。
upstream webser {
Server 192.168.1.2;
Server 192.168.1.3;
}
2、在default.conf中定義后端引用;
location / {
proxy_pass http://webser;
}
3、當在瀏覽器中測試10.1.64.1時,后端服務器組會以輪詢的方式顯示頁面,實現了
后端服務器的負載均衡,在生產環境中,服務器組中的頁面內容應該是一樣的。
4、測試weight=number
upstream webser {
Server 192.168.1.2 weight=2;
Server 192.168.1.3;
}
當在server 192.168.1.2上加上權重后,server1在被響應時,會根據權重的值來輪詢。
5、backup
將服務器標記為“備用”,即所有服務器均不可用時此服務器才啟用;
在server2主機上部署nginx服務,提供測試頁,并將端口修改為8080,因為80端口
已經被httpd服務占用。
upstream webser {
Server 192.168.1.2 weight=2;
Server 192.168.1.3;
Server 192.168.1.3:8080 buckup;
}
當server1和server2的主機正常工作時,server3是不會被啟用的。只有當server1和
Server2都不可用時server3才會被啟用。
6、測試hash key
在之前的兩臺后端主機上分別創建10個名稱相同內容不同的網頁,以判斷是來自主機
1還是主機2。
upstream webser {
Server 192.168.1.2 weight=2;
Server 192.168.1.3;
Server 192.168.1.3:8080 buckup;
hash $request_uri;
}
http://10.1.64.1/test{1..9}.html進行測試
實現的效果就是:
把對同一個url的請求,不管是來自哪臺主機,都將發往upstream server;
原創文章,作者:zzd,如若轉載,請注明出處:http://www.www58058.com/56221