|
|
51CTO旗下网站
|
|
移步端
  • Nginx的那些妙用,你肯定有不知晓的!

    Nginx 因为他的祥和、增长的模块库、灵活的安排和较低的风源消耗而享誉 。脚下应该是几乎全部项目建设必备。当日通过这篇攻略让你快速通关 Nginx。

    笔者:Java 大猿帅 来源:Github| 2019-12-25 09:28

    Nginx 因为他的祥和、增长的模块库、灵活的安排和较低的风源消耗而享誉 。脚下应该是几乎全部项目建设必备。当日通过这篇攻略让你快速通关 Nginx。

    图表来自 Pexels

    Nginx 介绍

    Nginx 是一番免费、开源、高性能、轻量级的 HTTP 和反向代理服务器,也是一番电子邮件(IMAP/POP3)办理服务器,他特征是占有内存少,并发能力强。

    Nginx 由内核和多样模块组成,基础提供 Web 劳务的中心功能,如启用网络协议,创造运行环境,接受和分配客户端请求,拍卖模块之间的交互。

    Nginx 的各族力量和借鉴都由模块来促成。Nginx 的模块从结构上分为:

  • 基本模块:HTTP 模块、EVENT 模块和 MAIL 模块。
  • 基础模块:HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite 模块。
  • 先后三方模块:HTTP Upstream Request Hash 模块、Notice 模块和 HTTP Access Key 模块及用户自己开发的模块。
  • 这样的计划使 Nginx 富有开发和壮大,也正因此才使得 Nginx 效益如此强大。

    Nginx 的模块默认编译进 Nginx 官方,如果需要增加或删除模块,要求重新编译 Nginx,这一点不如 Apache 的常态加载模块方便。

    如果有需求动态加载模块,可以运用由淘宝网发起的 Web 传感器 Tengine,在 Nginx 的基础上增加了众多高级特性,总体兼容 Nginx,已把国内许多网站采用。

    Nginx 有许多扩展版本:

  • 开源版 nginx.org
  • 商业版 NGINX Plus
  • 淘宝网发起的 Web 传感器 Tengine
  • 基于 Nginx 和 Lua 的 Web 平台 OpenResty
  • Nginx 表现 Web 传感器

    Web 传感器也称为 WWW(World Wide Web)传感器,重点力量是提供网上信息浏览服务,常常以 B/S(Browser/Server)办法提供服务:

  • 应用层使用 HTTP 协和。
  • HTML 文档格式。
  • 传感器统一资源定位器(URL)。
  • Nginx 可以表现静态页面的 Web 传感器,同时还支持 CGI 协和的常态语言,比如 Perl、PHP 等,但是不支持 Java。

    Java 先后一般都通过与 Tomcat 配合完成。表现一名 Java 程序员,确认要知道从 Nginx 和 Tomcat 的分别了。

    Nginx、Apache 和 Tomcat:

  • Nginx:由日本程序员 Igor Sysoev 所付出的轻量级、高并发 HTTP 传感器。
  • Apache HTTP Server Project:一度 Apache 红十字会下的 HTTP 劳务项目,和 Nginx 效益类似。
  • Apache Tomcat:是 Apache 红十字会下的另外一个项目,是一番 Application Server。
  • 更准确的说是一番 Servlet 使用容器,与 Apache HTTP Server 和 Nginx 相比之下,Tomcat 能够动态的变通资源并返回到客户端。

    Apache HTTP Server 和 Nginx 自己不支持生成动态页面,但它们可以通过另外模块来支持(例如通过 Shell、PHP、Python 剧本程序来动态生成内容)。

    一度 HTTP Server 关注的是 HTTP 协和层面的传导和访问控制,故此在 Apache/Nginx 上你可以看出代理、负载均衡等效果。

    客户端通过 HTTP Server 走访服务器上存储的风源(HTML 文件、图表文件等等)。

    穿过 CGI 艺术,也得以将处理过的情节通过 HTTP Server 分发,但是一个 HTTP Server 前后只是把服务器上的公文如实的通过 HTTP 协和传输给客户端。

    而利用服务器,则是一番用到执行的容器。他首先需要支持开发语言的运作(对于 Tomcat 来说,就是 Java),合同应用能够在利用服务器上健康运转。

    从,要求支持应用相关的标准,例如类库、安全地方的性状。对于 Tomcat 来说,就是要求提供 JSP/Sevlet 运作需要的正式类库、Interface 等。

    为了方便,使用服务器往往也会集成 HTTP Server 的效应,但是不如专业的 HTTP Server 这就是说强大。

    故此采取服务器往往是运行在 HTTP Server 的背下,推行应用,名将动态的情节转化为病态的情节之后,穿过 HTTP Server 分发到客户端。

    正向代理

    正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则要求通过代理服务器来访问,这种代理服务就称为正向代理。

    正向代理“办理”的是客户端。比如你想装 Google 瞧个“动作片”,可国内不同意呀,就要求找翻墙代理,其一就是所谓的“正向代理”。

    反向代理与负载均衡

    反向代理正好与正向代理相反,反向代理是指以代理服务器来接受 Internet 上的过渡请求,下一场将请求转发到个中网络上的蒸发器,并将服务器上得到的结果返回给客户端。

    此刻代理服务器对外表现就是一番服务器,客户端对代理是现代化感知的。反向代理“办理”的是劳动端。

    再比如,你想本本分分的在“优酷”上看个“爱情片”,youku.com 会把你的呼吁分发到存放片片的那台机器上,其一就是所谓的“反向代理”。

    为什么使用反向代理,原因如下:

  • 维护和隐藏原始资源服务器
  • 加密和 SSL 加快
  • 穿过缓存静态资源,加快 Web 呼吁
  • 贯彻负载均衡
  • 负载均衡:TODO: 留一个负载均衡详细介绍传送门。

    地点重定向:Nginx 的 Rewrite 重点的效应就是促成 URL 重写,比如输入 360.com 跳转到了 360.cn,baidu.cn 跳转到了 baidu.com。

    状态分离

    为了加速网站的剖析速度,可以把动态页面和变态页面由不同之蒸发器来分析,加紧解析速度,降低原来单个服务器的压力。

    此地指的就是让动态程序(Java、PHP)扮演拜访应用服务器,让缓存、图表、JS、CSS 等去拜访 Nginx。

    Nginx 安装

    ①载入Nginx:

          
    1. wget http://nginx.org/download/nginx-1.16.1.tar.gz 

    ②安装需要编译的软件:

  • 用于编译 C、C++ 代码的 GCC。
  • 用 C 语言编写的正则表达式函数库 Pcre(采用 Rewrite 模块)。
  • 用于数据压缩的函式库的 Zlib。
  • 安全套接字层密码库 OpenSSL(租用 SSL 支持)。
  •       
    1. yum install gcc c++                                           
    2. yum install -y pcre pcre-devel                           
    3. yum install -y zlib zlib-devel                            
    4. yum install -y openssl openssl-devel    

    ③解压、安排(Nginx 支持各种配置选项 )、编译、安装 Nginx:

          
    1. tar -zxvf nginx-1.15.tar.gz cd nginx-1.16.1 
    2. cd nginx-1.16.1 
    3. ./configure 
    4. make && sudo make install  

    ④起先、重启、关闭:

          
    1. cd /usr/local/nginx/  
    2. cd sbin 
    3. ./nginx 
    4. #关闭命令  
    5. ./nginx -s stop 
    6. #重启,热部署 
    7. ./nginx -s reload 
    8. #修改配置文件后也别�N瑟,反正我会动不动就写错,检查修改的nginx.conf安排是否正确 
    9. ./nginx -t 

    ⑤检验(传感器输入 IP):

    配置文件

    nginx.conf 配置文件主要分为三部分:

  • 全局块
  • Events 块
  • HTTPS 块
  • Nginx 安排语法:

  • 配置文件由指令和指令块构成
  • 每条指令以分号(;)最后,指令和平均数间以空格符分隔
  • 指令块以大括号{}名将多枝指令组织在总共
  • include 说话允许组合多个配置文件以增进可保护性
  • 采用 # 补充注释
  • 采用 $ 定义变量
  • 局部指令的底数支持正则表达式
  • 全局块

    全局配置部分用来部署对全部 Server 都有效的底数。重点会设置一些影响 Nginx 传感器整体运行的安排指令,包括配置运行 Nginx 传感器的客户(组)、兴许生成的 Worker Process 数,经过 PID 存放路径、日志存放路径和档次以及配置文件的引入等。

    示例如下:

          
    1. user nobody; 
    2. worker_processes  4; 
    3. error_log  /data/nginx/logs/error.log  notice;  

    Events 块

    Events 块涉及的吩咐主要影响 Nginx 传感器与用户之网络相联,公用的安装包括是否开启对多 Work Process 从的网络相联进行序列化,只是同意同时收到多个网络相联,分选哪种事件驱动模型来处理连接请求,每个 Word Process 可以同时支持的最大连接数等。

          
    1. events { 
    2.     #每个 work process 支持的最大连接数为 1024. 
    3.     worker_connections  1024; 

    HTTP 块

    这算是 Nginx 传感器配置中最频繁之一部分,办理、缓存和日志定义等绝大多数功能和程序三方模块的安排都在此间。 要求注意的是:HTTP 块也得以包括 HTTP 全局块、Server 块。

    ①HTTP 全局块

    HTTP 全局块配置的吩咐包括文件引入、MIME-TYPE 定义、日志自定义、联网超时时间、另一方面链接请求数上限等。

          
    1. http { 
    2.     include       mime.types; 
    3.     default_type  application/octet-stream; 
    4.     sendfile        on
    5.     keepalive_timeout  65; 

    ②Server 块

    这块和虚拟主机有密切联系,编造主机从他家角度看,和一台独立的软件主机是完整一样的,该技术之产生是为了节省互联网服务器硬件成本。

    每个 HTTP 块可以包括多个 Server 块,而每个 Server 块就相当于一个虚拟主机。

    而每个 Server 块也分为全局 Server 块,以及可以同时包含多个 Locaton 块。

    全局 Server 块:也把叫做“编造服务器”局部,他描述的是一组根据不同server_name指令逻辑分割的风源,该署虚拟服务器响应 HTTP 呼吁,因此都包含在 HTTP 局部。

    最广泛的安排是资产虚拟机主机的监视配置和本金虚拟主机的称谓或 IP 安排。

          
    1. server { 
    2.   listen       80; 
    3.   #server_name也支持通配符,*.example.com、www.example.*、.example.com 
    4.   server_name  localhost; 
    5.   #charset koi8-r; 
    6.   #access_log  logs/host.access.log  main; 

    Location 块:一度 Server 块可以配置多个 Location 块。

    这块的首要意图是基于 Nginx 传感器接收到的呼吁字符串(例如 server_name/uri-string),对虚拟主机名称 (也得以是 IP 别名)对内的字符串(例如前面的 /uri-string)拓展匹配,对特定的呼吁进行拍卖。

    地点定向、数量缓存和回答控制等效果,还有好多次三方模块的安排也在此间进行。

    Location 指令说明:该指令用于匹配 URL。

    语法如下:

          
    1. location [ = | ~ | ~* | ^~] uri{} 
  • = :该修饰符使用精确匹配并且终止搜索。
  • ~:该修饰符使用区分大小写的正则表达式匹配。
  • ~*:该修饰符使用不区分大小写的正则表达式匹配。
  • ^~:用于不含正则表达式的 URI 明天,渴求 Nginx 传感器找到标识 URI 和请求字符串匹配度最高的 Location 此后,立即采取此 Location 拍卖请求,而不再利用 Location 块中的正则 URI 和请求字符串做匹配。
  • ?>Tip 瞩目:如果 URI 包含正则表达式,则必须要有 ~ 或者 ~* 标识。

    顶一个请求进入时,URI 名将会把检测匹配一个超级的 Location:

  • 没有正则表达式的 Location 把作为最佳的匹配,独立于含有正则表达式的 Location 先后。
  • 在配置文件中按照查找顺序进行正则表达式匹配。在摸索到第一个正则表达式匹配之后结束查找。由这个最佳的 Location 提供请求处理。
  •       
    1. location / { 
    2.      root   html; 
    3.     index  index.html index.htm; 
    4.     } 
    5.  
    6.   #error_page  404              /404.html; 
    7.  
    8.   # redirect server error pages to the static page /50x.html 
    9.   # 
    10.   error_page   500 502 503 504  /50x.html; 
    11.   location = /50x.html { 
    12.       root   html; 
    13.   } 
    14.   location / { 
    15.       #try_files指令将会按照给定的底数顺序进行匹配尝试 
    16.       try_files $uri $uri/ /index.html; 
    17.   } 

    nginx.conf 详细配置如下:

          
    1. #定义Nginx运作的客户和用户组 
    2. user www www;  
    3.  
    4. #nginx经过数,普通设置成和cpu的多寡相等 
    5. worker_processes 4;  
    6.  
    7. #全局错误日志定义类型,[debug | info | notice | warn | error | crit] 
    8. #error_log  /data/nginx/logs/error.log; 
    9. #error_log  /data/nginx/logs/error.log  notice; 
    10.  
    11. #日志文件存放路径 access_log path [format [buffer=size | off]] 
    12. access_log /data/nginx/logs/lazyegg.com/web/access.log combinedio; 
    13.  
    14. #经过pid文件 
    15. #pid        logs/nginx.pid; 
    16.  
    17. #指定进程可以打开的最大描述符:数据 
    18. #上班模式与连接数上限 
    19. ##其一指令是指当一个nginx经过打开的最多文件描述符数目,票价应该是最多打开文件数(ulimit -n)与nginx经过数相除,但是nginx分配请求并不是那么均匀,故此最好与ulimit -n 的值保持一致。 
    20. #这是因为nginx安排时分配请求到进程并不是那么的平衡,故此假如填写10240,总并发量达到3-4万时就有经过可能超过10240了,这会儿会回来502错误。 
    21. worker_rlimit_nofile 65535; 
    22.  
    23. #################################  events  ############################### 
    24. events { 
    25.     #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型 
    26.     use epoll 
    27.     #单个进程最大连接数(最大连接数=联网数+经过数) 
    28.     worker_connections  1024; 
    29.  
    30.     #keepalive 逾期时间 
    31.     keepalive_timeout 60; 
    32.  
    33.     #客户端请求头部的风景区大小。 
    34.     client_header_buffer_size 4k; 
    35.  
    36.     #其一将为开辟文件指定缓存,默认是没有启用的,max指定缓存数量,提议和开拓文件数一致,inactive是指经过多长时间文件没把请求后删除缓存。 
    37.     open_file_cache max=65535 inactive=60s; 
    38.     #其一是指多长时间检查一次缓存的得力信息。 
    39.     open_file_cache_valid 80s; 
    40.         #open_file_cache指令中的inactive数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中开拓的,以上例,如果有一度文件在inactive时光内一次没把运用,他将把移除。 
    41.     open_file_cache_min_uses 1; 
    42.  
    43.     #语法:open_file_cache_errors on | off 默认值:open_file_cache_errors off 采用字段:http, server, location 其一指令指定是否在寻找一个文件是记录cache错误. 
    44.     open_file_cache_errors on
    45.  
    46. ##############################   http    ################################## 
    47.  
    48. #设定http传感器,采取它的反向代理功能提供负载均衡支持 
    49. http{ 
    50.     #文件扩展名与文件类型映射表 
    51.     include mime.types; 
    52.  
    53.     #默认文件类型 
    54.     default_type application/octet-stream; 
    55.  
    56.     #默认编码 
    57.     charset utf-8; 
    58.  
    59.     #传感器名字的hash表面大小 
    60.     server_names_hash_bucket_size 128; 
    61.  
    62.     #客户端请求头部的风景区大小。 
    63.     client_header_buffer_size 32k; 
    64.  
    65.     #我家请求头缓冲大小。 
    66.     large_client_header_buffers 4 64k; 
    67.  
    68.     #兴许客户端请求的最大单个文件字节数 
    69.     client_max_body_size 8m; 
    70.  
    71.     #起来高效文件传输模式,sendfile指令指定nginx只是调用sendfile函数来输出文件,对于一般应用设为 on,如果用来开展下载等利用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O拍卖速度,降低系统之载荷。瞩目:如果图片显示不健康把这个改成off。 
    72.     sendfile on
    73.  
    74.     #起来目录列表访问,相当下载服务器,默认关闭。 
    75.     autoindex on
    76.  
    77.     #此选项允许或禁止使用socke的TCP_CORK的挑选,此选项仅在采取sendfile的时节使用 
    78.     tcp_nopush on
    79.  
    80.     tcp_nodelay on
    81.  
    82.     #长连接超时时间,单位是秒 
    83.     keepalive_timeout 120; 
    84.  
    85.     #FastCGI相关参数是为了改善网站的性质:调减资源占用,增长访问速度。下参数看字面意思都能了解。 
    86.     fastcgi_connect_timeout 300; 
    87.     fastcgi_send_timeout 300; 
    88.     fastcgi_read_timeout 300; 
    89.     fastcgi_buffer_size 64k; 
    90.     fastcgi_buffers 4 64k; 
    91.     fastcgi_busy_buffers_size 128k; 
    92.     fastcgi_temp_file_write_size 128k; 
    93.  
    94.     #gzip模块设置 
    95.     gzip on; #起来gzip调减输出 
    96.     gzip_min_length 1k;    #最小压缩文件大小 
    97.     gzip_buffers 4 16k;    #调减缓冲区 
    98.     gzip_http_version 1.0; #调减版本(默认1.1,前者如果是squid2.5请使用1.0) 
    99.     gzip_comp_level 2;     #调减等级 
    100.     gzip_types text/plain application/x-javascript text/css application/xml;    #调减类型,默认就已经包含textml,故此下面就不要再写了,写上装也不会有问题,但是会有一度warn。 
    101.     gzip_vary on
    102.  
    103.     #起来限制IP联网数之时节需要采取 
    104.     #limit_zone crawler $binary_remote_addr 10m; 
    105.  
    106.         #负载均衡配置 
    107.     upstream lazyegg.net { 
    108.  
    109.         #upstream的载荷均衡,weight是权重,可以根据机器配置定义权重。weigth数表示权值,权值越高被分配到的概率越大。 
    110.         server 192.168.80.121:80 weight=3; 
    111.         server 192.168.80.122:80 weight=2; 
    112.         server 192.168.80.123:80 weight=3; 
    113.  
    114.         #nginx的upstream脚下支持4种方法的分配 
    115.         #1、轮询(默认) 
    116.         #每个请求按时间顺序逐一分配到不同之下端服务器,如果后端服务器down少,能自动剔除。 
    117.         #2、weight 
    118.         #指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的状况。 
    119.         #例如: 
    120.         #upstream bakend { 
    121.         #    server 192.168.0.14 weight=10; 
    122.         #    server 192.168.0.15 weight=10; 
    123.         #} 
    124.         #2、ip_hash 
    125.         #每个请求按访问ip的hash结果分配,这样每个访客固定访问一个下端服务器,可以解决session的题材。 
    126.         #例如: 
    127.         #upstream bakend { 
    128.         #    ip_hash; 
    129.         #    server 192.168.0.14:88; 
    130.         #    server 192.168.0.15:80; 
    131.         #} 
    132.         #3、fair(先后三方) 
    133.         #按下端服务器的响应时间来分配请求,响应时间短的优先分配。 
    134.         #upstream backend { 
    135.         #    server server1; 
    136.         #    server server2; 
    137.         #    fair; 
    138.         #} 
    139.         #4、url_hash(先后三方) 
    140.         #按访问url的hash结果来分配请求,使每个url定向到同一个下端服务器,此后端服务器为缓存时比较有效。 
    141.         #例:在upstream官方参加hash说话,server说话中不能写入weight等其它的底数,hash_method是采取的hash书法 
    142.         #upstream backend { 
    143.         #    server squid1:3128; 
    144.         #    server squid2:3128; 
    145.         #    hash $request_uri; 
    146.         #    hash_method crc32; 
    147.         #} 
    148.  
    149.         #tips: 
    150.         #upstream bakend{#定义负载均衡设备的Ip及设备状态}{ 
    151.         #    ip_hash; 
    152.         #    server 127.0.0.1:9090 down; 
    153.         #    server 127.0.0.1:8080 weight=2; 
    154.         #    server 127.0.0.1:6060; 
    155.         #    server 127.0.0.1:7070 backup; 
    156.         #} 
    157.         #在需求采取负载均衡的server官方增加 proxy_pass http://bakend/; 
    158.  
    159.         #每个设备的状态设置为: 
    160.         #1.down表示单前之server暂时不参与负载 
    161.         #2.weight为weight越大,负载的权重就越大。 
    162.         #3.max_fails:兴许请求失败的用户数默认为1.顶超过最大次数时,回到proxy_next_upstream模块定义之错误 
    163.         #4.fail_timeout:max_fails先后破产后,暂停的年华。 
    164.         #5.backup: 其他任何的非backup机械down或者忙的时节,呼吁backup机械。故此这台机械压力会最轻。 
    165.  
    166.         #nginx支持同时设置多组的载荷均衡,用来送不用之server来行使。 
    167.         #client_body_in_file_only安装为On 可以讲client post来到的多寡记录到文件中用来做debug 
    168.         #client_body_temp_path安装记录文件的目录 可以设置最多3层目录 
    169.         #location对URL拓展匹配.可以拓展重定向或者进行新的代理 负载均衡 
    170.     } 
    171.  
    172.        #编造主机的安排 
    173.     server { 
    174.         #监听端口 
    175.         listen 80; 
    176.  
    177.         #地名可以有多个,用空格隔开 
    178.         server_name lazyegg.net; 
    179.         #默认入口文件名称 
    180.         index index.html index.htm index.php; 
    181.         root /data/www/lazyegg; 
    182.  
    183.         #对******拓展负载均衡 
    184.         location ~ .*.(php|php5)?$ 
    185.         { 
    186.             fastcgi_pass 127.0.0.1:9000; 
    187.             fastcgi_index index.php; 
    188.             include fastcgi.conf; 
    189.         } 
    190.  
    191.         #图表缓存时间设置 
    192.         location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ 
    193.         { 
    194.             expires 10d; 
    195.         } 
    196.  
    197.         #JS和CSS缓存时间设置 
    198.         location ~ .*.(js|css)?$ 
    199.         { 
    200.             expires 1h; 
    201.         } 
    202.  
    203.         #日志格式设定 
    204.         #$remote_addr与$http_x_forwarded_for用于记录客户端的ip地点; 
    205.         #$remote_user:用于记录客户端用户名称; 
    206.         #$time_local: 用于记录访问时间与时区; 
    207.         #$request: 用于记录请求的url与http协和; 
    208.         #$status: 用于记录请求状态;成功是200, 
    209.         #$body_bytes_sent :记录发送给客户端文件主体内容大小; 
    210.         #$http_referer:用于记录从那个页面链接访问过来的; 
    211.         #$http_user_agent:记录客户浏览器的相关信息; 
    212.         #普通web传感器放在反向代理的背后,这样就不能获取到他家的IP地点了,穿过$remote_add拿到的IP地点是反向代理服务器的iP地点。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for消息,用于记录原有客户端的IP地点和原始客户端的呼吁的蒸发器地址。 
    213.         log_format access '$remote_addr - $remote_user [$time_local] "$request" ' 
    214.         '$status $body_bytes_sent "$http_referer" ' 
    215.         '"$http_user_agent" $http_x_forwarded_for'
    216.  
    217.         #定义本虚拟主机的走访日志 
    218.         access_log  /usr/local/nginx/logs/host.access.log  main; 
    219.         access_log  /usr/local/nginx/logs/host.access.404.log  log404; 
    220.  
    221.         #对 "/connect-controller" 租用反向代理 
    222.         location /connect-controller { 
    223.             proxy_pass http://127.0.0.1:88; #请注意此处端口号不能与虚拟主机监听的端口号一样(也就是server监听的端口) 
    224.             proxy_redirect off
    225.             proxy_set_header X-Real-IP $remote_addr; 
    226.  
    227.             #此后端的Web传感器可以通过X-Forwarded-For获取用户真实IP 
    228.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    229.  
    230.             #以下是部分反向代理的安排,可选。 
    231.             proxy_set_header Host $host; 
    232.  
    233.             #兴许客户端请求的最大单文件字节数 
    234.             client_max_body_size 10m; 
    235.  
    236.             #引黄灌区代理缓冲用户端请求的最大字节数, 
    237.             #如果把他设置为比较大的数值,例如256k,这就是说,不论是使用firefox还是IE传感器,来提交任意小于256k的图形,都很正常。如果注释该指令,采用默认的client_body_buffer_size安装,也就是操作系统页面大小的两倍,8k或者16k,题材就出现了。 
    238.             #不论是使用firefox4.0还是IE8.0,付出一个比较大,200k控制之图形,都返回500 Internal Server Error错误 
    239.             client_body_buffer_size 128k; 
    240.  
    241.             #表示使nginx阻碍HTTP应答代码为400或者更高的回复。 
    242.             proxy_intercept_errors on
    243.  
    244.             #此后端服务器连接的逾期时间_倡导握手等候响应超时时间 
    245.             #nginx跟后端服务器连接超时时间(办理连接超时) 
    246.             proxy_connect_timeout 90; 
    247.  
    248.             #此后端服务器数据回传时间(办理发送超时) 
    249.             #此后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的多寡 
    250.             proxy_send_timeout 90; 
    251.  
    252.             #联网成功之后,此后端服务器响应时间(办理接收超时) 
    253.             #联网成功之后_等待后端服务器响应时间_其实已经进入后端的排队之中等候处理(也得以说是后端服务器处理请求的年华) 
    254.             proxy_read_timeout 90; 
    255.  
    256.             #安装代理服务器(nginx)保留用户头信息的风景区大小 
    257.             #安装从把摄服务器读取的程序部分应答的风景区大小,普通情况下这部分应答中包含一个小的回复头,默认情况下这个值的高低为命令proxy_buffers官方指定的一个缓冲区的大小,不过可以将他设置为更小 
    258.             proxy_buffer_size 4k; 
    259.  
    260.             #proxy_buffers引黄灌区,网页平均在32k以下的安装 
    261.             #安装用于读取应答(来自被摄服务器)的风景区数目和大小,默认情况也为分页大小,根据操作系统的不同可能是4k或者8k 
    262.             proxy_buffers 4 32k; 
    263.  
    264.             #高负荷下缓冲大小(proxy_buffers*2) 
    265.             proxy_busy_buffers_size 64k; 
    266.  
    267.             #安装在写入proxy_temp_path时数据的大小,预防一个工作经过在传递文件时阻塞太长 
    268.             #设定缓存文件夹大小,大于这个值,名将下upstream传感器传 
    269.             proxy_temp_file_write_size 64k; 
    270.         } 
    271.  
    272.         #地方情况分离反向代理配置 
    273.         #整整jsp的页面均交由tomcat或resin拍卖 
    274.         location ~ .(jsp|jspx|do)?$ { 
    275.             proxy_set_header Host $host; 
    276.             proxy_set_header X-Real-IP $remote_addr; 
    277.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    278.             proxy_pass http://127.0.0.1:8080; 
    279.         } 
    280.     } 

    Nginx 安排实例

    反向代理 Demo 1

    贯彻效果:采用 Nginx 反向代理,走访 test.com 直接跳转到自己之机械 127.0.0.1:8080。

    ①起先一个 Tomcat,传感器地址栏输入 127.0.0.1:8080。

    出现如下界面:

    ②穿过修改本地 Host 文件(C:\Windows\System32\drivers\etc),补充127.0.0.1 www.12345.com 名将 www.12345.com 照耀到自己之机械 IP 上。

    ③安排完成后,咱们便足以通过 www.test.com:8080 走访到根本地出现的 Tomcat 初步界面。

    这就是说如何只要求输入 www.12345.com 便足以跳转到 Tomcat 初步界面呢?便利用 Nginx 的反向代理。

    ④修改 nginx.conf 配置文件,增长如下配置 proxy_pass:

          
    1. server { 
    2.         listen       80; 
    3.         server_name  localhost; 
    4.         #charset koi8-r; 
    5.         #access_log  logs/host.access.log  main; 
    6.         location / { 
    7.                proxy_pass http://127.0.0.1:8080; 
    8.         } 

    ⑤以上配置,咱们监听 80 端口,走访域名为 www.12345.com,不加端口号时默认为 80 端口,故访问该域名时会跳转到 127.0.0.1:8080 途径上。

    在新石器端输入 www.12345.com 结果如下:

    反向代理 Demo 2

    贯彻效果:采用 Nginx 反向代理,根据访问的门路跳转到不同端口的劳务中:

  • 走访 http://127.0.0.1/java/ 直接跳转到 127.0.0.1:8080
  • 走访 http://127.0.0.1/egg/ 直接跳转到 127.0.0.1:8081
  • ①在新石器上班两个 Tomcat,修改其中一个端口号为 8081。

    在 tomcat/webapps/ 目录下各加两个文件夹,并随便写个 HTML 页面,我建的是 java/index.html 和 egg/index.html。

    ②修改 nginx.conf,在 HTTP 块中添加 serve{}:

          
    1. server { 
    2.         listen       80; 
    3.         server_name  localhost; 
    4.  
    5.         location ~ /java/ { 
    6.             proxy_pass http://127.0.0.1:8080; 
    7.         } 
    8.  
    9.         location /egg/ { 
    10.             proxy_pass http://127.0.0.1:8081; 
    11.         } 

    ③重启 Nginx,检验效果:

    Nginx 安排:负载均衡

    随着互联网信息的惩罚性增长,负载均衡(Load Balance)已经不再是一番很陌生的命题。

    顾名思义,负载均衡即是将负载分摊到不同之劳务单元,既保证服务的可用性,又保证响应足够快,送用户很好的体会。

    很快增长之供给量和数量流量催生了五光十色的载荷均衡产品,有的是标准的载荷均衡硬件提供了很好的效应,但却价格不菲。

    这使得负载均衡软件大受欢迎,Nginx 就是其中的一个,在 Linux 从有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服务。

    Nginx 的载荷均衡是 Proxy 模块和 Upstream 模块搭配实现的。Upstream模块将会启用一个新的配置区段,在该路段定义了一组上游服务器。

    贯彻效果:安排负载均衡。

    ①同时起步两个 Tomcat(为了方便验证效果,修改 Tomcat 端口号的同时,顺便将 Tomcat 默认欢迎页面 apache-tomcat-9.0.29/webapps/ROOR 目录下的 index.jsp 修改下,瞧下 8081 迎接页的“蛋蛋”没):

    ②修改 nginx.conf:

          
    1. http { 
    2.     upstream myserver { 
    3.         server localhost:8080; 
    4.         server localhost:8081; 
    5.     } 
    6.     server { 
    7.         listen 80; 
    8.         location / { 
    9.             proxy_pass http://myserver; 
    10.         } 
    11.     } 

    ③重启 Nginx,检验效果(默认轮询之措施,每次打开新窗口,8080 和 8081 会交替出现,同一个出口的话需要关闭浏览器缓存)。

    Nginx 分配政策:

  • 轮询(默认) 每个请求按时间顺序逐一分配到不同之下端服务器,如果后端服务器 Down 少,能自动剔除。
  • Weight 代表权重,默认为 1,权重越高被分配的客户端越多,指定轮询几率,Weight 和访问比率成正比,用于后端服务器性能不均的状况。
  • 例如:

          
    1. upstream server_pool{  
    2.     server 192.168.5.21 weight=10;  
    3.     server 192.168.5.22 weight=10; }  

    ip_hash 每个请求按访问 IP 的 Hash 结果分配,这样每个访客固定访问一个下端服务器,可以解决 Session 的题材。

    例如:

          
    1. upstream server_pool{ 
    2.     ip_hash; server 192.168.5.21:80;  
    3.     server 192.168.5.22:80;  
    4. }  

    Fair(先后三方) 按下端服务器的响应时间来分配请求,响应时间短的优先分配。

          
    1. upstream server_pool{  
    2.     server 192.168.5.21:80; 
    3.     server 192.168.5.22:80; fair; 
    4.  }  

    Nginx 安排:状态分离

    Nginx 状态分离简单来说就是把动态跟静态请求分开,决不能理解成只是单一的龙头动态页面和变态页面物理分离。

    从严意义上说应该是变态请求跟静态请求分开,可以了解成使用 Nginx 拍卖静态页面,Tomcat 拍卖动态页面。

    状态分离从当前实现角度来讲大致分为两种:

  • 单纯把静态文件独立成单独的书名,放在独立的蒸发器上,也是现阶段主流推崇的提案;
  • 动态跟静态文件混合在总共发布,穿过 Nginx 来分别。
  • 穿过 Location 指定不同之后缀名实现不同之呼吁转发。穿过 Expires 数设置,可以行使探测器缓存过期时间,调减与服务器之前的呼吁和总量。

    现实 Expires 定义:是送一个资源设定一个过期时间,具体地说无需去服务端验证,直接穿过浏览器自身确认是否过期即可, 故此不会产生额外的话务量。

    此种办法非常方便不经常变动的风源(如果经常更新的公文, 不建议使用 Expires 来缓存)。

    我这里设置 3d,表示在这 3 远处以内访问这个 URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,回到状态码 304,如果有修改,则直接从服务器重新下载,回到状态码 200。

    ①传感器找个目录存放自己之常态文件:

    ②修改 nginx.conf:

          
    1. server { 
    2.         listen       80; 
    3.         server_name  localhost; 
    4.         location /static/ { 
    5.             root   /usr/data/www; 
    6.         } 
    7.         location /image/ { 
    8.              root /usr/data/; 
    9.              autoindex on
    10.         } 

    ③./nginx -s reload,检验效果:

    补充监听端口、走访名字重点是添加 Location,说到底检查 Nginx 安排是否正确即可,下一场测试动静分离是否成功,只要求删除后端 Tomcat 传感器上的某部静态文件,翻开是否能访问,如果可以访问说明静态资源 Nginx 直接返回了,不走下端 Tomcat 传感器。

    Nginx 的 Rewrite

    Rewrite 是 Nginx 传感器提供的一个重要的效应,他可以实现 URL 重写和分量定向功能。

    气象如下:

  • URL 走访跳转,支持开发设计。页面跳转、冷水性支持(新旧版本更迭)、展示力量(网址精简)等
  • SEO 多极化(Nginx 伪静态的支持)
  • 看台维护、年产量转发等
  • 安全(动态界面进行伪装)
  • 该指令是通过正则表达式的采取来改变 URI。可以同时存在一番或多个指令。要求按照顺序依次对 URL 拓展匹配和处理。

    该指令可以在 Server 块或 Location 块中安排,他中心语法结构如下:

          
    1. rewrite regex replacement [flag]; 

    ①利用反向代理 Demo2 中的例子,修改 nginx.conf(只多加了一条龙 Rewrite):

          
    1. server { 
    2.         listen       80; 
    3.         server_name  localhost; 
    4.  
    5.         location /java/ { 
    6.             proxy_pass http://127.0.0.1:8080; 
    7.             rewrite ^/java /egg/ redirect; 
    8.         } 
    9.  
    10.         location /egg/ { 
    11.             proxy_pass http://127.0.0.1:8081; 
    12.         } 

    ②./nginx -s reload,检验效果(步入 ip/java/ 把重定向到了 egg):

    Rewrite 指令可以在 Server 块或 Location 块中安排,他中心语法结构如下:

          
    1. rewrite regex replacement [flag]; 
  • rewrite 的意思:该指令是促成 URL 重写的吩咐。
  • regex 的意思:用于匹配 URI 的正则表达式。
  • replacement:名将 regex 正则匹配到的情节替换成 replacement。
  • flag:flag 标志。
  • flag 有如下值:

  • last:其一规则匹配完成后,继承向下匹配新的 Location URI 规则。(不适用)
  • break:其一规则匹配完成即终止,不再匹配后面的其他规则(不适用)。
  • redirect:回到 302 临时重定向,传感器地址会显示跳转新的 URL 地点。
  • permanent:回到 301 世代重定向。传感器地址会显示跳转新的 URL 地点。
  •       
    1. rewrite ^/(.*) http://www.360.cn/$1 permanent; 

    Nginx 高可用

    如果将 Web 传感器集群当做一个城市,这就是说负载均衡服务器就相当于城门。如果“城门”关闭了,与对外的大道就断了。

    如果只有一台 Nginx 负载服务器,顶故障宕机的时节,就会导致整个网站无法访问。

    故此我们需要两台以上 Nginx 来促成故障转移和高可用:

    这就是说如何配置高可用?

    ①双机热备方案

    这种方案是国内企业中最为常见的一种高可用方案,双机热备其实就是指一台服务器在提供服务,另一台为某服务的适用状态,顶一台服务器不适用另外一台就会顶替上去。

    Keepalived 是什么?Keepalived 硬件起初是专为 LVS 负载均衡软件设计的,用来管理并监督 LVS 集群系统中各个服务重点的状态。

    新兴又进入了可以实现高可用之 VRRP (Virtual Router Redundancy Protocol ,编造路由器冗余协议)效益。

    故此,Keepalived 除了能够管理 LVS 硬件外,还可以表现其他服务(例如:Nginx、Haproxy、MySQL 等)的高可用解决方案软件。

    ②故障转移机制

    Keepalived 高可用服务之间的故障切换转移,是通过 VRRP 来促成的。

    在 Keepalived劳务正常工作时,东道主 Master 重点会不断地向备节点发送(多播的措施)心跳消息,用于告诉备 Backup 重点自己还活着。

    顶主 Master 重点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master 重点的心跳了,于是乎调用自身的监管程序,分管主 Master 重点的 IP 能源及劳动。

    而当主 Master重点恢复时,备 Backup 重点又会释放主节点故障时自身接管的 IP 能源及劳动,恢复到原来的适用角色。

    贯彻方式如下:①未雨绸缪两台设置 Nginx 和 Keepaliver(yum install keepalived -y)的蒸发器

    ②修改两台服务器上的 /etc/keepalived/keepalived.conf

          
    1. #长机 
    2. #检测脚本 
    3. vrrp_script chk_http_port { 
    4.     script "/usr/local/src/check_nginx.sh" #心跳执行的剧本,检测nginx只是启动 
    5.     interval 2                          #(检测脚本执行的距离,单位是秒) 
    6.     weight 2                            #权重 
    7. #vrrp 老定义部分 
    8. vrrp_instance VI_1 { 
    9.     state MASTER            # 指定keepalived的角色,MASTER基本,BACKUP为备 
    10.     interface ens33         # 眼前展开vrrp报道的网络接口卡(眼前centos的网卡) 用ifconfig翻开你具体的网卡 
    11.     virtual_router_id 66    # 编造路由编号,基本要一直 
    12.     priority 100            # 优先级,数值越大,获取处理请求的优先级越高 
    13.     advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数) 
    14.     #授权访问 
    15.     authentication { 
    16.         auth_type PASS #安装验证类型和密码,MASTER和BACKUP必须采取相同的密码才能健康通信 
    17.         auth_pass 1111 
    18.     } 
    19.     track_script { 
    20.         chk_http_port            #(租用检测脚本) 
    21.     } 
    22.     virtual_ipaddress { 
    23.         192.168.16.150            # 定义虚拟ip(VIP),可多设,每趟一个 
    24.     } 
          
    1. # 备机 
    2. #检测脚本 
    3. vrrp_script chk_http_port { 
    4.     script "/usr/local/src/check_nginx.sh" #心跳执行的剧本,检测nginx只是启动 
    5.     interval 2                          #(检测脚本执行的距离) 
    6.     weight 2                            #权重 
    7. #vrrp 老定义部分 
    8. vrrp_instance VI_1 { 
    9.     state BACKUP                        # 指定keepalived的角色,MASTER基本,BACKUP为备 
    10.     interface ens33                      # 眼前展开vrrp报道的网络接口卡(眼前centos的网卡) 用ifconfig翻开你具体的网卡 
    11.     virtual_router_id 66                # 编造路由编号,基本要一直 
    12.     priority 99                         # 优先级,数值越大,获取处理请求的优先级越高 
    13.     advert_int 1                        # 检查间隔,默认为1s(vrrp组播周期秒数) 
    14.     #授权访问 
    15.     authentication { 
    16.         auth_type PASS #安装验证类型和密码,MASTER和BACKUP必须采取相同的密码才能健康通信 
    17.         auth_pass 1111 
    18.     } 
    19.     track_script { 
    20.         chk_http_port                   #(租用检测脚本) 
    21.     } 
    22.     virtual_ipaddress { 
    23.         192.168.16.150                   # 定义虚拟ip(VIP),可多设,每趟一个 
    24.     } 

    ③兴建检测脚本(chmod 775 check_nginx.sh):

          
    1. #!/bin/bash 
    2. #检测nginx只是启动了 
    3. A=`ps -C nginx --no-header |wc -l`         
    4. if [ $A -eq 0 ];then    #如果nginx没有启动就启动nginx                         
    5.       systemctl start nginx                #重启nginx 
    6.       if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived劳务,拓展VIP转换 
    7.               killall keepalived                     
    8.       fi 
    9. fi 

    ④起先 Nginx 和 Keepalived(systemctl start keepalived.service)

    ⑤宪章 Nginx 故障(关闭主服务器 Nginx),检验,仍可以通过配置的虚拟 IP 走访,OK。

    Nginx 原理与优化参数配置

    Nginx 默认采用多进程工作方法,Nginx 起先后,会运行一个 Master 经过和多个 Worker 经过。

    其中 Master 充当整个过程组与用户之交互接口,同时对进程进行监护,管理 Worker 经过来促成重启服务、平滑升级、转换日志文件、配置文件实时生效等效果。

    Worker 用于处理中心的网络事件,Worker 之间是平等的,她们共同竞争来处理来自客户端的呼吁。

    master-workers 的公有制的功利:

  • 可以运用 nginx-s reload 热部署。
  • 每个 Worker 是矗立的经过,不需要加锁,节约了锁带来的开支。利用独立的经过,可以让互相之间不会影响,一度进程退出后,其它进程还在办事,劳务不会半途而废,Master 经过则很快启动新的 Worker 经过。
  • 要求设置多少个 Worker?Nginx 同 Redis 类似都使用了 IO 多行程复用机制,每个 Worker 都是一番独立的经过,但每个进程里只有一度热线程,穿过异步非阻塞的措施来处理请求,即使是众多个请求也不在话下。

    每个 Worker 的点程可以把一个 CPU 的性质发挥到极致。故此 Worker 数和推进器的 CPU 数相等是最为合适的。设少了会浪费 CPU,设多了会造成 CPU 频繁切换上下文带来的损耗。

          
    1. #安装 worker 多少。 
    2.  worker_processes 4  
    3. #work 绑定 cpu(4 work 绑定 4cpu)。  
    4.  worker_cpu_affinity 0001 0010 0100 1000  
    5. #work 绑定 cpu (4 work 绑定 8cpu 中的 4 个) 。  
    6.  worker_cpu_affinity 0000001 00000010 00000100 00001000 

    联网数 worker_connection:其一值是表示每个 Worker 经过所能建立连接的最大值。

    故此,一度 Nginx 能建立之最大连接数,有道是是 worker_connections*worker_processes。

    当然,此地说的是最大连接数,对于 HTTP 请 求 资本 地 资 源 来 说 , 能 够 支 持 的 最 大 并 发 数 量 是 worker_connections*worker_processes,如果是帮腔 http1.1 的蒸发器每次访问要占两个连接。

    故此普通的常态访问最大并发数是:worker_connections*worker_processes /2。

    而如果是 HTTP 表现反向代理来说,最大并发数量应该是 worker_connections*worker_processes/4。

    因为作为反向代理服务器,每个并发会建立与客户端的过渡和与后端服务的过渡,会占用两个连接。

    Nginx 呼吁处理流程如下图:

    Nginx 模块开发

    出于 Nginx 的最大化特性,故此可以支持模块配置,也得以自定义模块,Nginx 的模块开发,程序员目前还不需要太深刻。

    Nginx 模块分类如下图:

    Nginx安排选项,解压 Nginx 此后的安排操作示例:

          
    1. ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-pcre  --with-http_ssl_module 

    Nginx 高考题

    ①Nginx 效益,你们项目中用到的 Nginx?

  • 反向代理服务器
  • 贯彻负载均衡
  • 做静态资源服务器
  • 表现 HTTP Server
  • ②Nginx 公用命令有哪些?

          
    1. 起先nginx    ./sbin/nginx 
    2. 停止nginx    ./sbin/nginx -s stop   ./sbin/nginx -s quit 
    3. 满载配置      ./sbin/nginx -s reload(平滑重启) service nginx reload 
    4. 满载指定配置文件    ./sbin/nginx -c  /usr/local/nginx/conf/nginx.conf 
    5. 翻开nginx本子  ./sbin/nginx -v 
    6. 检查配置文件是否正确  ./sbin/nginx -t 
    7. 表现帮助信息  ./sbin/nginx  -h 

    ③Nginx 公用配置?

    worker_processes 4; #上班经过数work_connections 65535; #每个进程的并发能力error_log /data/nginx/logs/error.log; #错误日志

    ④Nginx 是如何实现高并发的?

    Nginx 利用的是多进程(无线程)&多行程 IO 复用模型,异步,非阻塞。

    一度主进程 Master,多个工作经过 Worker,每个工作经过可以处理多个请求 ,Master 经过主要承担收集、分发请求。

    每当一个请求过来时,Master 就拉起一番 Worker 经过负责处理这个请求。同时 Master 经过也承担监督 Woker 的状态,合同高可靠性。

    在 Nginx 中的 Work 经过中,为了应对高并发场景,利用了 Reactor 模型(也就是 I/O 多行程复用,NIO)。

    I/O 多行程复用模型:在 I/O 多行程复用模型中,最重要的体系调用函数就是 Select(其它的还有 epoll 等)。

    该方法能够同时监控多个文件描述符的可读可写情况(每一个网络相联其实都对应一个文件描述符),顶其中的少数文件描述符可读或者可写时,Select 办法就会回来可读以及可写的公文描述符个数。

    Nginx Work 经过使用 I/O 多行程复用模块同时监听多个 FD(文件描述符),顶 Accept、Read、Write 和 Close 事件产生时,操作系统就会回调 FD 绑定的风波处理器。

    此刻 Work 经过再扮处理相应事件,而不是阻塞在某个请求连接上等待。

    这样就足以实现一个进程同时处理多个连接。每一个 Worker 经过通过 I/O 多行程复用处理多个连接请求。

    为了削减进程切换(要求系统调用)的性质损耗,普通设置 Worker 经过数量和 CPU 多少一致。

    ⑤Nginx 和 Apache 的分别?

    轻量级,同样起 Web 劳务,比 Apache 占用更少的内存及资源抗并发,Nginx 拍卖请求是异步非阻塞的,而 Apache 则是阻塞型的。

    在高并发下 Nginx 能保持低资源低消耗高性能高度现代化的计划,编纂模块相对简单,最基本的分别在于 Apache 是同步多进程模型,一度连接对应一个进程;Nginx是异步的,多个连接(万级别)可以对应一个进程。

    ⑥Nginx 的 Upstream 支持的载荷均衡方式?

  • 轮询(默认)
  • weight:指定权重
  • ip_hash:每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个下端服务器
  • 先后三方:fair、url_hash
  • ⑦Nginx 科普的僵化配置有哪些?

  • 调整 worker_processes:指 Nginx 要转变的 Worker 多少,最佳实践是每个 CPU 运作 1 个工作经过。
  • 电气化 worker_connections。
  • 租用 Gzip 调减:调减文件大小,调减了客户端 HTTP 的传导带宽,故此提高了页面加载速度。
  • 为病态文件启用缓存。
  • 禁用 access_logs:走访日志记录,他记录每个 Nginx 呼吁,故此消耗了大量 CPU 能源,故而降低了 Nginx 性能。
  • 参考资料:

  • 《Nginx 基本知识 100 讲》
  • 《贯通 Nginx》
  • nginx.conf 配置文件详解
  • 《尚硅谷 Nginx》
  • 【编纂推荐】

    1. Android 开源项目 (AOSP) 代码搜索工具正式通告
    2. 如何快速在GitHub上做到标星10K的正本求源项目
    3. 必发娱乐手机版11月Github上热门的正本求源项目
    4. Google 开源的 Python 命令行库:摸清 fire
    5. Nginx传感器架构解析
    【义务编辑: 武晓燕 TEL:(010)68476606】

    点赞 0
  • Nginx  模块库  开源
  • 分享:
    大家都在看
    猜你喜欢
  • 订阅专栏+更多

    云架构师修炼手册

    云架构师修炼手册

    云架构师之必不可少技能
    共3章 | Allen在路上

    4人口订阅学习

    Devops的监控神器Prometheus

    Devops的监控神器Prometheus

    监督主流
    共22章 | 小罗ge11

    82人口订阅学习

    手把手玩转Elasticsearch

    手把手玩转Elasticsearch

    Chandler_珏瑜
    共20章 | Chandler_珏瑜

    77人口订阅学习

    读 书 +更多

    信息安全风险评估

    信息安全风险评估理论研究日趋成熟,相关资料比较充足,但有关评估实际工作之参考资料很少。资本书以信息安全风险评估实践为基础,围绕评估工...

    订阅51CTO邮刊

    点击这里查看样刊

    订阅51CTO邮刊

    51CTO劳务号

    51CTO官微



  •