NGINX负载均衡与本地路径映射

本文介绍了Nginx的负载均衡策略,包括轮询和权重分配,以及session黏着的历史背景。此外,详细讲解了如何配置Nginx进行本地文件路径映射,以实现目录浏览和限制下载速度等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nginx是一个高性能的http和反向代理服务器(高并发,3万-5万并发量)

nginx的location匹配规则(优先级)

location 匹配规则 匹配的是访问的url在域名和端口号之后的字符串
例如 image.taobao.com/upload/2/df/3/d/3/c/e/3/d/3/asdlkfjlsdjf.jpg

○ 精确匹配 = 例如=/image
○ 字符串前缀匹配^~ 例如^~/image
○ 按照配置顺序的正则匹配,配置在上优先级更高~ 例如~.png$
○ 不带任何修饰的前缀匹配 例如/image当有匹配的包含关系时,先按照匹配规则的顺序,从上到下优先级降低,当前缀匹配有包含关系,按照最大匹配长度原则匹配
○ 最低优先级的就是通配符 “/”
例如在nginx.conf中定义一个server

		server{
			listen 80;
			server_name www.taobao.com;
			location =/image                {return 200}
			location ^~/image             {return 201}
			location ^~/image/test   {return 202}
			location /image                   {return 203}
			location ~.png$                   {return 204}
			location ~.(png|jpg|gif)$ {return 205}
			location /                                 {return 206}
		}
		匹配优先级
		www.taobao.com                                      返回206
		www.taobao.com/image                           返回200
		www.taobao.com/image/tes                      返回201
		www.taobao.com/image/test.png             返回202
		www.taobao.com/haha.png                      返回204

负载均衡nginx

定义轮询的虚拟域名

先在nginx.conf中配置虚拟域名
权重
基于轮询的结构,利用关键字实现权重的访问,服务器中实现逻辑的占比均衡
weight:指定权重值(比例的值)
down:当服务器不需要被均衡访问时,可以设置,访问将忽略这个服务器

		upstream taobao{
				server 192.168.1.55:8091 weight=5;
				server 192.168.1.55:8092 weight=2;
				server 192.168.1.55:8093 down;
		}

在server的location转向,设置访问虚拟域名taobao实现轮询;

	#前台服务器
	server {//每一个代表一个虚拟的服务器 接收请求放回响应
		listen       80;  //当前虚拟服务器监听的端口
		server_name  www.taobao.com;//监听访问80端口的所有域名 请求host头判断,一旦匹配端口80,域名是正确,进入location的逻辑
		#charset koi8-r;
		#access_log  logs/host.access.log  main;
			
		proxy_set_header X-Forwarded-Host $host;
		proxy_set_header X-Forwarded-Server $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		
		location / {//比对url地址的域名端口后的字符串 "/"通配符,任意字符串都能匹配成功,进入location
		       #proxy_pass http://localhost:8081;
		       proxy_pass http://taobao; //nginx的反向代理服务器的转发目的地proxy_pass的值,代替域名和端口
		       proxy_connect_timeout 600;
		       proxy_read_timeout 600;
		}
	}

session黏着(ip黏着)------已经废弃

为了解决session在集群共享的问题;
以前的登录逻辑使用session会话技术;

session存储共享数据供会话用户使用,是一种服务器端的技术,但是多个服务器的集群中,一个session对象无法被其他服务器共享—session共享;
nginx提供ip黏着的方式解决session共享
客户端ip地址不变,访问转发的后端服务器永远是那一个
只需要在配置中添加ip_hash的关键字

		upstream taobao{
			ip_hash;
			server 192.168.1.55:8091 weight=5;
				server 192.168.1.55:8092 weight=2;
				server 192.168.1.55:8093 down;
		}

互联网框架中使用SSO单点登录+redis实现解决session的问题,所以黏着已经很少使用了

本地文件路径映射

默认nginx的目录是不能直接浏览的

autoindex on; 打开目录
autoindex_exact_size off; #改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
autoindex_localtime on; #显示的文件时间为文件的服务器时间
limit_rate_after 10m; #10m之后下载速度为10k
limit_rate 10k;
root d:\javaenv\yumrepository; #设置映射的本地路径
例如定义一个yum源服务器

#yum源服务器
	server {
		listen       80;
		server_name  yum.repo.com;
		charset utf-8;
		
		#access_log  logs/host.access.log  main;
		
		proxy_set_header X-Forwarded-Host $host;
		proxy_set_header X-Forwarded-Server $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		
		location / {
			root d:\\javaenv\yumrepository;
			autoindex on; 
			autoindex_exact_size off; 
			autoindex_localtime on; 
		}
	}

定义图片服务器



	#图片服务器
	#将image.taobao.com映射到c:\\img-upload路径下
	server {
		listen       80;
		server_name  image.taobao.com;
		
		location / {
		       root c:\\img-upload;
		}
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值