《前端运维》中Nginx如何实现高效代理与负载均衡配置?

2026-05-22 15:031阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1176个文字,预计阅读时间需要5分钟。

《前端运维》中Nginx如何实现高效代理与负载均衡配置?

一、代理服务+更易理解,简单来说。客户端访问服务器并非直接访问,而是通过中间的代理服务器,代理服务器再去访问服务器。就像一个中转站,无论什么,只需从客户出发即可。

一、代理服务

  比较容易理解吧,简单来说。客户端访问服务器并不是直接访问的,而是通过中间代理服务器,代理服务器再去访问服务器。就像一个中转站一样,无论什么,只要从客户端到服务器,你就要通过我。

《前端运维》中Nginx如何实现高效代理与负载均衡配置?

一)正向代理

  正向代理,就是代理服务器为客户端代理,也就是说,服务器并不知道真实的客户端是谁,而是通过代理服务器把请求发送给真实的服务器。比如,通过公司网络访问外网百度,那么公司的代理服务器就会代理你的主机,访问百度网站。百度服务器无法获得你个人的真实主机ip。

  就像上图展示的那样。web1、web2就是你在公司内的个人主机ip,然后通过公司的nginx代理服务器,访问外部网络。

语法:

Syntax: proxy_pass URL Default: -- Context: server,location

实践:

  删除之前的配置,然后我们加下正向代理的配置:

resolver 8.8.8.8; #谷歌的域名解析地址 location / { # $$localhost:3000; proxy_redirect default; #重定向 proxy_set_header Host $zhufeng; } } }

  然后呢,安装一下pm2:

yum install pm2 -g

  如果太慢的话,可以试试淘宝源。这里就不说怎么配置了哦。然后安装好pm2后,通过pm2启动各个node服务。pm2是一个node应用的进程管理器。

  然后,可以通过以下命令来启动和查看node服务进程:

# 启动node服务 pm2 start xxx.js name xxx # 查看当前服务 pm2 list

后端服务器调试状态:

状态描述 down 当前的服务器不参与负载均衡 backup 当其它节点都无法使用时的备份的服务器 max_fails 允许请求失败的次数,到达最大次数就会休眠 fail_timeout 经过max_fails失败后,服务暂停的时间,默认10秒 max_conns 限制每个server最大的接收的连接数,性能高的服务器可以连接数多一些

例子:

upstream webserver{ server localhost:3000 down; server localhost:4000 backup; server localhost:5000 max_fails=1 fail_timeout=10s; }

分配方式:

类型种类 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除 weight(加权轮询) 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况 ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题 least_conn 哪个机器上连接数少就分发给谁 url_hash(第三方) 按访问的URL地址来分配 请求,每个URL都定向到同一个后端 服务器上(缓存) fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配 正定义hash hash自定义key

例子:

upstream webserver{ ip_hash; server 127.0.0.1:3000; } upstream webserver{ least_conn; server 127.0.0.1:3000; } upstream webserver{ url_hash; server 127.0.0.1:3000; } upstream webserver{ fair; server 127.0.0.1:3000; } upstream webserver{ hash $request_uri; server 127.0.0.1:3000; } 三、其他 一)缓存

  首先啊,缓存有很多种,比如之前学过的浏览器缓存,还有应用服务器缓存,代理缓存,客户端缓存等等等等。我们可以在nginx中使用prxoy_cache来设置代理缓存。

webserver; } location ~ ^/cache/ { proxy_cache cache; proxy_cache_valid 200 206 304 301 302 60m; # 对哪些状态码缓存,过期时间为60分钟 proxy_cache_key $uri; #缓存的维度 proxy_no_cache $nocache; proxy_set_header Host $host:$server_port; #设置头 proxy_set_header X-Real-IP $remote_addr; #设置头 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #设置头 proxy_pass 127.0.0.1:6000; }

  然后呢,上面的各个字段的含义如下:

键值含义 proxy_cache 使用名为cache的对应缓存配置 proxy_cache_valid 200 206 304 301 302 10d; 对www.baidu.com redirect; } location ~ ^/permanent { rewrite ^/permanent www.baidu.com permanent; }

  可以通过curl来测试一下:

curl 115.29.148.6/break test curl 115.29.148.6/last {"code":0,"msg":"success"} curl -vL 115.29.148.6/redirect curl -vL 115.29.148.6/permanent

