使用一台nginx作前端负载,来减轻后端apache服务器的压力。
nginx.conf 的主要参考
server_names_hash_bucket_size 128;##用于制定服务器名称哈希表的框大小,默认取决于cpu缓存
limit_zone one $binary_remote_addr 10m;#定义一个叫one的记录区,容量为10m,一遍量$binary_remote_addr 作为绘画判断的基准。
limit_conn one 1;#也可以写道location里one为上面定义的记录区,一个会话只能进行一个连接
limit_req_zone $binary_remote_addr zone=one2:10m rate=1r/s;#限制了每秒只接受一个ip一次请求“请求数/秒 (r/s)
limit_req zone=one2 burst=5; ## 也可以在location里设置最大的突发请求数
ignore_invalid_headerson;
recursive_error_pages on;
server_name_in_redirect off;
if_modified_since exact; ##主要用来expires的时间修改
sendfile on;##用于数据拷贝在两个文件描述符之间的操作函数。
#timeouts
keepalive_timeout 60;
#TCP Options
tcp_nopush on;###只在sendfile开起的时候有用,是否允许使用tcp_cork 套接字
tcp_nodelay on;
#fastcgi options
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_cache_path /var/www/tmp/fastcgi_cache_path levels=1:2keys_zone=fastcgi_cache:500m inactive=30m max_size=10000M;
fastcgi_temp_path /var/www/tmp/fastcgi_temp_path;
fastcgi_cache_methods GET HEAD;#缓存的信息
fastcgi_cache_min_uses 3;#最小使用
#fastcgi_cache fastcgi_cache;
fastcgi_cache_valid 200 302 20m; #状态码200 302 缓存20分钟
fastcgi_cache_valid 301 1h;#301缓存一个小时
fastcgi_cache_valid any 20m;#其他说有缓存20分中
fastcgi_cache_key 127.0.0.1:9000$request_uri;#用来设置被缓存的key
fastcgi_buffer_size 128k;####设置服务器相应头部缓冲区大小
fastcgi_buffers 4 128k;#设置fastcgi进程返回信息的缓冲区数量和大小,
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
fastcgi_intercept_errors on;###用来是否把客户端4xx和5xx 错误页或允许nginx自动制定错误页
#size limits
client_max_body_size50m;允许客户端请求的最大的单个文件字节数
client_body_buffer_size 256k; 缓冲区代理缓冲用户客户端请求的最大字节数,可以理解为先保存到本地在传给用户
client_body_timeout 60;#设置读取客户端请求内容的超时时间
client_header_buffer_size 1k;#用户设置客户端请求的header头缓冲区大小
large_client_header_buffers 4 32k;#最大缓存客户端请求header 大小
#gzip compression
gzip on; #启动
gzip any;无条件启用压缩,其中这里有几个选项我就不写了
gzip_min_length 0;#允许压缩最小字节数,默认0不管多大都压,建议设置成大于1k,小于1k,越压越大,
gzip_buffers 16 8k;
gzip_http_version 1.0;#早期的客户端可能不支持gzip 打开是乱码,启用后可防止这一问题
gzip_comp_level 9;#压缩级别1-9 9为最高
gzip_typestext/plain text/css image/x-icon image/png;#匹配类型压缩
gzip_vary on; #vary头信息 是cache明中率杀手可以考虑注释
#temp files
proxy_temp_path /var/www/tmp/proxy_temp_path;
#fastcgi_temp_path/var/www/tmp/fastcgi_temp;
client_body_temp_path/var/www/tmp/client_body_temp;###用户存放请求内容的临时文件
#client_body_temp_path /usr/local/nginx8/client_body_temp 1 2;
#proxy_temp_path/usr/local/nginx8/proxy_temp 1 2;
#fastcgi_temp_path/usr/local/nginx8/fastcgi_temp 1 2;
#proxy
proxy_buffering on;
proxy_buffer_size 16k; #代理请求缓存去,保存用户的信息以供nginx进行规则处理
proxy_buffers 4 32k;#nginx保存单个的几个buffer 及最大用多大空间
proxy_busy_buffers_size 64k;##如果系统很忙的时候可以申请更大的,推荐*2
proxy_temp_file_write_size 64k;##缓存临时文件大小
proxy_cache_min_uses 3;
proxy_cache_path /var/www/tmp/proxy_cache_path levels=1:2 keys_zone=cache:500m inactive=30m max_size=10000M;#缓存
proxy_cache_valid any 10m;
proxy_cache_methods GET HEAD;
proxy_cache_key "$host:$server_port$uri$is_args$args";
proxy_ignore_client_abort off;
proxy_intercept_errors on;
proxy_next_upstream error timeout invalid_header;
proxy_redirect off;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 60; #跟后端服务器连接的超市时间=发起握手等候响应超时时间。
proxy_send_timeout 60;#后端服务器数据回收时间=就是在规定时间之后后端服务器必须传完所有数据
proxy_read_timeout 60;##连接成功后=等候后端服务器响应时间=就是进入等待了
虚拟主机参考:
在locotion 里加上一句:
proxy_cache cache;
(责任编辑:IT) |