nginx--代理和负载均衡

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: nginx--代理和负载均衡

nginx代理


nginx的代理分为正向代理和反向代理

正向代理指的是,一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。  

反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理。


反向代理的配置


nginx的反向代理功能就是 proxy_pass参数,反向代理可以起到保护网站安全的作用,因为任何来自internet的请求都必须先经过代理服务器

准备两台装有nginx的服务器,一台作为主的,一台作为副的。

master  192.168.88.67  主负载
slave   192.168.88.68  web1

主负载均衡节点的配置文件,只需要在主的服务器的配置文件下的server里加上proxy_pass http://192.168.88.68;  就可以了

server {
       listen 80;
          server_name  www.zouozu.com;
          location / {
          proxy_pass http://192.168.88.68;  # 只需要加上这句就可以了,请求会直接转发给192.168.88.68机器, 
}

配置文件保存之后,检查语法并加载配置文件

../sbin/nginx -t   # 检查语法
../sbin/nginx -s reload   # 加载配置文件

此时访问master的服务器192.168.88.67:80地址,会将请求转发给slave的80端口除了页面效果的展示以外,还可以通过log(access.log)查看代理效果


集群


集群就是一组(成千上万)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统。每个集群节点都是运行各自服务的独立服务器,这些服务器之间可以彼此通信,协同向用户提供应用程序。系统资源和数据,并以单一系统的模式加以管理。当用户请求集群系统时,集群给用户的感觉就是一个单一独立的服务器,而实际上用户请求的上一组集群服务器。简单的说集群就是一堆服务器合作做同一件事。

集群的特点

1 提高性能

一些计算密集型应用,如:天气预报、核试验模拟等,需要计算机要有很强的运算处理能力,现有的技术,即使普通的大型机器计算也很难胜任。这时,一般都使用计算机集群技术,集中几十台甚至上百台计算机的运算能力来满足要求。提高处理性能一直是集群技术研究的一个重要目标之一。

2 降低成本

通常一套较好的集群配置,其软硬件开销要超过100000美元。但与价值上百万美元的专用超级计算机相比已属相当便宜。在达到同样性能的条件下,采用计算机集群比采用同等运算能力的大型计算机具有更高的性价比。

3 提高可扩展性

用户若想扩展系统能力,不得不购买更高性能的服务器,才能获得额外所需的CPU 和存储器。如果采用集群技术,则只需要将新的服务器加入集群中即可,对于客户来看,服务无论从连续性还是性能上都几乎没有变化,好像系统在不知不觉中完成了升级。

4 增强可靠性

集群技术使系统在故障发生时仍可以继续工作,将系统停运时间减到最小。集群系统在提高系统的可靠性的同时,也大大减小了故障损失。


nginx负载均衡


web服务器,要承受大量的请求,例如淘宝的双十一,单台机器难以承受那么多的压力,使用多台服务器组成集群,使用nginx负载均衡。将请求分散的给我们后台服务器集群中。实现负载的分发,会大大提升系统的性能。

nginx要实现负载均衡需要用到proxy_pass代理模块配置,nginx负载均衡与nginx代理不同地方在于nginx代理仅代理一台服务器,而nginx负载均衡则是将客户端请求代理转发至一组upstream负载均衡池。nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用。


upstream配置


1.在nginx.conf里写入下面内容,写在http区域中,和server同级,mynginx可以自己定义,后面的是两台服务器的地址和端口

upstream mynginx {
       server 192.168.88.67:8000;
       server 192.168.88.68:8000;
}

2.在nginx.conf > http 区域 >  server区域  > location配置中添加proxy_pass

location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://mynginx;
       include /opt/nginx1-16/conf/proxy_params;
}

解释

3.手动创建这个参数文件

touch /opt/nginx1-16/conf/proxy_params写入下面内容

[root@HH conf]# cat proxy_params 
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;

此时初步负载均衡已经完成,upstream默认按照轮训方式负载,每个请求按时间顺序逐一分配到后端节点。

检查配置文件并加载

4.配置应用服务器1

准备一个flask代码,运行  

准备代码 myflask.py

from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello():
    return "<h1>I am is zouzou ~~~~~</h1>"
if __name__=="__main__":
app.run(host='0.0.0.0',port=8000)

