web集群学习:基于nginx的反向代理和负载均衡

这篇具有很好参考价值的文章主要介绍了web集群学习:基于nginx的反向代理和负载均衡。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一,反向代理

1,环境准备

2,配置代理服务器

3,在物理机上一管理员身份打开文本编辑器,编辑C:\Windows\System32\drivers\etc目录下的hosts文件

4,访问测试

5,查看日志,并记录客户端真实ip地址

二,负载均衡

1,upstream模块

2,实现配置简单的负载均衡

3,实现backup功能

4,实现地址会话保持(hash)


一,反向代理

1,环境准备

硬件:两台web服务器充当后端服务器,一台代理服务器

web1:192.168.150.13

web2:192.168.150.14

代理:192.168.150.12

配置用于测试的两台Web服务

cd /usr/share/nginx/html/
echo "web test page,`hostname -I`." > index.html 
systemctl restart nginx
2,配置代理服务器
cd /etc/ngnix/conf.d/
vim vhost.conf
server {
    listen    80;
    server_name    web1.openlab.cn;

    location / {
        proxy_pass http://192.168.150.13;
     }
}

server {
    listen    80;
    server_name    web2.openlab.cn;

    location / {
        proxy_pass http://192.168.150.14;
     }
}

重启nginx

systemctl restart nginx
3,在物理机上一管理员身份打开文本编辑器,编辑C:\Windows\System32\drivers\etc目录下的hosts文件
192.168.150.12    web1.openlab.cn    web2.openlab.cn
4,访问测试

在浏览器输入请求:web1.openlab.cn或web2.openlab.cn会被反向代理服务器转到后端Web服务器192.168.150.13或192.168.150.14中进行处理

5,查看日志,并记录客户端真实ip地址

tail /var/log/nginx/access.log

完成了反向代理WWW服务后,发现一个问题,节点服务器对应的WWW虚拟主机的访问日志的第一个 字段记录的并不是客户端的IP,而是反向代理服务器的IP,最后一个字段也是“-”!

nginx负载均衡相关重要参数

proxy_pass http://server_pools 通过proxy_pass功能把用户的清求转向到反向代理定义的upstream服务器池
proxy_set_header Host $host   在代理向后端服务器发送的 http请求头中加入 host字段信息,用于当后端 服务器配置有多个虚拟主机时,可以识别代理的是哪个虚拟主机。这是节点 服务器多虚拟主机时的关键配置
proxy_set_header X-Forwarded-For $remote_addr        

在代理向后端服务器发送的 http请求头中加入 X-Forward-For字段信息, 用于后端服务器程序、日志等接收记录真实用户的 IP ,而不是代理服务器的 IP这是反向代理时,节点服务器获取用户真实 IP的必要功能配置

如何在日志文件记录客户端真实ip地址

添加 proxy_set_header X-Forwarded-For $remote_addr;     //默认行首

添加 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   //默认行尾   

