分類: 緩存2013-04-17 14:56 1489人閱讀 評論(0) 收藏 舉報javascript
最近項目引入反向代理和緩存,熟悉了一下Squid、Apache、Valish、Nginx,根據項目實際進行選擇,客觀來講,採用Linux系統部署最好,也沒有什麼難度,但實際狀況必須採用Windows系統(本着方案要結合現實的原則,研究要以Windows平臺爲主)。
html
Nginx配置:前端
[plain] view plaincopyjava
#user nobody; node
worker_processes 1; nginx
#error_log logs/error.log; 後端
#error_log logs/error.log notice; 數組
#error_log logs/error.log info; 緩存
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
#::cst::
send_timeout 300s;
#server_names_hash_bucket_size 128; #指定服務器名稱哈希表的框大小
#client_header_buffer_size 1k; #設置讀取客戶端請求頭部的緩衝容量。
large_client_header_buffers 4 32k; #以上兩個是設定客戶端請求的Header頭緩衝區大小,對於,cookie內容較大的請求,應增大改值。(400或414錯誤)
client_max_body_size 300m; #容許客戶端請求的最大單文件字節數
client_body_buffer_size 128k; #設置讀取客戶端請求正文的緩衝容量。緩衝大小默認等於兩塊內存頁的大小,在x86平臺、其餘32位平臺和x86-64平臺,這個值是8K。在其餘64位平臺,這個值通常是16K。
proxy_connect_timeout 300s; #nginx跟後端服務器鏈接超時時間(代理鏈接超時)
proxy_read_timeout 300s; #鏈接成功後,後端服務器響應時間(代理接收超時)
proxy_send_timeout 300s; #後端服務器數據回傳時間(代理髮送超時)
proxy_ignore_client_abort on; #不容許代理端主動關閉鏈接
#::cst::end
sendfile on;
#tcp_nopush on; #開啓或者關閉nginx在FreeBSD上使用TCP_NOPUSH套接字選項, 在Linux上使用TCP_CORK套接字選項。 選項僅在使用sendfile的時候纔開啓。
keepalive_timeout 75s;
#tcp_nodelay on; #開啓或關閉nginx使用TCP_NODELAY選項的功能。 這個選項僅在將鏈接轉變爲長鏈接的時候才被啓用。
#::cst::
gzip on;
gzip_min_length 20;
gzip_buffers 32 4k;
gzip_http_version 1.0;
gzip_proxied any; #enables compression for all proxied requests.前端是squid的狀況下要加此參數,不然squid上不緩存gzip文件
gzip_comp_level 6;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary off; #Enables or disables emitting the 「Vary: Accept-Encoding」 response header field if the directives gzip, gzip_static, or gunzip are active.
upstream tg_server {
server 192.168.100.253:7573;
}
server {
listen 7579;
server_name 192.168.100.253;
#charset koi8-r;
#access_log logs/host.access.log main;
#::cst::
location ~ .*\.(bmp|jpeg|jpg|png|gif|svg|png|ico|txt|css|js|html|htm|pdf)(.*|$)
{
#若是後端的服務器返回50二、50四、執行超時等錯誤,自動將請求轉發到upstream負載均衡池中的另外一臺服務器,實現故障轉移。
#proxy_next_upstream http_502 http_504 error timeout invalid_header;
#proxy_cache cache_tg_one; #進行緩存,使用Web緩存區cache_tg_one
#proxy_cache_valid 200 304 12h; #對不一樣的HTTP狀態碼設置不一樣的緩存時間
#roxy_cache_valid 301 302 1m;
#proxy_cache_valid any 1m;
#proxy_cache_key $scheme$proxy_host$uri$is_args$args; #以域名、URI、參數組合成Web緩存的Key值,Nginx根據Key值哈希,存儲緩存內容到二級緩存目錄內
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
#proxy_set_header Accept-Encoding ''; #請求頭的值爲空,那麼這個請求頭將不會傳送給後端服務器
#proxy_ignore_headers "Cache-Control" "Expires"; #這段配置加上後,proxy_cache就能支持後臺設定的expires。
#驗證是否緩存
add_header X-Cache "Hit from in253.ngnix-cache.jjcj.com";
proxy_pass http://tg_server;
expires 7d;
}
#擴展名以aspx|asmx|ashx結尾的動態應用程序不緩存。
location ~ .*\.(aspx|asmx|ashx)(.*|$) {
proxy_pass http://tg_server;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
#proxy_ignore_headers "Cache-Control" "Expires"; #這段配置加上後,proxy_cache就能支持後臺設定的expires。
#驗證是否緩存
add_header X-Cache "Miss from in253.ngnix-cache.jjcj.com";
}
#::cst::end
location / {
proxy_pass http://tg_server;
#proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}