修改proxy.conf,配置http全局環境
server_names_hash_bucket_size 128; #指定服務器名稱哈希表的框大小client_header_buffer_size 32k; large_client_header_buffers 4 128k; #以上兩個是設定客戶端請求的Header頭緩衝區大小,對於cookie內容較大的請求,應增大改值。(400或414錯誤)client_max_body_size 8m; #允許客戶端請求的最大單文件字節數client_body_buffer_size 64k; #緩衝區代理緩衝用戶端請求的最大字節數,可以理解爲保存到本地再傳給用戶proxy_connect_timeout 600; #nginx跟後端服務器連接超時時間(代理連接超時)proxy_read_timeout 600; #連接成功後,後端服務器響應時間(代理接收超時)proxy_send_timeout 600; #後端服務器數據回傳時間(代理髮送超時)proxy_buffer_size 64k; #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小proxy_buffers 4 64k; #proxy_buffers緩衝區,網頁平均在64k以下的話,這樣設置proxy_busy_buffers_size 128k; #高負荷下緩衝大小(proxy_buffers*2)proxy_temp_file_write_size 1024m; #設定緩存文件夾大小,大於這個值,將從upstream服務器傳遞請求,而不緩衝到磁盤proxy_ignore_client_abort on; #不允許代理端主動關閉連接sendfile on;tcp_nopush on;keepalive_timeout 65;tcp_nodelay on;gzip on;gzip_min_length 2k; #最小壓縮文件大小gzip_buffers 4 16k;gzip_http_version 1.0;gzip_proxied any; #前端是squid的情況下要加此參數,否則squid上不緩存gzip文件gzip_comp_level 5;gzip_types text/plain text/css text/htm application/xml application/x-javascript;gzip_vary on;server_tokens off;#設置Web緩存區名稱爲cache_one,內存緩存空間大小爲100MB,1天沒有被訪問的內容自動清除,硬盤緩存空間大小爲5GB。proxy_temp_path /tmp/proxy_temp_path;proxy_cache_path /tmp/proxy_cache_path levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=5g; |
創建緩存存放目錄
mkdir /tmp/proxy_temp_pathmkdir /tmp/proxy_cache_pathchmod -R 777 /tmp/proxy_*echo "mkdir -p /tmp/proxy_temp_path" >> /etc/rc.localecho "mkdir -p /tmp/proxy_cache_path" >> /etc/rc.localecho "chmod -R 777 /tmp/proxy_*" >> /etc/rc.local |
修改nginx.cnf,配置nginx做前端代理緩存服務器
http {include proxy.conf; ... upstream tomcat_groups {ip_hash; server 192.168.0.1:8080; server 192.168.0.2:8080;}server {listen 80 default; server_name _;return 500; access_log off;}server {listen 80; server_name testA.domian.com testB.domian.com testC.domian.com; location / {proxy_next_upstream http_502 http_504 error timeout invalid_header; #如果後端的服務器返回502、504、執行超時等錯誤,自動將請求轉發到upstream負載均衡池中的另一臺服務器,實現故障轉移。proxy_cache cache_one; #進行緩存,使用Web緩存區cache_oneproxy_cache_valid 200 304 12h; #對不同的HTTP狀態碼設置不同的緩存時間proxy_cache_valid 301 302 1m; proxy_cache_valid any 1m; proxy_cache_key $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 $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Accept-Encoding "none"; #避免緩存被壓縮的文件造成亂碼proxy_ignore_headers "Cache-Control" "Expires"; #proxy_cache支持後臺設定的expires。proxy_pass http://tomcat_groups; expires 12h;}location ~ .*\.(php|jsp|aspx|cgi|xml)?$ {proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://tomcat_groups;}location ~ /purge(/.*) {allow 127.0.0.1; allow 192.168.0.0/24; #設置只允許指定的IP或IP段纔可以清除URL緩存。allow all; proxy_cache_purge cache_one $host$1$is_args$args;} }}