Nginx的负载均衡配置

本文介绍了Nginx的负载均衡原理,包括其在处理请求中的角色和负载均衡模式,如轮询、ip_hash、url_hash和fair。Nginx的location规则用于匹配和分发请求,并且通过配置可以实现高并发处理和服务器保护。同时,文章提到了负载均衡的优缺点,例如隐藏内部服务器IP、提高处理能力,以及可能导致的session问题。

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

正常请求:客户端(发送请求)——》服务器(接收请求并获取数据)——》数据库(获取数据给服务器)——》服务器(拿到数据返回到客户端)——》客户端(接收数据前端显示);

负载均衡原理:客户端(发送请求)——》服务器(nginx)(接收请求转发给服务器)——》服务器A(接收请求并获取数据)——》数据库(获取数据给服务器)——》服务器A(拿到数据返回到客户端)——》客户端(接收数据前端显示);

理解:

负载均衡即分发请求,当发送请求给服务器A后,A将请求转发给B或者C,然后由B或者C处理获取返回数据给客户端,Nginx转发条件默认轮询;

优点:

1、客户端无感觉,所有基础配置均在服务器中完成
2、处理请求高并发,请求由不同的服务器负载,降低服务器崩溃几率
3、服务器暴露在外的只有Nginx的服务器ip,转发的目标服务器不会暴露

缺点:

		1、成本增加(负担不起那是你的问题,不是程序的)
		2、由于每次请求转发的服务器都可能不一样,所以Session中存储数据无法每次都请求到
		即:常见的登录用户数据不能存到Session中,(适用于所有服务器缓存)
		解决方式:可将常用数据存入Redis中、iphash等。。。(暂时只知道这一种,有其他的方式欢迎留言讨论)

Nginx负载均衡配置:

#设定负载均衡的服务器列表
upstream tomcat {
    server ip:端口号;
}
//例子:
upstream tomcat {
    server 127.0.0.1:8080;
}



server
    {
        listen 80;
        server_name myadmin;
        index index.html index.htm index.php;
        root  /www/server/myadmin;

        #error_page   404   /404.html;
        include enable-php.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /\.
        {
            deny all;
        }
		//主要配置
		location / {
			#拦截你向当前配置nginx的服务器请求转发到负载均衡配置的服务器列表中的服务器
            proxy_pass   http://tomcat;
            #配置默认访问页,这里就会访问到tomcat里面的那个index.html文件里面
            index  index.html;
        }

        access_log  /www/wwwlogs/access.log;
    }

Nginx的location规则:

语法:location [=||*|^~] /uri/ { … }
例子:location / {} : 匹配所有请求

=         严格匹配。如果请求匹配这个location,那么将停止搜索并立即处理此请求
~         区分大小写匹配(可用正则表达式)
~*        不区分大小写匹配(可用正则表达式)
!~        区分大小写不匹配
!~*       不区分大小写不匹配
^~        如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式

负载均衡模式:

1、轮询:根据访问时间将请求逐一发送给不同的服务器
2、ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。
3、url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。后台服务器为缓存的时候效率。
4、fair:更加智能的负载均衡算法。使用需要下载upstream_fair模块
down:不参与负载,不会转发到该服务器
backup:备份机器,当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器
但不可与ip_hash同时配置,因为ip_hash会只访问一台服务器
例子:

#设定负载均衡服务器列表
upstream tomcat {
    #后端服务器访问规则
    ip_hash;                               #添加参数支持哈希,不可与backup同时使用
    server 127.0.0.1:8080  weight=1;       #server1	权重,权重越高负载越大
    server 127.0.0.1:8080  down;           #server2 不参与负载
    server 127.0.0.1:8090   backup;        #server3 备份机   
}

server {
        listen 80;							//拦截端口80
        server_name myadmin;				//配置多个站点或站点的多个二级域名
        location / {
                proxy_pass http://tomcat;
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值