Nginx反向代理與負載均衡

標簽(空格分隔): nginx


1 反向代理:Web服務器的“經紀人”

1.1 反向代理初印象

反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。

0.jpg

從上圖可以看出:反向代理服務器位于網站機房,代理網站Web服務器接收Http請求,對請求進行轉發。

1.2 反向代理的作用

1.2.1 保護網站安全:任何來自Internet的請求都必須先經過代理服務器;

1.jpg

1.2.2 通過配置緩存功能加速Web請求:可以緩存真實Web服務器上的某些靜態資源,減輕真實Web服務器的負載壓力;

2.jpg

1.2.3 實現負載均衡:充當負載均衡服務器均衡地分發請求,平衡集群中各個服務器的負載壓力;

3.jpg

2 設定最最簡單的負載均衡

2.1 設定兩臺虛擬服務器

新建文件 192.168.8.200:80,設定虛擬主機

    server { 
        listen 80; 
        server_name  192.168.8.200; 

        #設定本虛擬主機的訪問日志 
        access_log   logs/192.168.8.200.log; 
        
      
    } 

新建文件 192.168.8.201:80,設定虛擬主機

server { 
    listen         8080; 
    server_name    192.168.8.201; 
    index          index.html index.htm; 
    root           /var/www/html; 
} 

2.2 配置負載均衡服務器

    
#設定http服務器,利用它的反向代理功能提供負載均衡支持  

#設定負載均衡的服務器列表 
upstream myProxy1 { 
    #weigth參數表示權值,權值越高被分配到的幾率越大 
    server 192.168.8.200:80 weight=2; 
    server 192.168.8.201:80 weight=8;
} 
        
server{
    /*****************省略N多***********************/
    listen 80;
    server_name  demo.proxy.com;
 
    access_log  logs/$host.access.log  main;
    error_log   logs/$host.error.log;
    root   html;
    index  index.html index.htm index.php;
    
    
    # 將動態文件.php請求轉發給后端 http://myProxy 負載均衡服務器列表
    location ~ \.php$ { 
        proxy_pass http://myProxy; 
        proxy_redirect off; 
        
        # 傳遞真實IP到后端
        proxy_set_header Host $host; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

        #nginx跟后端服務器連接超時時間(代理連接超時)
        proxy_connect_timeout 90; 
        proxy_read_timeout 90; 
        proxy_send_timeout 90;
        
        
        #設置代理服務器(nginx)保存用戶頭信息的緩沖區大小
        proxy_buffer_size 4k; 
        #proxy_buffers緩沖區,網頁平均在32k以下的話,這樣設置
        proxy_buffers 4 32k; 
        #高負荷下緩沖大小(proxy_buffers*2)
        proxy_busy_buffers_size 64k; 
        
        #設定緩存文件夾大小,大于這個值,將從upstream服務器傳
        proxy_temp_file_write_size 64k; 
        
        #允許客戶端請求的最大單文件字節數
        client_max_body_size 10m; 
        #緩沖區代理緩沖用戶端請求的最大字節數,
        client_body_buffer_size 128k; 
    } 
}

3 開啟gzip

 #壓縮配置#  
    gzip  on;           #打開gzip壓縮功能  
    gzip_min_length 1k; #壓縮閾值  
    gzip_buffers 4 16k; #buffer 不用修改  
    gzip_comp_level 2;  #壓縮級別:1-10,數字越大壓縮的越好,時間也越長  
    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;  #        壓縮文件類型  
    gzip_vary off;      #跟Squid等緩存服務有關,on的話會在Header里增加 "Vary: Accept-Encoding"  
    gzip_disable "MSIE [1-6]\.";  #IE1-6版本不支持gzip壓縮 

4 緩存靜態資源

緩存圖片

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$  
{  
    root static/image;
    if(-f $request_filename){
        expires 7d;
        break;
    }
   
}  

緩存css

location ~ .*\.(css)$  
{  
    root static/css;
    if(-f $request_filename){
        expires 7d;
        break;
    }
   
}  

緩存js

location ~ .*\.(js)$  
{  
    root static/js;
    if(-f $request_filename){
        expires 7d;
        break;
    }
   
}  
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容