nginx 缓存静态资源

  最近一直在用nginx来做静态资源的缓存,这是在网上查找了一下资料发现tomcat处理图片的能力相对于nginx稍显较弱。一般来说tomcat只能够处理300-500个请求但是超过500个请求之后jvm就会抛出异常导致tomcat无法正常运行,而nginx可以处理到30000-50000个请求所以我希望当请求控制层或者编译jsp这些就交由tomcat处理,而网站的静态资源则交由nginx处理。我把我的nginx配置发布出来分享给大家,由于是初学如果有更好的配置希望大家不灵赐教。
#运行用户
#user  Techology-04;
#启动进程,通常设置成和cpu的数量相等
worker_processes  1;

#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;#单个worker process进程的最大并发链接数
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
	 #设定mime类型,类型由mime.type文件定义
    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;
	#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
    #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
	
    
	#开启gzip
	gzip  on;
	gzip_disable "MSIE [1-6]\.(?!.*SV1)";
		
	#设置请求缓冲
	client_header_buffer_size 1k;
	large_client_header_buffers 4 4k;
	#设定负载均衡的服务器列表
	upstream localhost{
		server 10.0.0.34:8810 weight=10;#这里指定代理的服务器的url
		#ip_hash;  
	}
	
    server {
		#定义端口80为坚挺端口
        listen       80;
		#server_name是使用指定真实服务器名
        server_name  10.0.0.34;
		#设定本虚拟主机的访问日志
        access_log  logs/rh.log;
		if ($request_uri = '/') {
			rewrite . /index.do break;#这里重定向至index.do
		}
		#location 用于定位资源
		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
			expires 7d;
			#里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件,这里对我们之后的静态文
			#件伺服很有用
			root F:/data/photos; 
			proxy_store on;
            proxy_store_access user:rw group:rw all:rw;
			proxy_temp_path F:/data/photos;
			include proxy.conf;
			if ( !-e $request_filename) { #正则表达式去判断匹配缓存文件是否存在,不存在则访问服务器
				proxy_pass http://localhost;
			}
		}
		
		location ~ .*\.(js|css|html)$ {
			expires 7d;
			#里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件,这里对我们之后的静态文
			#件伺服很有用
			root F:/data/cache; 
			proxy_store on;
            proxy_store_access user:rw group:rw all:rw;
			proxy_temp_path F:/data/cache;
			include proxy.conf;
			if ( !-e $request_filename) { #正则表达式去判断匹配缓存文件是否存在,不存在则访问服务器
				proxy_pass http://localhost;
			}
		}
		
        location ~ .*\.(jsp|do)$ {    
            proxy_pass  http://localhost;#这里和upstream localhost的配置一样的
        }
		
  
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

猜你喜欢

转载自lucklysmile-gmail-com.iteye.com/blog/2180464