启动应用服务器

python3 myflask.py

 

5.配置应用服务器2

和上面的一样,可以把return里面的内容改一下,方便区分

 

6.通过访问nginx负载均衡器入口,查看负载均衡 是否正常分配,默认是轮训方式

访问自己的nginx负载均衡的ip地址,查看结果


upstream分配策略


在上面我们配置upstream时,没有加多余的参数,默认采用轮询的方式,一个服务器一次,循环,nginx提供给了我们其他的策略

weight 权重

upstream mynginx {
       server 192.168.88.67:8000 weight=3;
       server 192.168.88.68:8000 weight=7;  # 这个节点的访问频率是大于上面的,比例为3/7
}

ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器

upstream mynginx {
       ip_hash;  # 加个这就可以了
       server 192.168.88.67:8000;
       server 192.168.88.68:8000;  
}

backup

在非backup机器繁忙或者宕机时,请求backup机器,因此机器默认压力最小

upstream mynginx {
       server 192.168.88.67:8000;
       server 192.168.88.68:8000; 
       server node.zouzou.com:8080 backup; 
}

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
负载均衡 算法 搜索推荐
Nginx 常用的负载均衡算法
【10月更文挑战第17天】在实际应用中,我们需要根据具体的情况来选择合适的负载均衡算法。同时,还可以结合其他的优化措施,如服务器健康检查、动态调整权重等,来进一步提高负载均衡的效果和系统的稳定性。
122 59
|
2月前
|
监控 应用服务中间件 测试技术
确保正则表达式在 Nginx 代理中的准确性和稳定性
【10月更文挑战第19天】总之,正则表达式在 Nginx 代理中具有重要作用,但要确保其准确性和稳定性需要付出一定的努力和关注。通过以上方法的综合运用,我们可以提高正则表达式配置的可靠性,为用户提供更好的服务体验。
|
22天前
|
前端开发 应用服务中间件 定位技术
Nginx 如何代理转发传递真实 ip 地址?
【10月更文挑战第32天】
145 5
Nginx 如何代理转发传递真实 ip 地址?
|
17天前
|
负载均衡 前端开发 JavaScript
Nginx 代理多服务
以上是 Nginx 代理多服务的几种常见方式,在实际应用中,可以根据具体的业务需求和系统架构选择合适的代理方式,并结合其他 Nginx 的功能和配置来优化和完善系统的性能和功能。
|
2月前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
165 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
1月前
|
负载均衡 算法 应用服务中间件
Nginx 常用的负载均衡算法
【10月更文挑战第22天】不同的负载均衡算法各有特点和适用场景。在实际应用中,需要根据具体的业务需求、服务器性能和网络环境等因素来选择合适的算法。
38 3
|
2月前
|
应用服务中间件 API nginx
使用正则表达式实现 Nginx 代理
【10月更文挑战第19天】在不断发展的互联网技术中,掌握正则表达式在 Nginx 代理中的应用是非常重要的。不断探索和实践,将有助于我们在实际工作中更好地运用这一技术,提升项目的质量和效率。
|
2月前
|
缓存 负载均衡 应用服务中间件
Nginx 实现一个端口代理多个前后端服务
【10月更文挑战第19天】Nginx 的强大功能不仅限于此,它还可以与其他技术和工具相结合,为我们的应用提供更强大的支持和保障。在不断发展的互联网时代,掌握 Nginx 的使用技巧将为我们的工作和生活带来更多的便利和效益。
|
2月前
|
负载均衡 监控 应用服务中间件
除了 Nginx,还有以下一些常见的负载均衡工具
【10月更文挑战第17天】这些负载均衡工具各有特点和优势,在不同的应用场景中发挥着重要作用。选择合适的负载均衡工具需要综合考虑性能、功能、稳定性、成本等因素。
|
2月前
|
负载均衡 应用服务中间件 nginx
Nginx的6大负载均衡策略及权重轮询手写配置
【10月更文挑战第9天】 Nginx是一款高性能的HTTP服务器和反向代理服务器,它在处理大量并发请求时表现出色。Nginx的负载均衡功能可以将请求分发到多个服务器,提高网站的吞吐量和可靠性。以下是Nginx支持的6大负载均衡策略:
168 7