Nginx 认识和深入

Nginx 认识和深入

Nginx 简介

Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好。Nginx 专为性能优化而开发,性能是其最重要的要求,十分注重效率,有报告 Nginx 能支持高达 50000 个并发连接数。

在这里插入图片描述

正向代理

正向代理:局域网中的电脑用户想要直接访问网络是不可行的,只能通过代理服务器来访问,这种代理服务就被称为正向代理。

在这里插入图片描述

总结: 代理用户的访问,是正向代理。

反向代理


反向代理:客户端无法感知代理,因为客户端访问网络不需要配置,只要把请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,然后再返回到客户端。

此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。

在这里插入图片描述

总结:代理服务器获取数据的,是反向代理。

负载均衡

客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕之后,再将结果返回给客户端。

普通请求和响应过程如下图:

在这里插入图片描述

但是随着信息数量增长,访问量和数据量飞速增长,普通架构无法满足现在的需求。

我们首先想到的是升级服务器配置,可以由于摩尔定律的日益失效,单纯从硬件提升性能已经逐渐不可取了,怎么解决这种需求呢?

我们可以增加服务器的数量,构建集群,将请求分发到各个服务器上,将原来请求集中到单个服务器的情况改为请求分发到多个服务器,也就是我们说的负载均衡。

负载均衡图:

在这里插入图片描述

假设有 15 个请求发送到代理服务器,那么由代理服务器根据服务器数量,平均分配,每个服务器处理 5 个请求,这个过程就叫做负载均衡。

为了解决高并发问题,负载均衡服务器拦截所有的请求,采用负载均衡算法,分配到不同的tomcat上。

upstram XXX: 表示负载均衡服务器,也是通常再说的上游服务器。

三种基本的负载均衡算法: 轮询、权重、ip绑定。

轮询: 这是Nginx默认的负载均衡算法,简单来说就是从上到下按顺序轮流(127.0.0.1:8082轮完就轮到127.0.0.1:8081,127.0.0.1:8081轮完就轮到127.0.0.1:8082)。

 upstream  tomcat {
       server 127.0.0.1:8082;
       server 127.0.0.1:8081;
    }
    server {
        listen       80;
        server_name  www.tuesdayma.com;
        location / {
            proxy_pass  http://tomcat;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

权重: 就是哪台服务器配置好就多轮几次,或者你就想某个服务器多轮几次。简单来说就是轮到次数的比例,数字越大表示轮到的概率越大。( weight都设置为1的时候和轮询没什么区别)关键字 weight

 upstream  tomcat {
       server 127.0.0.1:8082 weight=2;
       server 127.0.0.1:8081 weight=5;
    }
    server {
        listen       80;
        server_name  www.tuesdayma.com;
        location / {
            proxy_pass  http://tomcat;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

ip绑定: 你第一次访问的时候,Nginx会根据你的ip通过哈希算法,算出某个值,然后取分配哪个Tomcat,当你第二次访问,第三次访问。。。之后的任何一次访问都是去请求那个第一次访问的Tomcat,关键字 ip_hash

 upstream  tomcat {
       server 127.0.0.1:8082 ;
       server 127.0.0.1:8081 ;
       ip_hash;
    }
    server {
        listen       80;
        server_name  www.tuesdayma.com;
        location / {
            proxy_pass  http://tomcat;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

动静分离

为了加快网站的解析速度,可以把动态页面和静态页面交给不同的服务器来解析,加快解析的速度,降低由单个服务器的压力。

动静分离之前:

在这里插入图片描述

动静分离之后

在这里插入图片描述

Nginx 安装

安装参考地址

https://blog.youkuaiyun.com/Crazy_Cw/article/details/105728314

Nginx 常用命令

#查看版本
./nginx -v

#启动
./nginx

#关闭
 ./nginx -s stop
 ./nginx -s quit
 
#重新加载
./nginx -s reload

Nginx 的配置文件


官网对各个模块参数配置的解释说明网址: Nginx中文文档
在这里插入图片描述

配置文件分三部分组成

  • 全局块

    从配置文件开始到 events 块之间,主要是设置一些影响 Nginx 服务器整体运行的配置指令。

    并发处理服务的配置,值越大,可以支持的并发处理量越多,但是会受到硬件、软件等设备的制约。

在这里插入图片描述

  • events块

    影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 workprocess 下的网络连接进行序列化,是否允许同时接收多个网络连接等等。

    在这里插入图片描述

  • HTPP块

    诸如反向代理和负载均衡都在此配置。

    location [ = | ~ | ~* | ^~] url{
    
    }
    

    location 指令说明,该语法用来匹配 url,语法如上:

    • **=:**用于不含正则表达式的 url 前,要求字符串与 url 严格匹配,匹配成功就停止向下搜索并处理请求。
    • **~:**用于表示 url 包含正则表达式,并且区分大小写。
    • **~*:**用于表示 url 包含正则表达式,并且不区分大小写。
    • **^~:**用于不含正则表达式的 url 前,要求 Nginx 服务器找到表示 url 和字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再匹配。
    • 如果有 url 包含正则表达式,不需要有 ~ 开头标识。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可乐cc呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值