Nginx 负载均衡配置
Nginx有一个主要的功能就是负载均衡,负载均衡可以让Nginx将客户端传过来的请求分配到代理的服务上。
首先配置两个虚拟主机,然后分别使用81和82 端口监听。
主配置文件nginx.conf
[root@node1 conf]# cat nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; include domains/*; }
虚拟主机1 v1.ryan.net使用81端口。
[root@node1 domains]# cat v1.ryan.net server { listen 81; server_name v1.ryan.net; location / { root /data/www/v1.ryan.net/; index index.html index.htm; } error_page 404 403 500 502 503 504 /50x.html; location = /50x.html { root /data/www/v1.ryan.net/; } }
虚拟主机2 v2.ryan.net使用82端口。
[root@node1 domains]# cat v2.ryan.net server { listen 82; server_name v2.ryan.net; location / { root /data/www/v2.ryan.net/; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
然后重启nginx服务。
[root@node1 domains]# /usr/pkgs/nginx/sbin/nginx -s reload [root@node1 domains]# netstat -ntlp |grep nginx tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN 18125/nginx: master tcp 0 0 0.0.0.0:82 0.0.0.0:* LISTEN 18125/nginx: master
然后我们配置加入负载均衡配置。
upstream块,定义一个上游服务器集群,便于反向代理中proxy_pass使用。
server块,配置指定一台上游服务器名字,可以是域名,ip地址端口,UNIX句柄等。
weight 设置向这台上游服务器转发的权重,默认为1.
max_fails 与fail_timeout配合使用,在fail_timeout时间段内,如果上游某个服务器失败次数超过max_fails。则 fail_timeout时间段内,这个服务器不可用,不再对该服务器发送请求。
ip_hash 根据客户端的ip,生成一个hash值,然后将该has值与集群里的服务器进行取模,然后把取模后的结果发到相应的服务器上,这样每个ip都会有自己固定的上游服务器。 ip_hash与 weight不能同时使用。
proxy_pass 反向代理模块,proxy_pass将当前请求反向代理到URL参数指定的服务器上,URL可以是主机名,或IP端口号的形式。也可以是UNIX句柄,也可以说upstream块的名字,
[root@node1 domains]# cat proxy.net upstream test_proxy{
#ip_hash; server 192.168.31.100:81 weight=100 max_fails=2 fail_timeout=15; server 192.168.31.100:82 weight=100 max_fails=2 fail_timeout=15; } server{ listen 80; server_name v.ryan.net; location / { proxy_pass http://test_proxy; proxy_set_header Host $host; index index.html index.htm; } }
然后重启nginx服务。
[root@node1 domains]# /usr/pkgs/nginx/sbin/nginx -s reload [root@node1 domains]# netstat -ntlp |grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 18125/nginx: master tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN 18125/nginx: master tcp 0 0 0.0.0.0:82 0.0.0.0:* LISTEN 18125/nginx: master
然后在自己window电脑上 修改dns解析
然后访问 v.ryan.net测试负载均衡是否起作用。
访问v.ryan.net可以看到请求分配到v2.ryan.net
刷新v.ryan.net 可以看到请求分配到v1.ryan.net,这样就实现了负载均衡。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?