了解最新公司动态及行业资讯
1.反向代理
反向代理应该是 Nginx 做的最多的事情之一。哪些是反向代理?简单来说,真实服务器是不能被外网直接访问的,所以需要一个代理服务器,而代理服务器可以被外网访问,并且和真实服务器处于同一个网络环境中。其实可能是同一台服务器,不同的端口。
下面贴出实现反向代理的简单代码-
server { listen 80; server_name localhost; client_max_body_size 1024M; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host:$server_port; }}
保存配置文件后启动Nginx,所以我们访问的时候就相当于访问:8080。
2.负载平衡
负载均衡也是Nginx的一个常用功能。负载均衡是指分散在多个运行单元上执行,如Web服务器、FTP服务器、企业关键应用服务器等关键任务服务器服务器运维,从而共同完成工作任务。简单来说,当有两台或多台服务器时,请求按照规则随机分发到指定的服务器上进行处理。负载均衡配置通常需要同时配置反向代理,反向代理用于跳转到负载均衡。 Nginx 目前支持 3 种负载均衡策略和 2 种常用的第三方策略。
1、RR(默认)
每个请求按时间顺序一一分配给不同的前端服务器。如果前端服务器宕机,可以手动排除。
upstream test { server localhost:8080; server localhost:8081; } server { listen 81; server_name localhost; client_max_body_size 1024M; location / { proxy_pass http://test; proxy_set_header Host $host:$server_port; } }
负载均衡的核心代码是-
upstream test { server localhost:8080; server localhost:8081; }
2、权重
指定协程概率,与访问百分比成反比服务器运维,在前端服务器性能不均衡时使用。比如
通常10次中只有1次会访问8081,9次会访问8080-
3、(按住)
这里面的两种形式有一个问题,就是下一个请求来的时候,请求可能会分发到另外一个服务器上。当我们的程序不是无状态的(使用保存数据)的时候,这个时候就出现了很大的问题。例如登录信息保存在 中,所以当你跳转到另一个服务器时,你需要重新登录。很多时候,我们需要一个客户只访问一台服务器。需要使用,每个请求根据访问ip的hash结果分配,让每个访问者对前端服务器有固定的访问权限,可以解决问题。
upstream test { ip_hash; server localhost:8080; server localhost:8081; }
4、公平(第三方)
根据前端服务器的响应时间分配请求,响应时间短的优先。
upstream backend { fair; server localhost:8080; server localhost:8081; }
5、(第三方)
根据访问url的hash结果分配请求,使每个url指向同一个前端服务器,在前端服务器缓存的情况下更有效。句中加一个hash语句,其他参数如不能写在句中,就是使用的hash算法
upstream backend { hash $request_uri; hash_method crc32; server localhost:8080; server localhost:8081; }