標簽(空格分隔): 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;
}
}