负载均衡:由多台服务器以对称的方式组成一个服务器集合,每台服务器具有等价的地位,都可以单独对外提供服务而无需其他服务器的辅助。通过某种负载分担技术,将外部发送过来的请求均匀分配到对称结构的某台服务器上。
反向代理(Reverse Proxy):以代理服务器接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并从将服务器得到的结果返回给Internet上连接的客户端,此时代理服务器对外表现为一个服务器。
http
{
#允许客户端请求的最大单个文件字节数
client_max_body_size 300m;
#客户端代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户
client_body_buffer_size 128k;
#与后端服务器连接的超时时间以及发起握手等候响应时间
proxy_connect_timeout 600;
#连接成功后等候后端服务器响应时间:其实已经进入后端排队队列中等候处理
proxy_read_timeout 600;
#后端服务器数据回传时间:在规定时间内后端服务器必须传完所有的数据
proxy_send_timeout 600;
#代理请求缓冲区,会保存用户的head信息
proxy_buffer_sizze 16k;
#ngiinx保存单个用的几个buffer最大用多大空间
proxy_buffers 432k;
#若系统很忙可以申请更大的proxy_buffers,推荐*2
proxy_busy_buffers_size 64k;
#proxy缓存临时文件的大小
proxy_temp_file_write_size 64k;
upstream php_server_pool {
server 192.168.1.10:80 weight=4 max_fails=2 fail_timeout=30s;
server 192.168.1.11:80 weight=4 max_fails=2 fail_timeout=30s;
server 192.168.1.12:80 weight=4 max_fails=2 fail_timeout=30s;
}
server
{
listen 80;
server_name www.youdomain.com;
location /
{
#若后端的服务返回502,504,执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://php_server_pool;
proxy_set_header Host www.youdomain.com;
proxy_set_header X-Forwarded-For $remote_addr;
}
access_log /data1/logs/www.youdomain.com_access.log
}
}
upstream指令用于设置一组可以在proxy_pass和fastcgi_pass指令中使用的代理服务器,默认的负载均衡方式为dns轮询。
ip_hash指令:将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上。
server指令:weight=number,设置服务器的权重,权重数值越高,被分配到的客户端请求数越多。默认为1.
max_fails=number,在参数fail_timeout指定的时间内对后端服务器请求失败的次数。若检测到后端服务器无法连接及发生服务器错误时,标记为失败。默认为1,设为0时将关闭这项检查。
fail_timeout=time,在经历max_fails设置的失败次数后,暂停的时间
down:标记为服务器永久下线,用于ip_hash指令。
backup:仅仅在非backup服务器全部宕机或繁忙时才启用。