Nginx

2021/9/10 7:03:56

本文主要是介绍Nginx,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 代理
    • 1、正向代理:
    • 2、向代理:
    • 3、反向代理的实现
  • Nginx实现负载均衡
    • 标题一、负载均衡的作用
    • 标题二、Nginx实现负载均衡

代理

1、正向代理:

是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

2、向代理:

客户端发送请求给反向代理服务器,但是代理服务器上没有客户端需要的资源,代理服务器会判断转发到原始服务器获得资源,并把资源返回给客户端;在整个过程,客户端不知道自己访问的是一个代理服务器,而是一个原始服务器

总结:正向代理代理的是客户端;反向代理代理的是服务器

3、反向代理的实现

在nginx.conf中修改

upstream tomcatserver1 {
    server 192.168.72.49:8081;
    }
upstream tomcatserver2 {
    server 192.168.72.49:8082;
    }
server {
        listen       80;
        server_name  8081.max.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass   http://tomcatserver1;
            index  index.html index.htm;
        }     
    }
server {
        listen       80;
        server_name  8082.max.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass   http://tomcatserver2;
            index  index.html index.htm;
        }        
    }

server_name 配置的域名
server_name 配置的是真实地址
1)浏览器访问8081.max.com,通过本地host文件域名解析,找到192.168.72.49服务器(安装nginx)

2)nginx反向代理接受客户机请求,找到server_name为8081.max.com的server节点,根据proxy_pass对应的http路径,将请求转发到upstream tomcatserver1上,即端口号为8081的tomcat服务器。

3)请求8082.max.com,tomcat2接收返回首页

Nginx实现负载均衡

企业在解决高并发问题时,一般有两个方向的处理策略,软件、硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中web服务器前面一层最常用的的添加负载方案就是使用nginx实现负载均衡。

标题一、负载均衡的作用

1、转发功能
按照一定的算法【权重、轮询、iphash】,将客户端的请求转发到不同服务器上,减轻单个服务器的压力,提升系统的并发量

2、故障移除
通过心跳监测的方式,判断服务器是否正常运作,如果服务器宕机,自动将请求转发到其他服务器

3、恢复添加
如果检测到发生故障的服务器恢复工作,自动将他添加到处理请求的队伍中去

标题二、Nginx实现负载均衡

Nginx的负载分发策略

Nginx 的 upstream目前支持的分配算法:

1)、轮询 ——1:1 轮流处理请求(默认)

  • 每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询。

2)、权重 ——you can you up

  • 通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。

3)、ip_哈希算法

  • 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。

Nginx负载均衡器配置:
在默认安装的Nginx配置文件Nginx.conf中。

我们使用 nginx 中的 upstream模块 来实现nginx将跨越单机的限制,完成网络数据的接收、处理和转发。我们主要使用提到的转发功能进行调度分发。

upstream myServer {    
  
    server 192.168.72.49:9090 down;   
    server 192.168.72.49:8080 weight=2;   
    server 192.168.72.49:6060;   
    server 192.168.72.49:7070 backup; 
//什么都不加,默认轮询  
//down 表示单前的server临时不參与负载.
//weight 默觉得1.weight越大,负载的权重就越大
//backup: 其他全部的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻
}

源地址哈希法

  • 对访问用户的IP进行hash后的结果进行分配,这样每一个用户固定请求同一个后端服务器,能够解决session的问题。
upstream myServer {
		ip_hash; 
        server **.***.***.***:8080;
        server **.***.***.***:9090;
}


这篇关于Nginx的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程