《前端运维》中Nginx如何实现高效代理与负载均衡配置?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1176个文字,预计阅读时间需要5分钟。
一、代理服务+更易理解,简单来说。客户端访问服务器并非直接访问,而是通过中间的代理服务器,代理服务器再去访问服务器。就像一个中转站,无论什么,只需从客户出发即可。
一、代理服务比较容易理解吧,简单来说。客户端访问服务器并不是直接访问的,而是通过中间代理服务器,代理服务器再去访问服务器。就像一个中转站一样,无论什么,只要从客户端到服务器,你就要通过我。
正向代理,就是代理服务器为客户端代理,也就是说,服务器并不知道真实的客户端是谁,而是通过代理服务器把请求发送给真实的服务器。比如,通过公司网络访问外网百度,那么公司的代理服务器就会代理你的主机,访问百度网站。百度服务器无法获得你个人的真实主机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
后端服务器调试状态:
例子:
upstream webserver{ server localhost:3000 down; server localhost:4000 backup; server localhost:5000 max_fails=1 fail_timeout=10s; }
分配方式:
例子:
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; }
然后呢,上面的各个字段的含义如下:
可以通过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分钟。
一、代理服务+更易理解,简单来说。客户端访问服务器并非直接访问,而是通过中间的代理服务器,代理服务器再去访问服务器。就像一个中转站,无论什么,只需从客户出发即可。
一、代理服务比较容易理解吧,简单来说。客户端访问服务器并不是直接访问的,而是通过中间代理服务器,代理服务器再去访问服务器。就像一个中转站一样,无论什么,只要从客户端到服务器,你就要通过我。
正向代理,就是代理服务器为客户端代理,也就是说,服务器并不知道真实的客户端是谁,而是通过代理服务器把请求发送给真实的服务器。比如,通过公司网络访问外网百度,那么公司的代理服务器就会代理你的主机,访问百度网站。百度服务器无法获得你个人的真实主机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
后端服务器调试状态:
例子:
upstream webserver{ server localhost:3000 down; server localhost:4000 backup; server localhost:5000 max_fails=1 fail_timeout=10s; }
分配方式:
例子:
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; }
然后呢,上面的各个字段的含义如下:
可以通过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
站在巨人的肩膀上,希望我可以看的更远。
