网站提高负载
1.gzip压缩
gzip配置的常用参数
gzip on|off; #是否开启gzip
gzip_buffers 32 4K| 16 8K #缓冲(压缩在内存中缓冲几块? 每块多大?)
gzip_comp_level [1-9] #推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)
gzip_disable #正则匹配UA 什么样的Uri不进行gzip
gzip_min_length 200 # 开始压缩的最小长度(再小就不要压缩了,意义不在)
gzip_http_version 1.0|1.1 # 开始压缩的http协议版本(可以不设置,目前几乎全是1.1协议)
gzip_proxied # 设置请求者代理服务器,该如何缓存内容
gzip_types text/plain application/xml # 对哪些类型的文件用压缩 如txt,xml,html ,css
gzip_vary on|off # 是否传输gzip压缩标志
2.expires设置图片缓存
在location或if段里,来写.
格式 expires 30s;
expires 30m;
expires 2h;
expires 30d;
(注意:服务器的日期要准确,如果服务器的日期落后于实际日期,可能导致缓存失效)
另: 304 也是一种很好的缓存手段
原理是: 服务器响应文件内容是,同时响应etag标签(内容的签名,内容一变,他也变), 和 last_modified_since 2个标签值
浏览器下次去请求时,头信息发送这两个标签, 服务器检测文件有没有发生变化,如无,直接头信息返回 etag,last_modified_since
浏览器知道内容无改变,于是直接调用本地缓存.
这个过程,也请求了服务器,但是传着的内容极少.
对于变化周期较短的,如静态html,js,css,比较适于用这个方式
3.反向代理nginx+apache动静分离
用nginx做反向代理和负载均衡非常简单,
支持*
两个用法: 1个proxy反向代理, 1个upstream负载均衡
*,以反向代理为例, nginx不自己处理php的相关请求,而是把php的相关请求转发给apache来处理.
—这不就是传说的”动静分离”,动静分离不是一个严谨的说法,叫反向代理比较规范.
简单说:就是将php文件扔到apache 让apache处理php文
location ~ \.php$ {
proxy_pass http://127.0.0.1:8080(这是apache虚拟机监听的端口)
}
**反向代理后端如果有多台服务器,自然可形成负载均衡,
但proxy_pass如何指向多台服务器?
把多台服务器用 upstream指定绑定在一起并起个组名,**
upstream imageserver 服务器集
{
server 127.0.0.1:81 weight=1 max_fails=2 fail_timeout=3; //第一台服务器绑定的信息
server 127.0.0.1:82 weight=1 max_fails=2 fail_timeout=3;//第二台服务器绑定的信息
}
//第一台图片服务器
server{
listen 81;
server_name localhost;
root html;
access_log logs/81_access.log main;
}
//第二台图片服务器
server{
listen 82;
server_name localhost;
root html;
access_log logs/82_access.log main;
}
**然后proxy_pass指向该组:
例:当访问图片的时候。转到该集群**
location ~* \.(jpg|jpeg|gif|png)
{
proxy_set_header X-Forwarded-For $remote_addr;
//记录真正访问的ip,在日志中而不是代理的ip
root html;
proxy_pass http://imageserver;//指向upstream
}