nginx 反向代理、缓存

  lvs+keepalive+nginx(realserver)两台+tomcat(后端服务器),nginx的配置文件nginx.conf如下

user  nobody nobody;
worker_processes 12;
error_log /var/log/nginx/error.log crit;(取消记录错误日志)
#error_log  /var/log/nginx/debug.log  debug_http;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
pid /var/run/nginx.pid;
worker_rlimit_nofile 65535;(进程能够打开的最多文件描述符数)
events {
    use epoll;
    worker_connections  65535;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    gzip on;  #开启gzip压缩
    gzip_buffers 4 8k; #指定缓存压缩应答的缓冲区数量和大小
    gzip_comp_level 6; #指定压缩等级,其值从1到9,1为最小化压缩(处理速度快)
    gzip_min_length 1k;#设置被压缩的最小请求,单位为bytes。少于这个值大小的请求将不会被压缩
    gzip_http_version 1.1; #是否根据HTTP请求版本来启用gzip压缩
    #gzip_proxied expired no-cache no-store private auth any off;
    gzip_proxied any; #为所有请求启用压缩
    gzip_types text/plain application/x-javascript text/css application/xml; #为除“text/html”之外的MIME类型启用压缩,“text/html”总是会被压缩
    gzip_vary off; #关闭应答头“Vary: Accept-Encoding”
    sendfile on; #sendfile()函数在一个文件描述符与另一个之间拷贝数据,由于这个拷贝过程是在内核状态下完成
    tcp_nodelay on;#这个指令指定是否使用socket的TCP_NODELAY选项,这个选项只对keep-alive连接有效
    keepalive_timeout 60; #参数的第一个值指定了客户端与服务器长连接的超时时间,超过这个时间,服务器将关闭连接
    tcp_nopush on; #这个指令指定是否使用socket的TCP_NOPUSH(FreeBSD)或TCP_CORK(linux)选项,这个选项只在使用sendfile时有效
    server_names_hash_bucket_size       128; #服务器名称哈希表每个页框的大小,这个指令的默认值依赖于cpu缓存
    client_header_buffer_size           32k; #指令指定客户端请求头部的缓冲区大小
    large_client_header_buffers         8 32k;#指定客户端一些比较大的请求头使用的缓冲区数量和大小
    client_max_body_size                8m; #指令指定允许客户端连接的最大请求实体大小,它出现在请求头部的Content-Length字段
    client_body_buffer_size 128k; #这个指令可以指定连接请求实体的缓冲区大小
    client_body_temp_path  /tmp/client_temp 1 2; #指令指定连接请求实体试图写入的临时文件路径
    open_file_cache max=65535 inactive=30s;#这个指令指定缓存是否启用,如果启用,将记录文件以下信息
    #max - 指定缓存的最大数目,如果缓存溢出,最近最少使用的文件(LRU)将被移除
    #inactive - 指定缓存文件被移除的时间,如果在这段时间内文件没被下载,默认为60秒)
    open_file_cache_valid 60s;#这个指令指定了何时需要检查open_file_cache中缓存项目的有效信息
    open_file_cache_min_uses 1;#这个指令指定了在open_file_cache指令无效的参数中一定的时间范围内可以使用的最小文件数,如果使用更大的值,文件描述符在cache中总是打开状态
    server_name_in_redirect on; #如果这个指令打开,nginx将使用server_name指定的基本服务器名作为重定向地址,如果关闭,nginx将使用请求中的主机头
    server_tokens off;#是否在错误页面和服务器头中输出nginx版本信息
    index index.html index.htm index.jsp index.php;
####### begin fastcgi #######
    fastcgi_connect_timeout 30; #指定同FastCGI服务器的连接超时时间,这个值不能超过75秒
    fastcgi_send_timeout 30; #指令为上游服务器设置等待一个FastCGI进程的传送数据时间
    fastcgi_read_timeout 30; #前端FastCGI服务器的响应超时时间,如果有一些直到它们运行完才有输出的长时间运行的FastCGI进程,或者在错误日志中出现前端服务器响应超时错误,可能需要调整这个值
    fastcgi_buffer_size 64k; #这个参数指定将用多大的缓冲区来读取从FastCGI进程到来应答头
    fastcgi_buffers 4 64k; #这个参数指定了从FastCGI进程到来的应答,本地将用多少和多大的缓冲区读取
    fastcgi_busy_buffers_size 128k;#一般设置为fastcgi_buffer_size的两倍
    fastcgi_temp_file_write_size 128k;
####### end fastcgi #######
####### begin proxy #######
    proxy_redirect off;
    proxy_connect_timeout 20; #指定一个连接到代理服务器的超时时间,单位为秒,需要注意的是这个时间最好不要超过75秒
    proxy_send_timeout 30; #设置代理服务器转发请求的超时时间,单位为秒
    proxy_read_timeout 30; #决定读取后端服务器应答的超时时间,单位为秒,它决定nginx将等待多久时间来取得一个请求的应答
    proxy_buffer_size 32k; #设置从被代理服务器读取的第一部分应答的缓冲区大小
    proxy_buffers 32 64k; #设置用于读取应答(来自被代理服务器)的缓冲区数目和大小
    proxy_busy_buffers_size 64k; #为proxy_buffer_size的两倍
    proxy_pass_header  Set-Cookie; #这个指令允许为应答转发一些隐藏的头部字段
    fastcgi_pass_header Set-Cookie;
    proxy_temp_path /www/cache/proxy_temp; #类似于http核心模块中的client_body_temp_path指令,指定一个地址来缓冲比较大的被代理请求
    fastcgi_temp_path  /www/cache/fastcgi_temp; #指令指定存储从别的服务器传送来的数据临时文件路径,同样可以指定三级目录已经哈希存储
    fastcgi_cache_path /www/cache/cache_t2 levels=1:2 keys_zone=cache_t2:200m inactive=1d max_size=3g;
    proxy_cache_path /www/cache/cache_t1 levels=1:2 keys_zone=cache_t1:200m inactive=1d max_size=3g;
    proxy_cache_path /www/cache/www.test2.com levels=1:2 keys_zone=test2:200m inactive=7d max_size=3g;
    proxy_cache_path /www/cache/www.test1.com levels=1:2 keys_zone=test1:200m inactive=7d max_size=3g;
    proxy_cache_path /www/cache/www.test.com levels=1:2 keys_zone=test:200m inactive=7d max_size=3g;
####### end proxy #######
    log_format access_sinoicity '$remote_addr|$remote_user|[$time_local]|$request|'
   '$status|$body_bytes_sent|$http_referer|'
   '$http_user_agent|$http_x_forwarded_for|$sent_http_content_range|$request_time|$host'
   '$request_body|$upstream_addr';
    log_format forcdn   '$remote_addr|$remote_user|[$time_local]|$request|$status|$body_bytes_sent|'
'$http_referer|$http_user_agent|$http_x_forwarded_for|'
'$http_Cdn_Src_Ip|$http_Via';
#
# The default server
#
server {
    listen 80;
    server_name  localhost;
    access_log off;
    location / {
    root   html;
    index  index.html index.htm;
    }
    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;
    }
}
    include conf.d/*.conf;
}

虚拟主机配置文件

conf.d/www.test1.com.conf

server {
    listen 80;
    server_name  www.test.com   #  www.test1.com 
    #charset utf-8;
    access_log  /var/log/nginx/www.test.com.log combined;
    location / {
    proxy_set_header Host www.test.com;
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_pass http://test;#test1、test2
    proxy_redirect http://www.test.com /;
    }
    #location ~ .*\.(gif|jpg|jpeg|png|bmp|ico|rar|css|js|zip|xml|txt|flv|swf|mid|doc|cur|xls|pdf|txt|mp3|wma)$ {
    location ~ .*\.(css|js|gif|jpg|jpeg|png|bmp|ico|xml|txt|swf|doc|cur|xls)$ {
    #proxy_set_header Host $http_host;
    proxy_set_header Host    #www.test1.com  www.test2.com
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_pass_header  Set-Cookie;
    proxy_pass http://test; #test1、test2 
    #add_header Cache-Control "max-age=604800";
    add_header X-Cache "Cached by nginx - sinoicity-01";
    proxy_cache_valid  200 304 7d;
    proxy_cache test; #test1、test2
    #proxy_cache_key $host$uri$is_args$args;
    proxy_cache_key $host$uri$is_args;
    expires 7d;
    }
}

conf.d/upstream.conf

upstream test {
    server 192.168.100.10:80;
}
upstream test1 {
    server 192.168.100.20:80;
}
upstream test2 {
    server 192.168.100.30:80;
}


本文出自 “不莱梅乐队” 博客,谢绝转载!

你可能感兴趣的:(nginx,缓存,反向代理)