nginx负载均衡配置

nginx负载均衡配置

将server和upstream区域单独写成一个文件

cat nginx.conf

user  nginx;
worker_processes  4;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
pid        logs/nginx.pid;
events {
    use epoll;
    worker_connections  204800;
}
http {
    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  main;    
    sendfile        on;
    #tcp_nopush     on;    
    #keepalive_timeout  0;
    keepalive_timeout  65;    
    #gzip  on;
    server_tokens off;  
    include upstream.conf;
    include servers.conf;
}

参数解析:
server_tokens off; #隐藏版本号

sendfile on; #参数sendfile on 用于开启文件高效传输模式,同时将tcp_nopush on 和tcp_nodelay on 两个指令设置为on,可防止网络及磁盘I/O阻塞,提升Nginx工作效率 1) tcp_nopush on 说明:当有数据时,先别着急发送, 确保数据包已经装满数据, 避免了网络拥塞 2) tcp_nodelay on 说明:有时要抓紧发送, 可确保数据尽快发送, 提高数据传输效率

keepalive_timeout 65; #HTTP 是一种无状态协议,客户端向服务器发送一个 TCP 请求,服务端响应完毕后断开连接。如果客户端向服务器发送多个请求,每个请求都要建立各自独立的连接以传输数据。HTTP 有一个 KeepAlive 模式,它告诉 webserver 在处理完一个请求后保持这个 TCP 连接的打开状态。若接收到来自客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。

cat servers.conf


#esblocation
server {
       listen       20000;
       #charset koi8-r;  
       #access_log  logs/host.access.log  main;   
       location / {
               proxy_pass http://esbupstream;
               proxy_redirect off;     
               proxy_http_version 1.1;	
               proxy_set_header Host $host;
               proxy_set_header X-Forwarded-For $remote_addr;
               proxy_set_header connect "";
               client_max_body_size 30m; 
               client_body_buffer_size 1024k; 
               proxy_connect_timeout 30;
               proxy_send_timeout 120;
               proxy_read_timeout 120;
               proxy_buffer_size 128k;
               proxy_buffers 8 128k;
               proxy_busy_buffers_size 128k;
       }
       #error_page  404              /404.html;
       #rewrite ^(.*)$ https://$host$1 permanent;
       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
            root   html;
       }
}

参数解析:
proxy_redirect off; #重定向功能

proxy_http_version 1.1; #nginx在代理是默认http版本为1.0,由于文件的下载涉及到使用分块传递,但http1.0是不支持这个特性的。所以服务端为1.1版本无法进行转发
client_max_body_size 30m; #client_max_body_size 默认 1M,表示 客户端请求服务器最大允许大小,在“Content-Length”请求头中指定。如果请求的正文数据大于client_max_body_size,HTTP协议会报错 413 Request Entity Too Large。就是说如果请求的正文大于client_max_body_size,一定是失败的。如果需要上传大文件,一定要修改该值。

client_body_buffer_size 1024k; #Nginx分配给请求数据的Buffer大小,如果请求的数据小于
client_body_buffer_size直接将数据先在内存中存储。如果请求的值大于client_body_buffer_size小于client_max_body_size,就会将数据先存储到临时文件中,在哪个临时文件中呢?client_body_temp 指定的路径中,默认该路径值是/tmp/. 所以配置的client_body_temp地址,一定让执行的Nginx的用户组有读写权限。否则,当传输的数据大于client_body_buffer_size,写进临时文件失败会报错。

proxy_connect_timeout 30 #后端服务器连接的超时时间_发起握手等候响应超时时间

proxy_send_timeout 120; #后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
proxy_read_timeout 120; #连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
proxy_buffer_size 128k; #Nginx使用该大小申请read_buf,即大小指定了 upstream header 最大长度,如果响应头超过了这个长度,Nginx会报upstream sent too big header错误,然后client收到的是502。
proxy_buffers 8 128k; #设置存储被代理服务器响应的body所占用的buffer个数和每个buffer大小。具体的意思是说,开辟8个长度为128k大小的read_buf用来存储body,当然不是连接建立初始化时就开辟8个,而是当当前buf不够存响应body时才会新申请一个,最多申请8个buf。

proxy_busy_buffers_size 128k; #proxy_busy_buffers_size不是独立的空间,他是proxy_buffers和proxy_buffer_size的一部分。nginx会在没有完全读完后端响应就开始向客户端传送数据,所以它会划出一部分busy状态的buffer来专门向客户端传送数据(建议为proxy_buffers中单个缓冲区的2倍),然后它继续从后端取数据。proxy_busy_buffer_size参数用来设置处于busy状态的buffer有多大。1)如果完整数据大小小于busy_buffer大小,当数据传输完成后,马上传给客户端; 2)如果完整数据大小不小于busy_buffer大小,则装满busy_buffer后,马上传给客户端;

cat upstream.conf

upstream esbupstream{
         server 10.0.0.11:51000;
         server 10.0.0.12:51000;
         keepalive 16;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值