Nginx 负载均衡

Nginx 负载均衡

什么是负载均衡?

负载均衡:

​ 英文名称为 Load Balance,其主要意思是将任务分配到多个服务器上分别执行,进而达到提高执行效率,缩短执行时间的目的。

负载均衡类型
  • 硬负载均衡
  • 软负载均衡

Nginx 六种 负载均衡策略

  • Default (轮询 策略)
  • Least Connected (最少连接策略)
  • IP Hash (IP 绑定策略)
  • Weighted (权重策略)
  • fair (按响应时间【第三方】)
  • url_hash (按url 分配策略 【第三方】)
#后端服务器池
	upstream babytun {
		#最少连接策略
		#least_conn; 
		#IP绑定策略
		#ip_hash;
		# 权重策略
		server 127.0.0.1:8001 weight=5 max_fails=1 fail_timeout=3s;
		server 127.0.0.1:8002 weight=2;
		server 127.0.0.1:8003 weight=1;
		server 127.0.0.1:8004 weight=3;
	}
Nginx 心跳 检查机制
server  127.0.0.1:8080  max_fails=3 fail_timeout=30s
  • max_fails 代表 最大失败次数
  • fail_timeout 代表单次连接超时时间
设置日志打印格式
     # 日志内容打印格式  
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'
					  '$upstream_addr "$upstream_status" ${upstream_response_time}';
    # 日志文件存放地址
    access_log  logs/access.log  main;

日志打印 格式变量为nginx 预置变量,有其他需求,可前往nginx 官网进行查看

设置静态资源进行缓存
	#代表了临时文件夹
	proxy_temp_path d:/nginx-temp;
	#设置缓存目录
	#levels代表采用1:2也就是两级目录的形式保存缓存文件(静态资源css、js),同时文件名进行了md5编码
	#keys_zone定义缓存的名称及内存的使用,名称为cache ,在内存中开始100m交换空间
	#inactive=7d 如果某个缓存文件超过7天没有被访问,则删除
	# max_size=20g;代表设置文件夹最大不能超过20g,超过后会自动将访问频度(命中率)最低的缓存文件删除
	proxy_cache_path d:/nginx-cache levels=1:2 keys_zone=cache:100m inactive=7d max_size=20g;
	
	server {
		#nginx通过80端口提供服务
		listen 80;
		#静态资源缓存
		#利用正则表达式匹配url,匹配成功的则执行内部逻辑
		#~* 不区分大小写
		location ~* \.(gif|jpg|css|png|js|woff|html)(.*){
		    # 代理地址
			proxy_pass http://test;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			# 代理缓存 空间 ,取之前定义缓存命名
			proxy_cache cache;
			#如果静态资源响应状态码为200(成功)  302(暂时性重定向)时 缓存文件有效期1天
			proxy_cache_valid 200 302 24h;
			#301(永久性重定向)缓存保存5天
			proxy_cache_valid 301 5d;
			#其他情况
			proxy_cache_valid any 5m;
			
			#浏览器的缓存时间
			expires 90d;
			
		}
		
		
设置 文件压缩 GZIP (css,js…)
	#开启Nginx Gzip压缩
    gzip on;
	#只有超过1K的文件才压缩
	gzip_min_length 1k;
	#说明那些类型的文件在传输前进行压缩
	# image/jpeg类似的图片文件,gzip压缩后效果并不明显 ,gzip对于文本文件的压缩效果较好
	# 如果 在高并发或是大量用户请求中,image 图片资源 占比较大,采用 CDN 服务
	gzip_types text/plain application/javascript text/css application/x-javascript application/font-woff;
	
	#低版本IE禁用Gzip压缩
	gzip_disable "MSIE [1-6]\.";
	
	#压缩使用的缓存,每个内存页为4K ,申请32个,缓存总量为128K
	gzip_buffers 32 4k;
	
	#压轴的,设置压缩级别 1-9 越大压缩比越高,但消耗的CPU资源也越多
	#建议1-4即可
	gzip_comp_level 1;
	

nginx 配置文件

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


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"'
					  '$upstream_addr "$upstream_status" ${upstream_response_time}';
    # 日志文件存放地址
    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
	
	#开启Nginx Gzip压缩
    gzip on;
	#只有超过1K的文件才压缩
	gzip_min_length 1k;
	#说明那些类型的文件在传输前进行压缩
	# image/jpeg类似的图片文件,gzip压缩后效果并不明显 ,gzip对于文本文件的压缩效果较好
	# 如果 在高并发或是大量用户请求中,image 图片资源 占比较大,采用 CDN 服务
	gzip_types text/plain application/javascript text/css application/x-javascript application/font-woff;
	
	#低版本IE禁用Gzip压缩
	gzip_disable "MSIE [1-6]\.";
	
	#压缩使用的缓存,每个内存页为4K ,申请32个,缓存总量为128K
	gzip_buffers 32 4k;
	
	#压轴的,设置压缩级别 1-9 越大压缩比越高,但消耗的CPU资源也越多
	#建议1-4即可
	gzip_comp_level 1;
	
	
	
	
	#代表了临时文件夹
	proxy_temp_path d:/nginx-temp;
	#设置缓存目录
	#levels代表采用1:2也就是两级目录的形式保存缓存文件(静态资源css、js),同时文件名进行了md5编码
	#keys_zone定义缓存的名称及内存的使用,名称为cache ,在内存中开始100m交换空间
	#inactive=7d 如果某个缓存文件超过7天没有被访问,则删除
	# max_size=20g;代表设置文件夹最大不能超过20g,超过后会自动将访问频度(命中率)最低的缓存文件删除
	proxy_cache_path d:/nginx-cache levels=1:2 keys_zone=cache:100m inactive=7d max_size=20g;
	
	#后端服务器池
	upstream babytun {
		#最少连接策略
		#least_conn; 
		#IP绑定策略
		#ip_hash;
		# 权重策略
		server 127.0.0.1:8001 weight=5 max_fails=1 fail_timeout=3s;
		server 127.0.0.1:8002 weight=2;
		server 127.0.0.1:8003 weight=1;
		server 127.0.0.1:8004 weight=3;
	}

	server {
		#nginx通过80端口提供服务
		listen 80;
		#静态资源缓存
		#利用正则表达式匹配url,匹配成功的则执行内部逻辑
		#~* 不区分大小写
		location ~* \.(gif|jpg|css|png|js|woff|html)(.*){
		    # 代理地址
			proxy_pass http://test;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			# 代理缓存 空间 ,取之前定义缓存命名
			proxy_cache cache;
			#如果静态资源响应状态码为200(成功)  302(暂时性重定向)时 缓存文件有效期1天
			proxy_cache_valid 200 302 24h;
			#301(永久性重定向)缓存保存5天
			proxy_cache_valid 301 5d;
			#其他情况
			proxy_cache_valid any 5m;
			
			#浏览器的缓存时间
			expires 90d;
			
		}
		
		#使用服务器池进行后端处理
		location /{
		    # 代理
			proxy_pass http://test; 
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值