server {
    listen    80;
    server_name    web1.openlab.cn;

    location / {
        proxy_pass http://192.168.150.13;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
}

server {
    listen    80;
    server_name    web2.openlab.cn;

    location / {
        proxy_pass http://192.168.150.14;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
}

proxy_set_header Host $host;//在代理向后端服务器发送的 http请求头中加入 host字段信息,用于当后端 服务器配置有多个虚拟主机时,可以识别代理的是哪个虚拟主机。这是节点 服务器多虚拟主机时的关键配置

二,负载均衡

1,upstream模块
server 10.0.10.8:80 负载均衡后面的RS配置,可以是IP或域名,如果端口不写,默认是80端口。 高并发场景下, IP可换成域名,通过 DNS做负载均衡。
weigth=1 代表服务器的权重,默认值是1。权重数字越大表示接受的请求比例越大。
max_fails=3 Nginx尝试连接后端主机失败的次数,这个值是配合 proxy_next_upstream、fastcgi_next_upstream和 memcached_next_upstream 这三个参数来使用的。当nginx接收后端服务 器返回这三个参数定义的状态码时,会将这个请求转发给正常工作的后端服 务器,例如404、502、503、 Max_fails的默认值是1 ;企业场景下建议2-3 次。如京东1次,蓝汛10次,根据业务需求去配置
fail_timeout=10s 在max_fails定义的失败次数后,距离下次检查的间隔时间,默认是10s ;如果 max_fails是5 ,它就检测5次,如果5次都是502,那么,它就会根据 fail_timeout的值,等待10s再去检查,还是只检查一次,如果持续502,在不 重新加载 Nginx配置的情况下,每隔10s都只检查一次。常规业务2~3秒比较 合理,比如京东3秒,蓝汛3秒,可根据业务需求去配置。
backup 热备配置(RS节点的高可用),当前面激活的RS都失败后会自动启用热备RS 这标志看这个服务器作为备份服务器,若主服务器全部宕机了,就会向它转 发请求。注意:当负载调度算法为ip_hash时,后端服务器在负载均衡调度中 的状态不能是weight和backup。
down 这标志着服务器永远不可用,这个参数可配合ip_hash使用;类似与注释。
2,实现配置简单的负载均衡

模块说明:

ngx_http_proxy_module:proxy 代理模块, 用于把请求后拋给服务器节点或 upstream 服务器池

ngx_http_upstream_module:负载均衡模块, 可以实现网站的负载均衡功能及节点的健康检査

upstream web_pools {
    server 192.168.150.13 weight=2;
    server 192.168.150.14 weight=1;
}

server {
    listen    80;
    server_name    web1.openlab.cn;

    location / {
        proxy_pass http://web_pools;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
}

去本地/etc/hosts文件添加域名解析并重启nginx服务

192.168.150.12        web1.openlab.cn

客户端测试:for ((i=1;i<=10;i++)); do curl web1.openlab.cn; done文章来源地址https://www.toymoban.com/news/detail-647994.html

3,实现backup功能
upstream web_pools {
    server 192.168.150.13 weight=2;
    server 192.168.150.14 weight=1;
    server 192.168.150.11 backup;
}


server {
    listen    80;
    server_name    web1.openlab.cn;

    location / {
        proxy_pass http://web_pools;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
}
4,实现地址会话保持(hash)
upstream web_pools {
    ip_hash
    server 192.168.150.13 weight=2;
    server 192.168.150.14 weight=1;
    #server 192.168.150.11 backup;
}


server {
    listen    80;
    server_name    web1.openlab.cn;

    location / {
        proxy_pass http://web_pools;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
}

到了这里,关于web集群学习:基于nginx的反向代理和负载均衡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx反向代理、负载均衡

         

    2024年02月12日
    浏览(34)
  • Nginx 反向代理负载均衡

    Nginx 反向代理负载均衡 普通的负载均衡软件,如 LVS,其实现的功能只是对请求数据包的转发、传递,从负载均衡下的节点服务器来看,接收到的请求还是来自访问负载均衡器的客户端的真实用户;而反向代理就不一样了,反向代理服务器在接收访问用户请求后,会代理用户

    2024年02月03日
    浏览(43)
  • nginx反向代理 负载均衡

    目录 1.反向代理介绍:  2.七层代理和四层代理:   2.1 七层代理:   2.2 四层代理: 3.反向代理web服务器:   3.1 代理服务器配置: 3.2 服务器配置 : 3.3 客户端访问: 3.4 代理不同端口: 4.反向代理动静分离:   4.1  准备:   4.2 代理服务器配置:   4.3 动态服务器配置:

    2024年02月10日
    浏览(37)
  • nginx负载均衡+反向代理

    最近业务上遇到一个需求,其它系统因业务校验需要调用上级系统进行数据发送或校验,如果上级系统停机维护,其它下级系统发送的http通讯会丢失,还要一次次补发数据,耗费人工与时间。使用nginx+反向代理解决了部分需求。 目标:当服务A停机维护,其它系统会调用服务

    2024年02月08日
    浏览(35)
  • Nginx反向代理和负载均衡

    ` 正向代理 反向代理 七层反向代理: (基于http协议) http { upstream 服务器组名称 { server IP1:PORT [weight=1 …]; server IP2:PORT; … 调度算法(rr轮询/加权轮询,least_conn最小连接,ip_hash,url_hash,fair); } server { location ~ … { proxy_pass http://服务器组名称; proxy_set_header HosT $host; proxy_set_he

    2024年02月03日
    浏览(78)
  • Nginx反向代理与负载均衡

    代理是在服务器和客户端之间假设的一层服务器,代理将接收客户端的请求并将它转发给服务器,然后将服务端的响应转发给客户端。 不管是正向代理还是反向代理,实现的都是上面的功能。 正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从

    2023年04月26日
    浏览(36)
  • 06、Nginx反向代理与负载均衡

    反向代理 : 这种代理方式叫做,隧道代理。有性能瓶颈,因为所有的数据都经过Nginx,所以Nginx服务器的性能至关重要 负载均衡 : 把请求,按照一定算法规则,分配给多台业务服务器(即使其中一个坏了/维护升级,还有其他服务器可以继续提供服务) 反向代理+负载均衡:

    2024年02月12日
    浏览(40)
  • Nginx的反向代理和负载均衡

    Nginx作为面试中的大…小头目,自然是不能忽视的,而以下两点就是它能成为面试中头目的招牌。 反向代理和负载均衡 在此之前,我们先对Nginx做一个简单的了解 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。因它的稳定性、丰富的功能

    2024年02月08日
    浏览(40)
  • 【nginx实战】nginx正向代理、反向代理、由反向代理实现的负载均衡、故障转移详解

    本文将要讨论以下内容 正向代理与反向代理的基本概念 Nginx正向代理服务的配置指令、Nginx反向代理服务的配置指令 Nginx反向代理服务器的应用——负载均衡、故障转移 案例分析   正向代理的概念 局域网内的机器借助代理服务访问局域网外的网站,此代理服务器提供的服务

    2024年01月24日
    浏览(43)
  • Nginx【反向代理负载均衡动静分离】--下

    示意图 图解 一个master 管理多个worker ● 争抢机制示意图 图解 一个master Process 管理多个worker process, 也就是说Nginx 采用的是多进程结构, 而不是多线程结构. 当client 发出请求(任务)时,master Process 会通知管理的worker process worker process 开始争抢任务, 争抢到的worker process 会开启连

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包