http {
… …
client_max_body_size 300m;
#允许客户端请求的最大单个文件字节数,它出现在请求头部的 Content-Length 字段。 (可以更改此参数达到限制用户上传文件大小的目的)
client_body_buffer_size 128k;
#这个指令可以指定连接请求使用的缓冲区大小,默认值:8k/16k 。如果客户端请求一个文
件大于 128k,则 Nginx 会尝试在硬盘上创建临时文件。如果硬盘满了,则会报错。
client_body_temp_path /dev/shm/client_body_temp;
#这个指令指定连接请求试图写入缓存文件的目录路径。
proxy_connect_timeout 600;
#跟后端服务器连接的超时时间,发起握手等候响应超时时间
proxy_read_timeout 600;
#默认值:proxy_read_timeout 60。决定读取后端服务器应答的超时时间,它决定 nginx 将
等待多久时间来取得一个请求的应答。超时时间是指完成了两次握手后并且状态为 established 的超
时时间,而不是所有的应答时间。 相对于 proxy_connect_timeout,这个时间可以扑捉到一台将你
的连接放入连接池延迟处理并且没有数据传送的服务器,注意不要将此值设置太低,某些情况下代理
服务器将花很长的时间来获得页面应答 。如果被代理服务器在设置的时间内没有传递数据,nginx
将关闭连接。
proxy_send_timeout 600;
#设置代理服务器转发请求的超时时间,同样指完成两次握手后的时间,如果超过这个时间代
理服务器没有数据转发到后端服务器,nginx 将关闭连接。
proxy_buffer_size 16k;
#默认值:proxy_buffer_size 4k/8k 。设置从后端服务器读取的第一部分应答的缓冲区大小,
通常情况下这部分应答中包含一个小的应答头。
proxy_buffers 4 32k;
#设置用于读取应答(来自后端服务器)的缓冲区数目和大小,告诉 Nginx 保存单个用的几个
Buffer,最大用多大空间
proxy_busy_buffers_size 64k;
#如果系统很忙的时候可以申请更大的 proxy_buffers,官方推荐*2
proxy_temp_file_write_size 64k;
#设置在写入 proxy_temp_path 时缓存临文件数据的大小,在预防一个工作进程在传递文件
时阻塞太长。
proxy_temp_path /dev/shm/proxy_temp;
#类似于 http 核心模块中的 client_body_temp_path 指令,指定一个目录来缓冲比较大的被
代理请求。
upstream server_pool  {
server 192.168.0.88:80 weight=4 max_fails=2 fail_timeout=30s;
server 192.168.0.89:80 weight=2 max_fails=2 fail_timeout=30s;
}
#HTTP 负载均衡模块。upstream 这个字段设置一群服务器,可以将这个字段放在
proxy_pass 和 fastcgi_pass 指令中作为一个单独的实体,它们可以是监听不同端口的服务器,并且
也可以是同时监听 TCP和 Unix socket 的服务器。 服务器可以指定不同的权重,默认为 1。

location / {
proxy_pass http://server_pool/;
#确定需要代理的 URL,端口或 socket。
proxy_redirect off;
#如果需要修改从后端服务器传来的应答头中的"Location"和"Refresh"字段,可以用这个指令
设置。
proxy_set_header X-Real-IP $remote_addr;
#这个指令允许将发送到后端服务器的请求头重新定义或者增加一些字段。 这个值可以是一个
文本,变量或者它们的组合。
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503
http_504 http_404;
#确定在何种情况下请求将转发到下一个服务器:
#error - 在连接到一个服务器,发送一个请求,或者读取应答时发生错误。
#timeout - 在连接到服务器,转发请求或者读取应答时发生超时。
#invalid_header - 服务器返回空的或者错误的应答。
#http_500 - 服务器返回 500 代码。
#http_502 - 服务器返回 502 代码。
#http_503 - 服务器返回 503 代码。
#http_504 - 服务器返回 504 代码。
#http_404 - 服务器返回 404 代码。
#off - 禁止转发请求到下一台服务器。
}

Nginx 的 upstream 目前支持 5 种方式的分配
1  轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自
动剔除。
2   weight
指定轮询几率, weight 和访问比率成正比,用于后端服务器性能不均的情况。
例如:
upstream bakend {
server 192.168.0.88 weight=10;
server 192.168.0.89 weight=10;
}
3   ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以
解决 session 的问题。
例如:
upstream bakend {
ip_hash;
或者  hash $http_x_forwarded_for;  前面还有cdn
server 192.168.0.88:80;
server 192.168.0.89:80;
}
4   fair (第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
例如:
upstream bakend {
server 192.168.0.88:80;
server 192.168.0.89:80;
fair;
}
5   url_hash (第三方)
按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器,后端服务
器为缓存时比较有效。
例如:
upstream backend {
server 192.168.0.88:3128;
server 192.168.0.89:3128;
hash $request_uri;
或者  hash $http_x_forwarded_for;  前面还有cdn
#hash_method crc32;
}
每个设备的状态设置为 :
1. down  表示单前的 server 暂时不参与负载
2. weight  默认为 1.weight 越大,负载的权重就越大。
3. max_fails  :允许请求失败的次数默认为 1. 当超过最大次数时,返回
proxy_next_upstream  模块定义的错误
4. fail_timeout:max_fails 次失败后,暂停的时间。
5. backup : 其它所有的非 backup 机器 down 或者忙的时候,请求 backup 机器。
所以这台机器压力会最轻。
Nginx 支持同时设置多组的负载均衡,用来给不用的 server 来使用。

results matching ""

    No results matching ""