站在巨人的肩膀上,希望我可以看的更远。

本文共计1176个文字,预计阅读时间需要5分钟。

《前端运维》中Nginx如何实现高效代理与负载均衡配置?

一、代理服务+更易理解,简单来说。客户端访问服务器并非直接访问,而是通过中间的代理服务器,代理服务器再去访问服务器。就像一个中转站,无论什么,只需从客户出发即可。

一、代理服务

  比较容易理解吧,简单来说。客户端访问服务器并不是直接访问的,而是通过中间代理服务器,代理服务器再去访问服务器。就像一个中转站一样,无论什么,只要从客户端到服务器,你就要通过我。

《前端运维》中Nginx如何实现高效代理与负载均衡配置?

一)正向代理

  正向代理,就是代理服务器为客户端代理,也就是说,服务器并不知道真实的客户端是谁,而是通过代理服务器把请求发送给真实的服务器。比如,通过公司网络访问外网百度,那么公司的代理服务器就会代理你的主机,访问百度网站。百度服务器无法获得你个人的真实主机ip。

  就像上图展示的那样。web1、web2就是你在公司内的个人主机ip,然后通过公司的nginx代理服务器,访问外部网络。

语法:

Syntax: proxy_pass URL Default: -- Context: server,location

实践:

  删除之前的配置,然后我们加下正向代理的配置:

resolver 8.8.8.8; #谷歌的域名解析地址 location / { # $$localhost:3000; proxy_redirect default; #重定向 proxy_set_header Host $zhufeng; } } }

  然后呢,安装一下pm2:

yum install pm2 -g

  如果太慢的话,可以试试淘宝源。这里就不说怎么配置了哦。然后安装好pm2后,通过pm2启动各个node服务。pm2是一个node应用的进程管理器。

  然后,可以通过以下命令来启动和查看node服务进程:

# 启动node服务 pm2 start xxx.js name xxx # 查看当前服务 pm2 list

后端服务器调试状态:

状态描述 down 当前的服务器不参与负载均衡 backup 当其它节点都无法使用时的备份的服务器 max_fails 允许请求失败的次数,到达最大次数就会休眠 fail_timeout 经过max_fails失败后,服务暂停的时间,默认10秒 max_conns 限制每个server最大的接收的连接数,性能高的服务器可以连接数多一些

例子:

upstream webserver{ server localhost:3000 down; server localhost:4000 backup; server localhost:5000 max_fails=1 fail_timeout=10s; }

分配方式:

类型种类 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除 weight(加权轮询) 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况 ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题 least_conn 哪个机器上连接数少就分发给谁 url_hash(第三方) 按访问的URL地址来分配 请求,每个URL都定向到同一个后端 服务器上(缓存) fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配 正定义hash hash自定义key

例子:

upstream webserver{ ip_hash; server 127.0.0.1:3000; } upstream webserver{ least_conn; server 127.0.0.1:3000; } upstream webserver{ url_hash; server 127.0.0.1:3000; } upstream webserver{ fair; server 127.0.0.1:3000; } upstream webserver{ hash $request_uri; server 127.0.0.1:3000; } 三、其他 一)缓存

  首先啊,缓存有很多种,比如之前学过的浏览器缓存,还有应用服务器缓存,代理缓存,客户端缓存等等等等。我们可以在nginx中使用prxoy_cache来设置代理缓存。

webserver; } location ~ ^/cache/ { proxy_cache cache; proxy_cache_valid 200 206 304 301 302 60m; # 对哪些状态码缓存,过期时间为60分钟 proxy_cache_key $uri; #缓存的维度 proxy_no_cache $nocache; proxy_set_header Host $host:$server_port; #设置头 proxy_set_header X-Real-IP $remote_addr; #设置头 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #设置头 proxy_pass 127.0.0.1:6000; }

  然后呢,上面的各个字段的含义如下:

键值含义 proxy_cache 使用名为cache的对应缓存配置 proxy_cache_valid 200 206 304 301 302 10d; 对www.baidu.com redirect; } location ~ ^/permanent { rewrite ^/permanent www.baidu.com permanent; }

  可以通过curl来测试一下:

curl 115.29.148.6/break test curl 115.29.148.6/last {"code":0,"msg":"success"} curl -vL 115.29.148.6/redirect curl -vL 115.29.148.6/permanent

站在巨人的肩膀上,希望我可以看的更远。