nginx反向代理 proxy_cache缓存池

load_module modules/ngx_stream_module.so;   #动态加载模块,必须写道开头
user  nginx;   #使用useradd nginx    添加一个nginx用户
worker_processes  4;   #cpu核心数 * 2
worker_rlimit_nofile   102400;  #配置nginx打开最大文件数  (每个工作进程绑定一个cpu,worker_cpu_affinity配置)
worker_cpu_affinity 0001 0010 0100 1000;  #工作进程使用哪个cpu的核心 (以四核为例)  0001是4核的第一个核心 0010是4核的第二个核心 

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    use epoll;
    worker_connections  10240;
}


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;   #在server虚拟目录里面配置日志,这里是全局日志

    sendfile        on;   
    #tcp_nopush     on;

    

    server_tokens off;  #错误的时候关闭输出版本号


    #keepalive_timeout  0;
    keepalive_timeout  30;

	
	#gzip  数据压缩
	
    gzip  on;   #压缩会占用cpu
    gzip_buffers 4 16k;
    gzip_comp_level 3;  #压缩等级
    gzip_disable "MSIE[1-6]";   #ie浏览器1-6禁用gzip
    gzip_min_length 1k;
    gzip_http_version 1.0;
    gzip_types text/plaion application/html application/css application/js;  #可以压缩的文件类型
	
	#gzip end
	
	
    gzip_vary on;  #根据http头判断是否支持压缩

    client_max_body_size 8m;   #默认允许客户端最大上传文件大小
	
	
	include vhost/*.conf;  #加载所有vhost下的所有conf文件

	
	#proxy_cache 代理缓冲区配置
	
	proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=proxy_cache_zone:128m inactive=5m max_size=10g;
	proxy_buffering on;                     #默认on,是否缓存后端服务器响应
	proxy_buffer_size 64k;                  #默认缓存区大小
	proxy_buffers 8 32k;                    #指定多少与多大缓存区来缓存后端服务器响应
	proxy_temp_path proxy_temp 1 2;         #默认目录proxy_temp,1 2 是level ,意思是两级目录
	proxy_max_temp_file_size 1024m;         #默认1024m,单个临时文件最大大小
	proxy_temp_file_write_size 128k;        #默认16k,一次写入临时文件最大大小
	proxy_request_buffering on;             #默认on,是否先缓存整个客户端请求正文,在发送后端服务器
	proxy_ignore_headers Set-Cookie;         #忽略缓存cookie
	
	proxy_set_header Host $host;            #添加请求头Host字段值位本机IP地址
	proxy_set_header X-Real-IP $remote_addr;    #添加请求头X-Real-IP值位客户端IP
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  #原始客户端IP 和 代理IP地址
	
	proxy_connect_timeout 60s;               #默认60s,与后端服务器建立连接超时时间
	proxy_read_timeout 300s;                 #默认60s,读取后端服务器响应超时时间
	proxy_send_timeout 300s;                 #默认60s,发送请求到后端服务器超时时间
	
	
	
	
	
	
	#proxy_cache_end
	
	
	
	
	
	
    server {
        listen       80;
        server_name  www.baidu.com www.baidu.cn;
        #server_name localhost;
        charset utf-8;

        access_log  logs/baidu.com_access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }


    }





}

这里是加载了  vhost/*.conf

server{
	listen 80;
	server_name localhost;
	access_log logs/test_access.log main;
	
	location / {
		 proxy_pass http://www.baidu.com;    #尾部不能有/
	}
	
	#这个需要放在前面,清理缓存
	location ~ /purge(.*){
		proxy_cache_purge proxy_cache_zone $host$1;
	}
	
	#缓存配置
	location ~\.(html|js|css|jpg|png){
		proxy_pass http://www.baidu.com;
		proxy_cache proxy_cache_zone;               #指定缓存区名称
		proxy_cache_key $host$request_uri;          #定义缓存的key,根据md5值为缓存文件名
		proxy_cache_valid 200 302 10m;              #为不同的状态码设置缓存时间 200,302 10分钟缓存
		proxy_cache_valid 301 1d;
		proxy_cache_valid any 1m;
		add_header X-Cache $upstream_cache_status;  #添加响应头,测试是否命中;代理服务器才有的变量
	}
	
	
}

清理缓存module安装步骤


如果需要重新添加编译参数

./nginx -V 查看编译参数
复制编译参数 --add-module=/root/ngx_cache_purge/


cd ~   #cd到root根目录  
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
tar zxvf ngx_cache_purge-2.3.tar.gz


cd /opt/work/nginx   #cd到nginx源码目录


./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_geoip_module --with-stream=dynamic --with-http_stub_status_module --add-module=/root/ngx_cache_purge-2.3


然后  
make


make完成后,把编译好的文件复制到/usr/local/nginx/sbin/nginx目录里面


pkill nginx   #关闭nginx进程

cp       objs/nginx       /usr/local/nginx/sbin/nginx


缓存的清理 ,如缓存的资源地址为

http://www.baidu.com/logo.jpg

http://www.baidu.com/purge/logo.jpg  这样就把logo.jpg这个缓存清理了


Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。 Nginx的特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用nginx网站用户有:新浪、网易、 腾讯,另外知名的微网志Plurk也使用nginxNginx 可以在大多数 Unix like OS 上编译运行,并有 Windows 移植版。目前 Nginx 的1.0.0稳定版已发布,开发版本为0.9.x,稳定版为 0.8.x,历史稳定版为 0.7.x,建议使用 0.8系列作为生产版本。 Nginx 的源代码使用 2-clause BSD-like license。 Nginx 是一个很牛的高性能Web和反向代理服务器,它具有很多非常优越的特性: 在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。 Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。 作为邮件代理服务器:Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last. fm 描述了成功并且美妙的使用经验。 Nginx 是一个安装非常的简单,配置文件非常简洁(还能够支持perl语法),Bugs非常少的服务器:Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值