1. 程式人生 > >nginx反向代理+快取開啟+url重寫+負載均衡(帶健康探測)的部署記錄

nginx反向代理+快取開啟+url重寫+負載均衡(帶健康探測)的部署記錄

一、後端的Real Server的準備

兩臺RS伺服器(192.168.1.104/192.168.1.105)要事先配置好nginx。
並且nginx訪問均是用ip訪問即可,方便實驗效果!

二、nginx代理伺服器192.168.1.103(假設外網ip是111.112.114.23)的配置

1.nginx反向代理和快取

0)安裝依賴軟體(如果是ubuntu系統,則sudo apt-get update && sudo apt-get upgrade && sudo apt-get install libpcre3 libpcre3-dev zlib1g-dev libssl-dev build-essential openssl libssl0.9.8 libssl-dev)


[[email protected] ~]# yum install -y pcre pcre-devel openssl openssl-devel gcc

1)首先新增使用者nginx,實現以之執行nginx服務程序:
[[email protected] ~]# groupadd -r nginx
[[email protected] ~]# useradd -r -g nginx -s /bin/false -M nginx                 #-M引數表示建立使用者時不建立使用者家目錄

2)接著開始編譯和安裝:
[[email protected]

~]# cd /usr/loca/src
[[email protected] src]# wget http://nginx.org/download/nginx-1.8.0.tar.gz
[[email protected] src]# tar -zxvf nginx-1.8.0.tar.gz
[[email protected] src]# cd nginx-1.8.0
[[email protected] nginx-1.8.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre
 
[[email protected] src]# make && make install

#以上編譯安裝nginx後,--http-client-body-temp-path、--http-proxy-temp-path、--http-fastcgi-temp-path、--http-uwsgi-temp-path、--http-scgi-temp-path預設的路徑就在/usr/local/nginx下,分別是client_body_temp、proxy_temp、fastcgi_temp、scgi_temp、uwsgi_temp

[[email protected] src]# cd /usr/local/nginx/
[[email protected] nginx]# ls
conf html logs sbin
[[email protected] nginx]# /usr/local/nginx/sbin/nginx     //nginx啟動後,就會出現下面的目錄
[[email protected] nginx]# ls /usr/local/nginx/
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp

[[email protected] src]# vim /usr/local/nginx/conf/nginx.conf 
worker_processes 1; 
events { 
worker_connections 1024; 

http { 
include mime.types; 
default_type application/octet-stream; 
sendfile on; 
  keepalive_timeout 65;

#要想開啟nginx的快取功能,需要新增此處的兩行內容!

#這一行分別表示:定義快取儲存目錄,手動建立;快取級別,表示快取目錄的第一級目錄是1個字元,第二級目錄是2個字元;核心中建立用於快取快取資料來源資料的空間,查詢快取的時候,先從這個核心空間中找到,快取資料的源資料,然後再到對應目錄中查詢快取;這一行分別表示:快取空間最大值;快取的資料,60分鐘內沒有被訪問過就刪除 
  proxy_cache_path /var/www/cache levels=1:2 keys_zone=mycache:20m max_size=2048m inactive=60m;

#這一行分別表示:建立快取的時候可能生成一些臨時檔案存放的位置,自動建立 
  proxy_temp_path /var/www/cache/tmp; 

server { 
listen 80; 
server_name localhost; 

location / { 
#root html; 
#index index.html index.htm; 
  proxy_pass http://192.168.1.104/;                       #代理哪個web伺服器 
  proxy_cache mycache;                                          #記憶體快取源資料空間名字,對應我們前面的設定 
  proxy_cache_valid 200 302 60m;                          #頁面返回碼為200 302 的快取60分 
  proxy_cache_valid 404 1m;                                   #頁面錯誤響應嗎404快取時間1分 

error_page 500 502 503 504 /50x.html; 
location = /50x.html { 
root html; 

  }

[[email protected] src]# mkdir /var/www/cache 
[[email protected] src]# /usr/local/nginx/sbin/nginx

4)驗證結果
訪問http://111.112.114.23,則顯示的是http://192.168.1.104的訪問結果(如上配置,RS2的反向代理類似)

---------------------------------------------------------------------------------------------------------
再看如下的一個例項配置(nginx.conf檔案中已開啟快取功能)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 upstream LB-WWW { ip_hash; server 192.168.1.101:80 max_fails=3 fail_timeout=30s weight=100;   #max_fails = 3 為允許失敗的次數,預設值為1 server 192.168.1.102:80 max_fails=3 fail_timeout=30s weight=100;   #fail_timeout = 30s(也可以是fail_timeout = 30,即後面的秒單位不帶) 當max_fails次失敗後,暫停將請求分發到該後端伺服器的時間 server 192.168.1.118:80 max_fails=3 fail_timeout=30s weight=50;    #由於這三臺機器中,前兩臺配置高,後一臺118機器配置低點,三臺機器開啟的nginx線上數是一樣的,所以118機器設定的weight權重低。 }                                                                    #weight許可權設定低,命中率就會低,這樣機器壓力就會減輕(若是權重不設定低點,也可以通過減少nginx執行緒數來減少機器壓力); server { listen       80; server_name  www.wangshibo.com; access_log  /usr/local/nginx/logs/www-access.log main; error_log  /usr/local/nginx/logs/www-error.log;