反向代理服务器Nginx

Nginx

介绍:是个服务器
作用:其主要解决的是,当有很多个客户端访问多个服务器时(大于一个),的分配策略 ,缓解了服务器的压力
功能:反向代理、动静分离、负载均衡、高可用集群 (这四个就是分配策略)
分点说明:
反向代理
代理:中间人的意思,
情景A: 小A(客户端)同学想去一个店名叫“渴了吗”的店(目标服务器)买水喝,但是他的脚受伤了,所以拜托了小B(代理服务器)同学帮忙买水 ,小B买到水后,将水交给小A
情景A就是正向代理

情景B: 小A(客户端)同学想去买水喝,但是他的脚受伤了,所以拜托了小B(反向代理服务器)同学帮忙买水(记住此时小A并没有指明去哪里买) ,小B买到水后(小A并不知道小B从哪里买到的水),将水交给小A
情景B就是反向代理

问:那有啥作用没?
答:正向代理可以隐藏客户端的IP ,反向代理可以隐藏服务器的IP

负载均衡
当有1000个客户端访问1个服务器时,问题不大;但是如果一个服务器要处理1百万个请求,那这个服务器还顶得住吗?

如何解决这个问题呢?
加多几台服务器,再对客户端的请求进行分配给不同的服务器就好了
在这里插入图片描述
动静分离
把一些静态资源(比如:前端主要是一些html、css、图片等等)放在一个服务器,把另一些非静态资源放在另外一台服务器

高可用集群
既然服务器有时候会出问题时,有具体的解决方案,那Nginx出问题了 可怎么办呢?
这就要引出这个高可用概念了;既然一台有可能出问题,那我就根据具体情况多准备几台备用的Nginx不就好了嘛
在这里插入图片描述
Nginx配置文件:
包含三部分内容
(1)全局块:配置服务器整体运行的配置指令
比如 worker_processes 1;处理并发数的配置
(2)events 块:影响 Nginx 服务器与用户的网络连接
比如 worker_connections 1024; 支持的最大连接数为 1024
(3)http 块,包含两部分:
1、http 全局块
2、server 块

功能1–反向代理:配置 配置文件
问:有个需求 就是当我们访问了 Ngnix的80端口时,能不能转发到其他端口上,让其他端口为客户端服务 ?
答:在 nginx 进行请求转发的配置(反向代理配置),因为http块下有许多个server块

    #server {
    #    listen       8000;  //Nginx即将开启的端口       
    #    server_name  localhost; //本机地址 一般这么写就行了

    #    location / {
    #        root   html;   
             proxy_pass http://127.0.0.1:8080  //意思就是:当客户端访问了Ngnix的8000端口时,Nginx就让本机的8080来服务客户端
    #        index  index.html index.htm;
    #    }
    #}

有个需求:当客户端访问http://47.115.53.81:8000/first 时,转发到 http://127.0.0.1:8081 ,当客户端访问http://47.115.53.81:8000/second 时,转发到 http://127.0.0.1:8082 ,

    #server {
    #    listen       8000;  //Nginx即将开启的端口       
    #    server_name  localhost; //本机地址 一般这么写就行了
        // '~'的意思是 后面的这个 /uri/  是个正则表达式
        //当然不止'~'一种,还有其它三种
    #    location ~ /first/ {
              proxy_pass http://127.0.0.1:8081  //意思就是:当客户端访问了Ngnix的8000端口的first,Nginx就让本机的8080来服务客户端
    #    }
    
         location ~ /second/ {
             proxy_pass http://127.0.0.1:8082  //意思就是:当客户端访问了Ngnix的8000端口的second,Nginx就让本机的8080来服务客户端
    #    }
    }

功能2 --负载均衡:配置 配置文件
需求:假设有两个客户端,我们把这两个客户端分配到 另两个服务器上 ----- 即一对一的关系
这样就需要两台Tomcat服务器,
1.先下载两台Tomcat服务器,设置不同的开放端口(在xml文件中)
2. 在http块(不是在server)中添加

upstream myserver {  //myserver 任意取的名字
    server 127.0.0.1:8083  //其中一台tomcat开启了这个端口
    server 127.0.0.1:8084   //另一台tomcat开启了这个端口
 //1.这样写就会轮流访问上面的对应的端口了 按照一人一次 的顺序循环(轮询--默认的)     
 //2.weight -- weight 代表权重默认为 1,权重越高被分配的客户端越多  例: server 192.168.5.21 weight=10;
 //3.ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器 例:
 upstream my_server{ 
	ip_hash; 
	server 127.0.0.1:8083; 
	server 127.0.0.1:8084; 
}
//4.fair(第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配。例:
 upstream my_server{ 
	server 127.0.0.1:8083; 
	server 127.0.0.1:8084; 
	fair;
}
}

    #server {
    #    listen       80;
    #    server_name  localhost;

    #    location / {
    #        proxy_pass http://myserver;
            
    
          }
    #}

功能3 --动静分离:配置 配置文件
需求:把静态资源单独放到一个文件下(html/css/image…)

server{
    listen  80;
    server_name localhost;
    //解释: 当客户端访问http://47.115.53.81:80/resource/a.html时
    //就会以本机的 /data 文件夹为根,
    //并且在data文件夹下寻找resource文件夹下的a.html文件
    location /resource/ {
        root  /data/;
        index index.html index.htm
    }
    
    //同理
    location /images/ {
        root  /data/;
        autoindex  on; //这个的意思是,当客户端访问
        //http://47.115.53.81:80/images时,能查看到images目录下的所有文件
    }
}

最后:
nginx是由mater 和 worker组成的, 可以在nginx的配置文件配置worker个数,worker与cpu个数相同是最好的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值