Nginx

1.概述

Nginx是高新能的http和反向代理服务器支持50000个并发连接数

2.反向代理

1.正向代理

在客户端配置代理服务器,通过服务器进行互联网访问
在这里插入图片描述

2.反向代理

只需要请求发送到反向代理服务器,由反向代理服务器通过规则去选择目标服务器获取数据返回给客户端
在这里插入图片描述

3.负载均衡

将原先单个请求服务器通过负载均衡分发到多个服务器上面
在这里插入图片描述

4.动静分离

将动态页面和静态页面由不通的服务器来解析,加速解析速度,降低单台服务器压力
在这里插入图片描述

5.下载安装nginx见

https://editor.youkuaiyun.com/md/?articleId=121239576

6.Nginx操作常用命令

1.查看nginx版本号

./nginx -v
在这里插入图片描述

2.关闭nginx

./nginx -s stop
在这里插入图片描述

3.启动nginx

./nginx -p /home/nginx/run -c /home/nginx/conf/nginx.conf
指定进程目录和配置文件
在这里插入图片描述

4.重新加载nginx即可重新加载配置文件

./nginx -s reload
在这里插入图片描述

7.Nginx配置文件

(1).nginx配置文件有三部分组成

1.全局块

从配置文件开始到events块之间的内容,主要设置一些影响Nginx服务器整体运行的配置指令,主要包括配置运行Nginx服务器的用户(组),允许生成的worker process数,进程PID存放路径,日志存放路径以及配置文件的引入等

在这里插入图片描述
比如worker_processes 4 值越大,可以支持的并发处理量越多

2.event块

event块涉及的指令主要影响Nginx服务器与用户的网络连接,常用的设置包括是否开启多 worker process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个work process可以同时支持的最大连接数等
在这里插入图片描述
use epoll 表示使用epoll模型
worker_connections 单个进程允许的客户端最大连接数

3.http块

Nginx最频繁的配置

①http全局块

http全局块配置的指令包括文件引入,MIME-TYPE定义,日志自定义,连接超时时间,单链接请求数上限等
在这里插入图片描述

②server块

这块和虚拟机主机密切关系,虚拟机从用户角度和一台独立的硬件主机完全一样的,该技术的产生是为了节省互联网服务器硬件成本
每个http块可以包含多个server块,而每个server块相当于一个虚拟主机
而每个server块也分为全局server块,以及可以同时包含多个location块
在这里插入图片描述

1.全局server块

本虚拟机监听配置和本虚拟机名称和ip配置

2.location块

主要基于Nginx服务器接收到的请求字符串(如/server_name/uri-string),对虚拟机名称之外的字符串(如/uri-string)进行匹配,对特定的请求进行处理,地址定向,数据缓存,应答控制等功能,

8.配置反向代理

server {
        listen       8001;

        underscores_in_headers on;

        location / {
            #allow 127.0.0.1;
            #allow 10.131.114.;
            #deny  all;

            if ($request_method !~ ^(GET|HEAD|POST)$ ) {
                return 444;
            }

            root   html;
            index  index.html index.htm;
        }

        #配置反向代理转发
        location ~ /aaa {
        proxy_pass_request_headers    on;
        proxy_pass http://10.1.208.227:8080;
        }
        location ~ /bbb {
        proxy_pass_request_headers    on;
        proxy_pass http://10.1.208.227:8081;
        }
        #error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
=  用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理请求
~  用于表示uri包含正则表达式,并区分大小写
~*   用于表示uri包含正则表达式,并不区分大小写
^~  用于不含正则表达式的uri前,要求nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配

9.配置负载均衡

#负载规则
    upstream op_nengkai {
        #代理商-op-能开
        server 100.76.2.49:8000;
        server 100.76.2.50:8000;
    }


server {
        listen       8001;
        location / {
            #allow 127.0.0.1;
            #allow 10.131.114.;
            #deny  all;
            if ($request_method !~ ^(GET|HEAD|POST)$ ) {
                return 444;
            }
            root   html;
            index  index.html index.htm;
        }
        #配置能开转发
        location ~ /test{
        proxy_pass_request_headers    on;
        proxy_pass http://op_nengkai
        }

1.轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除

2.weight

weight代表权重,默认为1,权重越高被分配的客户端越多

    upstream op_nengkai {
        #代理商-op-能开
        server 100.76.2.49:8000 weight=5;
        server 100.76.2.50:8000 weight=10;
    }

3.ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,就可以解决session问题

    upstream op_nengkai {
    	ip_hash;
        #代理商-op-能开
        server 100.76.2.49:8000;
        server 100.76.2.50:8000;
    }

4.fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配

    upstream op_nengkai {
        #代理商-op-能开
        server 100.76.2.49:8000;
        server 100.76.2.50:8000;
        fair;
    }

10.静态资源服务器

server {
        listen       9901;
        server_name  localhost2;
        location /www/ {
            if ($request_method !~ ^(GET|HEAD|POST)$ ) {
                return 444;
            }
            root   /data;
            index  index.html index.htm;
        }
         location /image/ {
            if ($request_method !~ ^(GET|HEAD|POST)$ ) {
                return 444;
            }
            root   /data/;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /apps/data/nginx/html;
        }

    }

11.Nginx高可用的集群

keepalived实现高可用可以参考keepalived的部署
在这里插入图片描述

12.Nginx原理

1.master和worker

例如启了4个worker进程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.worker如何进行工作的

客户端发送请求到master,worker争抢到任务来调度
在这里插入图片描述

3.一个master多个worker有好处

1.可以使用nginx -s reload 热部署,利于nginx进行热部署操作

2.每个worker是独立的进程,如果其中一个worker出现问题,其他的worker继续进行争抢,实现请求的过程,不会造成服务中断

在这里插入图片描述

4.设置多少个worker合理

Nginx同redis类似采用了io多路复用,每个worker都是一个独立的进程,但每个进程只有一个主进程,通过异步非阻塞的方式来处理请求,即使千万个请求也不再话下,每个worker线程可以把一个cpu的性能发挥到极致,所以worker数和服务器的cpu数相等最为合适,设置少了会浪费cpu,多了会造成cpu频繁切换上下文带来的损耗

5.连接数worker_connection

这个值是表示每个worker进程所能建立连接的最大值,所以一个nginx能建立的最大连接数应该是worker_connecitonworker_processes,不过这里说的最大连接数是对于HTTP请求本地资源来说,能够支持的最大并发数量是worker_connecitonworker_processes,如果是支持HTTP1.1的浏览器每次访问占2个连接,所以访问普通静态资源最大并发数是worker_connecitonworker_processes/2,如果是http作为反向代理,最大并发数量是worker_connecitonworker_processes/4,因为作为方向代理服务器,每个并发会建立与客户端的连接和后端服务的连接,会占用2个连接
总结
在支持http1.1情况下

1.普通静态资源访问最大并发是worker_conneciton*worker_processes/2

2.如果是作为反向代理最大并发量是worker_conneciton*worker_processes/4

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值