精华内容
下载资源
问答
  • Nginx 详解

    2021-08-08 22:21:24
    Nginx的视频之后,自己梳理了知识点,了解了Nginx的作用。 本文章只是简单阐述Nginx,方便对Nginx有了初步了解。并不会对里面的技术进行详细分析,适合初学者。 运用场景 正常情况下,我们的项目在一个服务器...

    前提

    最近一直在网上学习,突然对Nginx很感兴趣就学了起来。在网上浏览了许多的博客,但是都没有很浅显的告诉我Nginx是什么、作用是什么,能够带来什么效果,在B站看了<狂神说>的Nginx的视频之后,自己梳理了知识点,了解了Nginx的作用。

    本文章只是简单阐述Nginx,方便对Nginx有了初步了解。并不会对里面的技术进行详细分析,适合初学者。

    运用场景

    正常情况下,我们的项目在一个服务器下就可以跑的起来,这对与小规模访问量是没有问题的。如果访问的人数慢慢增多,tomcat服务器还能够快速响应吗?几千人可以,几万人呢,几十万人呢,这个时候一台服务器是顶不住的。

    这时候该怎么办呢? 加内存?可以使用redis把更多的数据保存在内存中,减少数据库的访问,达到快速的访问。但是这解决不解决根本性问题,即高并发下单台服务器承受压力过大,会导致内存突然骤升到100%。

    那有没有什么好的办法呢?既然单台服务器承受压力过大,那我们就多加几台服务器,缓解单台服务器的压力。比如我们可以在三台服务器上都部署项目,如果客户端的请求,能均匀的分到这三台服务器上,是不是可以缓解单台服务器的压力了呢?这样似乎很有道理。

    请看下面的图形:

    image.png

    我们假设服务器2、服务器3和服务器4为我们部署的服务器,现在有个问题,客户端的请求只能访问一个,我们有三台服务器(对应三个不同的IP),客户端怎么知道请求的事哪个服务器呢?有一个糟糕方法,让前端知道每个模块去访问哪个服务器,这简直是槽糕透了!

    现在问题是:怎么能够在改动很少的情况下,通过URL访问三台服务器,即客户端通过访问一个连接,能够自动映射到某一台服务器上。

    这就需要我们的Nginx出场了。

    Nginx是什么

    image.png

    Nginx支持50000个并发连接数,但是tomcat只支持500,就多得并发数来讲,用nginx也是很好的。

    个人理解:Nginx相当于一个中间件,在客户端和服务器之间齐了桥梁的作用。Nginx负责把客户端的请求,分发到各台服务器,然后再返回。解决了客户端如何访问多台服务器的问题。

    上面的文字作为初步了解,接下来讲一下上面问题使用Nginx来解决,这样来了解Nginx是什么。

    解决措施:我们在客户端和服务器之间搭建Nginx,在Nginx中配置三台服务器IP地址和映射端口(三台服务器的IP和对应的端口不同)。比如项目地址是www.baidu.com,当你访问这个地址的时候,Nginx会这个请求映射到服务器2上,也有可能是3.当你下一次请求时,这个请求会到服务器3上。这样就解决了,把所有的请求都映射到一台服务器上,Nginx可以把请求均衡的分布在三台服务器上,这样的请求速度会快很多。

    Nginx作用

    反向代理

    概念:

    反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。【来自百度百科】

    image.png

    图片来自狂神说

    自述:

    反向代理的作用是应用部署在多台服务器上,然后由Nginx对外提供一个接口,这样客户端访问服务器时,完全感觉不到是访问多台服务器。后台由Nginx控制多台服务器的路由,这样方便管理多台服务器时,路由控制。当某一台服务器宕机时,Nginx自动把路由映射到其他服务器。

    负载均衡

    概念:

    负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

    负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器FTP服务器企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。【来自百度百科】

    image.png

    【图片来自狂神说】

    自述:

    负载均衡的意思是:降低单台服务器的压力,使多台服务器分担压力,这样能够保持服务器的告诉运转。

    当一台服务器不能满足业务需求时,我们要扩充多台服务器,把应用部署在多台服务器上。Nginx会根据你所配置的请求,去访问服务器。比如:第一次请求来了则访问1服务器,当第二次请求来时则访问2服务器,再来一个请求时,访问3服务器。分解了单台服务器的压力,保障了服务器的告诉运转,提高应用处理的效率。如果某一个服务器配置较好,还可以配置把多个请求访问到该服务器上。【需要在Nginx中进行配置】

    展开全文
  • nginx详解

    2021-05-04 17:34:15
    什么是nginx nginx是一款免费的、自由的、开源的、高性能HTTP服务器和反向代理服务器,nginx 专为性能优化而开发,性能是其最重要的要求,十分注重效率,能支持高达 50000 个并发连接数。 nginx有哪些功能 正向代理...

    什么是nginx

    nginx是一款免费的、自由的、开源的、高性能HTTP服务器和反向代理服务器,nginx 专为性能优化而开发,性能是其最重要的要求,十分注重效率,能支持高达 50000 个并发连接数。

    nginx有哪些功能

    1. 正向代理

    用户需要手动配置代理服务器,可以配置一个代理服务器

    1. 反向代理

    反向代理,“它代理的是服务端”,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。

    1. 负载均衡

    一个请求过来,nginx可以动态的把这个请求分配给不同的服务器。这种就是负载均衡,避免一个服务器压力过大,可以支持更多的请求。

    支持的负载均衡算法有:

    • 轮询(默认)。
    • weight,代表权,权越高优先级越高。
    • fair,按后端服务器的响应时间来分配请求,相应时间短的优先分配。
    • ip_hash,每个请求按照访问 ip 的 hash 结果分配,这样每一个访客固定的访问一个后端服务器,可以解决 Session 的问题。
    1. 动静分离

    一个请求过来,我们可以把例如图片之类的静态文件自己映射处理,把动态的请求转发给tomcat之类的服务器去处理。

    1. 限流

    Nginx使用的限流算法是漏桶算法,在http块中,配置基础的限流配置:

    http {     
    	limit_req_zone$binary_remote_addr zone=mylimit:10m rate=10r/s;03   	  server {
    		location /test/ {
    		limit_reqzone=mylimit;        
    		proxy_passhttp://backend;
    		}
    	}
    }
    
    1. 高可用

      nginx经常和keepalive组合完成高可用

    2. 黑白名单

    nginx可以配置黑白名单

    1. 好用的配置

    worker 数应该和 CPU 数相等

    欢迎关注公众号蜜蜂技术巢了解更多知识

    展开全文
  • Nginx详解

    2021-07-14 17:09:46
    Nginx详解 1. 简介 高性能的HTTP和反向代理web服务器 稳定、丰富的功能集和示例配置文件、低系统资源的消耗 轻量级web服务器和反向代理服务器 电子邮件代理服务 内容占有少,并发能力强 专门为性能优化开发,能...

    Nginx详解

    1. 简介

    • 高性能的HTTP和反向代理web服务器
    • 稳定、丰富的功能集和示例配置文件、低系统资源的消耗
    • 轻量级web服务器和反向代理服务器
    • 电子邮件代理服务
    • 内容占有少,并发能力强
    • 专门为性能优化开发,能经受高负载的考验

    2. 什么是正向代理

    • 把局域网外的Internet想象成一个巨大的资源库,局域网中的客户端要访问Internet,就需要通过代理服务器来访问,这种代理服务就称为正向代理
    • 过程:
      • 在客户端(浏览器)配置代理服务器
      • 通过代理服务器进行互联网访问

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0DdtNuzo-1626253767865)(resource/1626251608951.png)]

    3. 反向代理

    • 客户端对代理是无感知的,客户端不需要任何配置就可以访问
    • 只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后返回给客户端
    • 此时反向代理服务器和目标服务器对外就是一个服务器
    • 暴露的是代理服务器地址,隐藏了真实服务器IP地址

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G8Vulu9m-1626253767873)(resource/1626251644145.png)]

    4. 负载均衡

    • 客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端
    • 以下服务模式,仅适用并发请求相对较少的情况下,不适合复杂业务及并发访问量大的情况,服务器容易崩溃

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZPtfUwsa-1626253767881)(resource/1626251690623.png)]

    通过增加服务器的数量。将请求(负载)分发到各个服务器上,就是所谓的`负载均衡

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AjKPVfq5-1626253767890)(resource/1626251711563.png)]

    5. 动静分离

    • 为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力
    • 动静分离前的服务模式:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1MUMvpmR-1626253767896)(resource/1626251756863.png)]

    动静分离后的服务模式:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uhBNuQnT-1626253767902)(resource/1626251776650.png)]

    6. Nginx常用命令

    • 必须先进入Nginx的sbin目录
    • 查看nginx版本号
      • ./nginx -v
    • 启动nginx
      • ./niginx
    • 关闭nginx
      • ./nginx -s stop
    • 重新加载nginx配置文件(非重启nginx)
      • ./nginx -s reload

    7. Nginx配置文件

    7.1 位置

    /www/server/nginx/conf/nginx.conf

    7.2 组成

    由三部分组成

    • 全局块
    • events块
    • http块

    7.2.1 全局块

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

    • 主要包括配置运行nginx服务器的用户(组)、允许生成worker process数,进程PID存放路径、日志存放路径和类型以及配置文件的引入等

    • worker_processes 1;
      
    表示nginx服务器并发处理服务的关键配置,值越大表示可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1nwPbRQV-1626253767906)(resource/1626251895439.png)]

    7.2.2 events块

    • 涉及的指令主要影响nginx服务器与用户的网络连接,常用的设置包括:

      • 是否开启对多work process下的网络连接进行序列化
      • 是否允许同时接收多个网络连接
      • 选取哪种事件驱动模型来处理连接请求
      • 每个work process可以同时支持的最大连接数等
    • worker_connections  1024;
      
    表示每个work process支持的最大连接数为1024
    
    - events块这部分的配置对nginx的性能影响较大,在实际中应该灵活配置
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7WRWbuyJ-1626253767912)(resource/1626252031748.png)]

    7.2.3 http块

    包括 http全局块 和 server块

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oDvUdqnX-1626253767916)(resource/1626252092524.png)]

    7.2.3.1 http全局块

    包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等

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

    最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置

    • location块

    一个server块可以配置多个location块

    这块的主要作用是基于nginx服务器接收到的请求字符串(例如server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如 前面的/uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行

    8. 反向代理实例1

    8.1 实现效果

    打开浏览器,输入地址 www.123.com,跳转到linux系统tomcat主页面

    8.2 分析过程

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NvfowY3e-1626253767919)(resource/1626252214069.png)]

    8.3 具体配置

    • 配置host文件
    • 在nginx配置请求转发

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4PanUON1-1626253767922)(resource/1626252302317.png)]

    9. 反向代理实例2

    9.1 实现效果

    • 使用nginx反向代理,根据访问的路径跳转到不同端口的服务中
    • nginx监听的端口为9001
    访问 http://ip地址:9001/edu 直接跳转到127.0.0.1:8081
    访问 http://ip地址:9001/vod 直接跳转到127.0.0.1:8082
    

    9.2 准备工作

    • 准备两个tomcat服务器,分别监听8081、8082端口
    • 启动服务器

    9.3 具体配置

    server{
      listen 9001;
      server_name ip地址;
      
      location ~/edu/{
     		proxy_pass http://localhost:8080; 
      }
      
      location ~/vod/{
        proxy_pass http://localhost:8081;
      }
    }
    
    # 开放对外访问的端口号 9001 8080 8081
    

    10. location指令说明

    • 该指令用于匹配URL
    • 语法说明如下:
    location [ = | ~ | ~* | ^~] uri {
      
    }
    
    • =:用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求
    • ~:用于表示uri包含正则表达式,并且区分大小写
    • ~*:用于表示uri包含正则表达式,并且不区分大小写
    • ~~:用于不含正则表达式的uri前,要求nginx服务器知道标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配
    • expires参数设置浏览器缓存过期时间,减少与服务器之间的请求和流量

    11. 负载均衡实例

    11.1 实现效果

    浏览器地址栏输入地址http://ip地址/edu/a.html,该请求平均分配到8080和8081端口中进行处理

    11.2 准备工作

    准备两个tomcat服务器,分别监听8081、8082端口在两台tomcat服务器的webapp目录下,配置同一项目

    11.3 具体配置

    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
      
     		# 必须在http块的全局块中添加负载均衡 
        upstream myserver{
          ip_hash;
          server ip地址:8080 weight=1;
          server ip地址:8081 weight=1;
        }
    
        server {
          listen       80;
          server_name  ip地址;
    
          location / {
            root   html
            proxy_pass http:myserver;
            index index.html index.htm;
          }
        }
    }
    

    12. 分配策略

    12.1 轮询【默认】

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

    12.2 权重【weight】

    • weight代表权重,默认为1,权重越高被分配的客户端越多
    • 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
    upstream server_pool{
      server ip地址1 weight=10;
      server ip地址2 weight=20;
    }
    
    

    12.3 ip_hash

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

    upstream server_pool{
      ip_hash;
      server ip地址1:80;
      server ip地址2:80;
    }
    
    

    12.4 fair【第三方】

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

    upstream server_pool{
      server ip地址1:80;
      server ip地址2:80;
      fair;
    }
    
    

    13. 动静分离实例

    13.1 实现方法1

    纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案

    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
    
        server {
          listen       80;
          server_name  ip地址;
    
          location /www/ {
            root   /data/;
            index index.html index.htm;
          }
        
        	location /image/ {
            root   /data/;
          	autoindex on;
          }
        }
    }
    
    

    13.2 实现方法2

    动态跟静态文件混合在一起发布,通过nginx来分开

    14. Nginx配置高可用集群

    14.1 问题场景

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cjvemUCd-1626253767924)(resource/1626252958057.png)]

    14.2 高可用

    • 需要两台nginx服务器
    • 需要keepalived
    • 需要虚拟ip

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-apuvw4fI-1626253767927)(resource/1626252988102.png)]

    15. Nginx原理

    15.1 master & worker

    [root@iZwz92plyjhrv7gdhnnlb1Z ~]# ps -ef | grep nginx
    nginx: master process /www/server/nginx/sbin/nginx -c /www/server/nginx/conf/nginx.conf
    nginx: worker process
    
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z4I056wZ-1626253767929)(resource/1626253040979.png)]

    一个master和多个worker的优点:

    • 可以使用nginx -s reload 热部署方式,利于nginx进行热部署操作
    • 对于每个worker进程来说,独立的进程不需要加锁
    • worker异常退出会导致当前worker上的所有请求失败,但不会影响到所有的请求,降低风险

    需要设置多少个worker?

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

    15.2 争抢机制

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tq6pGoIt-1626253767931)(resource/1626253093461.png)]

    15.3 连接数 worker_connection

    • 表示每个worker进程所能建立连接的最大值
    • 对于http请求本地资源来说,一个nginx所能建立的最大连接数是worker_connections * worker_processes
    • 支持http1.1的浏览器每次访问要占两个连接,所以普通的静态访问最大并发数是worker_connections * worker_processes /2
    • 对于http作为反向代理来说,最大并发数是worker_connections * worker_processes /4,因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用四个连接
    展开全文
  • nginx-nginx详解

    2021-10-13 16:54:04
    1 nginx学习 看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全 前言 1)nginx简介 什么是 nginx 和可以做什么事情 Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高...

    1 nginx学习

    看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全

    前言

    1)nginx简介

    什么是 nginx 和可以做什么事情

    Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。

    其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

    2)Nginx 作为 web 服务器

    Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php 等。但是不支持 java。Java 程序只能通过与 tomcat 配合完成。Nginx 专为性能优化而开发, 性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高 达 50,000 个并发连接数。

    3)正向代理

    Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。 正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访 问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

    简单一点:通过代理服务器来访问服务器的过程 就叫 正向代理。
    需要在客户端配置代理服务器进行指定网站访问

    4)反向代理

    反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。
    我们只 需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。

    1. 负载均衡

    增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的 情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡

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

    这种架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较适合的,成 本也低。但是随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂 > 度增加,这种架构会造成服务器相应客户端的请求日益缓慢,并发量特别大的时候,还容易 > 造成服务器直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这种情 况呢? > > 我们首先想到的可能是升级服务器的配置,比如提高 CPU 执行频率,加大内存等提高机 器的物理性能来解决此问题,但是我们知道摩尔定律的日益失效,硬件的性能提升已经不能 > 满足日益提升的需求了。最明显的一个例子,天猫双十一当天,某个热销商品的瞬时访问量 > 是极其庞大的,那么类似上面的系统架构,将机器都增加到现有的顶级物理配置,都是不能 > 够满足需求的。那么怎么办呢?上面的分析我们去掉了增加服务器物理配置来解决问题的办法,也就是说纵向解决问题 > 的办法行不通了,那么横向增加服务器的数量呢?这时候集群的概念产生了,单个服务器解 > 决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们 > 所说的负载均衡

    在这里插入图片描述
    在这里插入图片描述

    1. 动静分离

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

    在这里插入图片描述

    2 Nginx 的安装(Linux:centos为例)

    nginx安装时,用到的包,我都准备好啦,方便使用:
    1)准备工作
    打开虚拟机,使用finallshell链接Linux操作系统
    到nginx下载软件
    http://nginx.org/
    在这里插入图片描述
    先安装其依赖软件,最后安装nginx。
    依赖工具:pcre-8.3.7.tar.gz, openssl-1.0.1t.tar.gz, zlib-1.2.8.tar.gz, nginx-1.11.1.tar.gz。
    我这里也提供下。

    1. 开始安装
      都有两种方式,一种直接下载,第二种使用解压包方式。这里大多使用解压包方式。
      我的安装路径:/usr/feng/
      安装pcre
      方式一、wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz 。
      方拾二、上传源码压缩包,解压、编译、安装 三部曲。
      1)、解压文件, 进入pcre目录,
      2)、./configure 完成后,
      3)、执行命令: make && make install
      安装 openssl
      下载OpenSSL的地址:
      http://distfiles.macports.org/openssl/
      1)、解压文件, 回到 openssl目录下,
      2)、./configure 完成后,
      3)、执行命令: make && make install
      安装 zlib
      1)、解压文件, 回到 zlib 目录下,
      2)、./configure 完成后,
      3)、执行命令: make && make install
      **安装 nginx **
      1)、解压文件, 回到 nginx 目录下,
      2)、./configure 完成后,
      3)、执行命令: make && make install

    2. 运行nginx

    安装完nginx后,会在 路径 /usr/local 下自动生成 nginx 文件夹。这是自动生成的。
    进入这个目录:
    cd /usr/local/nginx
    目录内容如下:
    在这里插入图片描述
    进入sbin文件夹,里面有两个文件:nginx 和 nginx.old。
    执行命令:./nginx 即可执行
    测试启动: ps -ef | grep nginx

    在这里插入图片描述
    已经启动。
    查看nginx默认端口(默认为80),使用网页的形式测试,(像Tomcat一样。)
    进入目录查看端口:cd /usr/local/nginx/conf 下的 nginx.conf文件。这个文件也是nginx的配置文件。vim 下:

    在这里插入图片描述
    输入IP:80,则显示:

    在这里插入图片描述

    1. 防火墙问题

    在 windows 系统中访问 linux 中 nginx,默认不能访问的,因为防火墙问题 (1)关闭防火墙 (2)开放访问的端口号,80 端口
    查看开放的端口号
    firewall-cmd --list-all

    设置开放的端口号
    firewall-cmd --add-service=http –permanent
    firewall-cmd --add-port=80/tcp --permanent
    重启防火墙
    firewall-cmd –reload

    3 Nginx 的常用命令和配置文件

    1) Nginx常用命令

    使用nginx操作命令前提
    使用nginx操作命令前提:必须进入到nginx的自动生成目录的下/sbin文件夹下。
    nginx有两个目录:
    第一个:安装目录,我放在:
    /usr/feng/

    第二个:自动生成目录:
    /usr/local/nginx/

    查看 nginx 的版本号
    ./nginx -v
    在这里插入图片描述

    启动 nginx
    ./nginx
    在这里插入图片描述

    关闭nginx
    ./nginx -s stop

    在这里插入图片描述

    重新加载 nginx
    在目录:/usr/local/nginx/sbin 下执行命令,不需要重启服务器,自动编译。
    ./nginx -s reload

    2) Nginx配置文件

    配置文件位置
    /usr/local/nginx/conf/nginx.conf
    在这里插入图片描述
    3) nginx 的组成部分
    配置文件中有很多#, 开头的表示注释内容,我们去掉所有以 # 开头的段落,精简之后的 内容如下:

    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
    
        server {
            listen       80;
            server_name  localhost;
    
            location / {
                root   html;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
    

    nginx 配置文件有三部分组成

    第一部分:全局块

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

    worker_processes 1;

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

    第二部分:events块

    比如上面的配置:

    events {
    worker_connections 1024;
    }
    events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否 允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。
    上述例子就表示每个 work process 支持的最大连接数为 1024.
    这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。

    第三部分:

    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
    
        server {
            listen       80;
            server_name  localhost;
    
            location / {
                root   html;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
    

    这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

    需要注意的是:http 块也可以包括 http全局块、server 块。

    http全局块
    http全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
    server 块
    这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了 节省互联网服务器硬件成本。
    每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
    而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。
    全局 server 块
    最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。
    location 块
    一个 server 块可以配置多个 location 块。
    这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称 (也可以是IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。 地址定向、数据缓 存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

    4 Nginx 反向代理 配置实例 1.1

    实现效果
    打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页 面中
    准备工作
    (1)在 liunx 系统安装 tomcat,使用默认端口 8080,我这里8080被其他应用占用,所以我已修改端口为8081。在conf目录下的server.xml配置文件中,如下,将port改为 8081,其实下面也有类似的Connector 标签,但是要看protocol协议为HTTP/1.1的标签修改即可。

    tomcat 安装文件放到 liunx 系统中,解压。
    Tomcat的路径:/usr/feng/apach-tomcat/tomcat8081下
    进入 tomcat 的 bin 目录中,./startup.sh 启动 tomcat 服务器。

    对外开放访问的端口 (我这里不需要)
    firewall-cmd --add-port=8080/tcp --permanent
    firewall-cmd –reload
    查看已经开放的端口号 firewall-cmd --list-all

    在 windows 系统中通过浏览器访问 tomcat 服务器
    别忘了开启tomcat,在bin目录下,使用 命令:
    ./startup.sh

    在这里插入图片描述
    2)访问过程的分析
    具体配置
    a. 第一步 在 windows 系统的 host 文件进行域名和 ip 对应关系的配置
    在这里插入图片描述
    添加内容在 host 文件中
    在这里插入图片描述
    第二步 在 nginx 进行请求转发的配置(反向代理配置)
    在这里插入图片描述
    3)最终测试

    如上配置,我们监听 80 端口,访问域名为 www.123.com,不加端口号时默认为 80 端口,故 访问该域名时会跳转到 127.0.0.1:8081 路径上。在浏览器端输入 www.123.com 结果如下:
    在这里插入图片描述

    5 Nginx 反向代理 配置实例

    1)实现效果

    实现效果:使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中
    nginx 监听端口为 9001,
    访问 http://127.0.0.1:9001/edu/ 直接跳转到 127.0.0.1:8081
    访问 http://127.0.0.1:9001/vod/ 直接跳转到 127.0.0.1:8082

    2)准备工作
    a. 第一步,两个tomcat端口和测试页面

    准备两个 tomcat,一个 8081 端口,一个 8082 端口。
    在**/usr/feng/apach-tomcat/下 新建tomcat8081和tomcat8082两个文件夹,将 Tomcat安装包 分别上传到两个文件夹,进行解压缩安装,8081的Tomcat只改一个http协议默认端口号** 就行,直接启动即可。
    这里需要改8082的端口号,需要修改三个端口,只修改一个端口号的话,是启动不了的,我已经测试过了(如果只修改http协议默认端口的话,8081和8082只会启动一个)。因为默认的都是8080(没有的直接创建文件夹,好多都是刚建的,与上面的第一个示例示例有点改动)
    tomcat8081 解压包,然后进入到 /bin 下 ,使用命令 ./startup 启动

    tomcat8082
    使用命令 编辑 文件 :/conf/server.xml 文件
    vim server.xml
    修改后如下:
    修改server 的默认端口,由默认8005->8091

    在这里插入图片描述

    修改http协议的默认端口,由默认的8080->8082

    在这里插入图片描述

    修改默认ajp协议的默认端口,由默认的8009->9001

    在这里插入图片描述

    并准备好测试的页面
    写一个a.html页面,
    tomcat8081的tomcat,放到目录 /webapp/vod 下,内容:

    fengfanchen-nginx-8081!!!

    tomcat8082的tomcat,放到目录 /webapp/edu 下,内容:

    fengfanchen-nginx-8082!!!

    测试页面

    在这里插入图片描述

    3) 第二步,修改 nginx 的配置文件
    修改 nginx 的配置文件 在 http 块中添加 server{}
    修改其中注释的就行。

    在这里插入图片描述
    修改成功后
    在这里插入图片描述
    开发的端口: nginx监听端口:8001,tomcat8081端口:8081,tomcat8082端口:8082。
    测试结果

    在这里插入图片描述

    location 指令说明
    该指令用于匹配 URL。
    语法如下:

    在这里插入图片描述

    首先精确匹配 =
    其次前缀匹配 ^~
    其次是按文件中顺序的正则匹配
    然后匹配不带任何修饰的前缀匹配。
    最后是交给 / 通用匹配
    当有匹配成功时候,停止匹配,按当前匹配规则处理请求

    例子,有如下匹配规则:

    在这里插入图片描述
    那么产生的效果如下:
    在这里插入图片描述

    6 Nginx 负载均衡 配置实例 2

    实现效果

    浏览器地址栏输入地址 http://208.208.128.122/edu/a.html,负载均衡效果,平均 8081 和 8082 端口中
    准备工作
    a.准备两台 tomcat 服务器
    准备两台 tomcat 服务器,一台 8081,一台 8082
    上面的反向代理第二个实例中已经配置成功了。但是需要添加点东西,如下哦。

    修改一处

    在两台 tomcat 里面 webapps 目录中,创建名称是 edu 文件夹,在 edu 文件夹中创建 页面 a.html,用于测试。
    由于第二个实例中,8082中有了 edu 的文件夹,所以只在8081 文件夹下创建即可。
    然后使用在vod文件下使用命令:
    cp a.html …/edu/

    即可完成,
    查看命令

    cd …/edu/ # 进入到 edu 目录下
    cat a.html #查看内容

    c. 测试页面

    测试URL
    http://208.208.128.122:8081/edu/a.html

    在这里插入图片描述

    在 nginx 的配置文件中进行负载均衡的配置

    修改了第一个示例的 配置

    在这里插入图片描述

    upstream myserver {
            server 208.208.128.122:8081;
            server 208.208.128.122:8082;
        }
        server {
            listen       80;
            server_name  208.208.128.122;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
                proxy_pass   http://myserver;
                #proxy_pass   http://127.0.0.1:8081;
                index  index.html index.htm;
        }
    

    最终测试
    测试url
    http://208.208.128.122/edu/a.html
    在这里插入图片描述

    1. nginx 分配服务器策略

    随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题, 顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应 足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品, 很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎, nginx 就是其中的一个,在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服 务,而且 Nginx 提供了几种分配方式(策略):

    轮询(默认)

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

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

    upstream myserver {
            server 208.208.128.122:8081 weight=10;   #  在这儿
            server 208.208.128.122:8082 weight=10;
        }
        server {
            listen       80;
            server_name  208.208.128.122;
            location / {
                root   html;
                proxy_pass   http://myserver;
                index  index.html index.htm;
    }
    

    ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器

    upstream myserver {
        	ip_hash;							//  在这儿
            server 208.208.128.122:8081 ;   
            server 208.208.128.122:8082 ;
        }
        server {
            listen       80;
            server_name  208.208.128.122;
            location / {
                root   html;
                proxy_pass   http://myserver;
                index  index.html index.htm;
        }
    

    fair(第三方)

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

    upstream myserver {
    server 208.208.128.122:8081 ;
    server 208.208.128.122:8082 ;
    fair; # 在这儿
    }
    server {
    listen 80;
    server_name 208.208.128.122;
    location / {
    root html;
    proxy_pass http://myserver;
    index index.html index.htm;
    }

    Nginx 动静分离 配置实例 3

    在这里插入图片描述

    Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和 静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用 Nginx 处理静态页面,Tomcat 处理动态页面。动静分离从目前实现角度来讲大致分为两种:

    一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;

    另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。

    通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使 浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资 源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可, 所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件, 不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个 URL,发送 一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码 304,如果有修改,则直接从服务器重新下载,返回状态码 200。

    准备工作
    在Linux 系统中准备 静态资源,用于进行访问。
    在这里插入图片描述
    www文件夹中 a.html

    fengfanchen-test-html

    image 中的 01.jpg 我的照片哈!!!(自动忽略)

    在这里插入图片描述

    具体配置
    a. 在 nginx 配置文件中进行配置
    在这里插入图片描述
    最终测试

    a. 测试 image
    http://208.208.128.122/image/
    http://208.208.128.122/image/01.jpg

    在这里插入图片描述
    在这里插入图片描述

    测试 www
    http://208.208.128.122/www/a.html

    在这里插入图片描述

    7 Nginx 的高可用集群

    实验环境

    主nginx负载均衡器:192.168.10.63 (通过keepalived配置了VIP:192.168.10.188供外使用)
    副nginx负载均衡器:192.168.10.200(通过keepalived配置了VIP:192.168.10.188供外使用)
    拓扑图:

    在这里插入图片描述
    安装nginx和keepalived(用yum安装,在此处不编译安装了,用阿里云的yum仓库)
    yum install nginx -y
    yum install keepalived -y

    配置nginx服务器:
    master:192.168.10.63
    cd /usr/share/nginx/html/
    vi index.html
    如图:
    在这里插入图片描述
    在这里插入图片描述
    slave:192.168.10.200
    cd /usr/share/nginx/html/
    vi index.html
    如图:

    在这里插入图片描述
    在这里插入图片描述
    在浏览器里访问master和slave,检验配置是否正确:
    在这里插入图片描述
    在这里插入图片描述

    配置keepalived服务器:
    master的配置
    cd /etc/keepalived/
    cp keepalived.conf{,.bak} #备份配置文件,养成良好习惯,修改配置文件前一定要备份。

    在这里插入图片描述
    在这里插入图片描述
    slave的配置:不多说,直接上图:

    在这里插入图片描述
    在这里插入图片描述
    重启master,slave的keepalived,nginx。
    master的vip 如图:
    在这里插入图片描述
    关闭master的keepalivd,vip会漂移到slave上去,master上的截图:
    在这里插入图片描述
    查看slave,次时vip已经漂移到salve上去了,salve上的截图:
    在这里插入图片描述
    说明keepalived的配置没有问题。
    检验keepalived和nginx的高可用:

    在这里插入图片描述
    关闭master的nginx,自动切换到slave的nginx,如图:
    master关闭nginx:

    在这里插入图片描述
    再次刷新网页,跳转到了slave的界面:
    在这里插入图片描述
    次时master的vip票已到slave上去了。master截图:
    在这里插入图片描述
    salve的截图:
    在这里插入图片描述
    vip为什么会漂移:
    是因为调用了/carl/data/program/nginx/sbin/check_nginx_alive.sh,这个脚本判断nginx挂掉后(关闭),就killall keepalived,master上的keepalived就停止了,而keepalived上的是正常状态,所以vip就漂移到了slave。这个脚本内容如下:
    在这里插入图片描述

    8 Nginx 的原理

    mater 和 worker
    nginx 启动后,是由两个进程组成的。master(管理者)和worker(工作者)。
    一个nginx 只有一个master。但可以有多个worker
    在这里插入图片描述
    ,过来的请求由master管理,worker进行争抢式的方式去获取请求。

    在这里插入图片描述
    在这里插入图片描述
    master-workers 的机制的好处

    首先,对于每个 worker 进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销, 同时在编程以及问题查找时,也会方便很多。
    可以使用 nginx –s reload 热部署,利用 nginx 进行热部署操作
    其次,采用独立的进程,可以让互相之间不会 影响,一个进程退出后,其它进程还在工作,服务不会中断,master 进程则很快启动新的 worker 进程。当然,worker 进程的异常退出,肯定是程序有 bug 了,异常退出,会导致当 前 worker 上的所有请求失败,不过不会影响到所有请求,所以降低了风险。

    设置多少个 worker

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

    worker 数和服务器的 cpu 数相等是最为适宜

    展开全文
  • Nginx详解(二)

    2021-06-27 07:59:13
    Nginx启动/关闭 1、 普通启动 在安装目录下,进入sbin目录下执行 ./nginx 2、 通过配置文件启动 在安装目录下,进入sbin目录下执行 ./nginx –c /usr/local/nginx/conf/nginx.conf 说明:-c是指定配置文件,...
  • 综合架构web服务之nginx详解

    多人点赞 热门讨论 2021-09-02 20:45:47
    文章目录nginx web 服务详解前言一、nginx web 入门简介1.1 什么是nginx1.2 常见的网站服务1.3 nginx 网站服务特点1.4 网站页面访问原理二、nginx 服务部署安装2.1实验环境2.2 YUM 安装2.3 源码编译安装2.4 nginx...
  • linux配置nginx详解

    2021-08-31 14:31:26
    nginx官方下载地址 上传至linux对应文件夹 先上传至/usr/local,cd进压缩包所在的对应的目录,在这里解压,运行命令 cd /usr/local/ tar -zxvf nginx-1.20.1.tar.gz #文件名根据你自己的压缩包文件名来 make 将...
  • Nginx详解(三)

    2021-06-28 14:26:51
    cd /usr/local/nginx/conf vi nginx.conf cd /usr/local/nginx/sbin ./nginx -s reload 说明:当请求/appweb时,nginx会读取转发到upstream中,并分发到server对应的两台机器上去。默认是轮询策略。 4、 Nginx常用...
  • 在介绍Nginx的进程模型之前我们先来给大家解释下一些常见的名词,这能辅助我们更好地了解Nginx的进程模型。作为Web服务器,设计的初衷就是为了能够处理更多的客户端的请求,一般来说,完成并行处理请求工作有三种...
  • nginx详解及实战

    2021-04-24 09:36:58
    什么是NginxNginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个...
  • 本篇是基于k8s-v1.15.0版本,在现有集群上部署ingress。 1、ingress介绍 K8s集群对外暴露服务的方式目前只有三种: Loadblancer;Nodeport;...2.ingress服务:将Nginx的配置抽象成一个Ingress对象,
  • Nginx 介绍 Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务,也可以作为IMAP/POP3/SMTP服务。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下...
  • 一、Linux下安装配置nginx第一次安装nginx,中间出现的问题一步步解决。用到的工具secureCRT,连接并登录服务器。1.1 rz命令,会弹出会话框,选择要上传的nginx压缩包。?1.2 解压?1.3 进入nginx文件夹,执行./...
  • Nginx详解

    2021-05-09 20:17:17
    nginx相关安装 yum安装 yum -y install nginx 相关路径 编译安装 在这里插入代码片 相关路径
  • Nginx 配置详解

    2020-12-21 12:56:51
    序言Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持...
  • Nginx详解学习

    2021-08-07 00:32:41
    Nginx基本概念 Nginx是什么,做什么事情 Nginx是一个高性能的http和反向代理的服务器,其特点是占用内存少,并发能力强,事实上并发能力确实在同类型的网页服务器中表现较好,中国大陆使用Nginx的网站用户有:百度,...
  • Nginx详解及简单配置

    2021-08-13 21:22:32
    Nginx 1 什么是Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,...
  • 简介Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的...
  • Nginx详解(四)

    2021-06-30 14:42:00
    Nginx的负载均衡和静态代理结合在一起,我们可以实现动静分离,这是实际应用中常见的一种场景。它们各司其职,专注于做自己擅长的事情。动静分离充分利用了它们各自的优势,从而达到更高效合理的架构。 动态资源:如...
  • nginx下载 下载地址1: http://nginx.org/download/ 下载地址2: http://nginx.org/en/download.html 下载地址3: 百度网盘链接:https://pan.baidu.com/s/1UChnaF2bMLr06hA6p6Yzpg 提取码:hy74 创建...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,612
精华内容 22,644
关键字:

nginx详解

友情链接: DouPHP_v1.5.2020.0403.rar