美文网首页
16小白入坑指南——Nginx

16小白入坑指南——Nginx

作者: 鸡蛋挂面 | 来源:发表于2021-06-10 11:46 被阅读0次

    前言:在开始介绍之前,先贴出官网地址,一切还是以官网为准
    官网地址

    http://nginx.org/en/download.html
    

    一、什么是Nginx

    Nginx(engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫
    为俄罗斯访问量第二的http://Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。 其将源
    代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,
    Nginx 1.0.4发布。 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like
    协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用
    Nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
    ——来自官方解释

    看不懂没关系,我也看不懂。
    简单的说,使用Nginx可以帮助你完成以下的需求:

    • 1.搭建个人网站;

    • 2.可以用来做反向代理服务器;

    • 3.可以做文件服务器;

    • 4.可以做电子邮件代理服务器;

    • 5.搭建多个虚拟主机。

    二、为什么要使用Nginx

    有人说WEB服务器完全可以使用Apache ,为什么要使用Nginx,但是在你看完它的特点之后相信你就不会这么说了。

    Nginx的优势:
    1.轻量的安装包,占用更少的内存,具有很强的高并发能力;
    2.稳定性强,可以做到7*24 *365不宕机(非人为);
    3.具有丰富的模块,配置简单

    这个感受好比,明明可以使用2000多的手机就能完成的事,那为什么还要去买6000多的手机的道理是一样的。

    三、该用什么方式安装

    如果使用yum的方式安装,可以说,谁都会。所以不管是在实际生产中,还是平时的练习使用中,都要学会使用源码包的方式安装。

    先贴出官网地址,可能有的同学想要使用不同的版本,可以自己下载:

    源码包下载地址

    http://nginx.org/en/download.html

    image-20210608140748689.png

    安装之前准备(必选):
    因为Nginx是使用C语言编写的,在编译安装之前要确保系统安装有C语言的编译环境和相关依赖包

    #gcc是C语言的编译工具
    #PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库
    #zlib库提供了开发人员的压缩算法,在Nginx的各个模块中需要使用gzip压缩,所以我们也需要提前安装其库及源代码zlib和zlib-devel
    #OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包进行安全通信,并且避免被窃听。
    yum  install -y  make gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
    

    总之,用就对了,不然在检查环境configure的时候会报错,一旦报错就不能进行下一步操作了

    安装过程

    安装部署:
    1.下载

    cd /usr/local/src/
    wget http://nginx.org/download/nginx-1.16.1.tar.gz
    

    2.解压

    tar -zxf /usr/local/src/nginx-1.16.1.tar.gz
    

    3.进入解压后的目录

    cd /usr/local/src/nginx-1.16.1/
    

    4.执行configure工具(简单安装不需要添加任何编译参数)

    ./configure
    

    5.编译安装

    make && make install
    

    6.启动测试

    /usr/local/nginx/sbin/nginx
    netstat -tlunp|grep 80
    

    在安装部署的第4步./configure的时候可以指定一些编译参数,启动模块功能

      使用命令`/usr/local/src/nginx-1.16.1/configure --help`查看全部的参数,当然也可以不写,不写就是默认值
    
    /usr/local/src/nginx-1.16.1/configure --help
    
     --help                             print this message
    
     --prefix=PATH                      set installation prefix
     --sbin-path=PATH                   set nginx binary pathname
     --modules-path=PATH                set modules path
     --conf-path=PATH                   set nginx.conf pathname
     --error-log-path=PATH              set error log pathname
     --pid-path=PATH                    set nginx.pid pathname
     --lock-path=PATH                   set nginx.lock pathname
    
     --user=USER                        set non-privileged user for
                                        worker processes
     --group=GROUP                      set non-privileged group for
                                        worker processes
    
     --build=NAME                       set build name
     --builddir=DIR                     set build directory
    
     --with-select_module               enable select module
     --without-select_module            disable select module
     --with-poll_module                 enable poll module
     --without-poll_module              disable poll module
    
     --with-threads                     enable thread pool support
    
     --with-file-aio                    enable file AIO support
    
    
      参数有很多,这里只列出了几个常用的。
    

    四、常用命令

    Nginx的命令本身就不多,常用的几个命令如下

    所有命令建议使用绝对路径的方式启动,不建议将命令加入全局变量

    #查看Nginx版本号
    /usr/local/nginx/sbin/nginx -V
    #nginx帮助命令
    /usr/local/nginx/sbin/nginx -h
    #验证配置语法是否正确
    /usr/local/nginx/sbin/nginx -t
    #启动nginx
    /usr/local/nginx/sbin/nginx
    #关闭nginx
    /usr/local/nginx/sbin/nginx -s stop
    #配置文件修改重装载命令
    /usr/local/nginx/sbin/nginx -s reload
    

    五、配置文件讲解

    先给出一份知乎上看到了清单配置

    一份配置清单例析
    nginxconf.jpg

    配置文件说明(不必死记硬背,可以当作工具查看,需要的时候在看)

    #定义Nginx运行的用户和用户组
    user www www;
    #
    #nginx进程数,建议设置为等于CPU总核心数.
    worker_processes 8;
    #
    #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
    error_log /var/log/nginx/error.log info;
    #
    #进程文件
    pid /var/run/nginx.pid;
    #
    #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致.
    worker_rlimit_nofile 65535;
    #
    #工作模式与连接数上限
    events
    {
        #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型.
        use epoll;
        #单个进程最大连接数(最大连接数=连接数*进程数)
        worker_connections 1024;    #最大连接数,默认为512
    }
    #
    #设定http服务器
    http
    {
        include mime.types; #文件扩展名与文件类型映射表
        default_type application/octet-stream; #默认文件类型
        #charset utf-8; #默认编码
        server_names_hash_bucket_size 128; #服务器名字的hash表大小
        client_header_buffer_size 32k; #上传文件大小限制
        large_client_header_buffers 4 64k; #设定请求缓
        client_max_body_size 8m; #设定请求缓
          keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。
        # 开启目录列表访问,合适下载服务器,默认关闭.
        autoindex on; # 显示目录
        autoindex_exact_size on; # 显示文件大小 默认为on,显示出文件的确切大小,单位是bytes 改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
        autoindex_localtime on; # 显示文件时间 默认为off,显示的文件时间为GMT时间 改为on后,显示的文件时间为文件的服务器时间
        
        sendfile on; # 开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载.注意:如果图片显示不正常把这个改成off.
        tcp_nopush on; # 防止网络阻塞
        tcp_nodelay on; # 防止网络阻塞
        
        
        # FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度.下面参数看字面意思都能理解.
        fastcgi_connect_timeout 300; ## 链接
        fastcgi_send_timeout 300;  ##读取 是指nginx进程向fastcgi进程发送request的整个过程的超时时间
        fastcgi_read_timeout 300;  ##发请求 是指fastcgi进程向nginx进程发送response的整个过程的超时时间
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 128k;
        
        # gzip模块设置
        gzip on; #开启gzip压缩输出
        gzip_min_length 1k; #允许压缩的页面的最小字节数,页面字节数从header偷得content-length中获取.默认是0,不管页面多大都进行压缩.建议设置成大于1k的字节数,小于1k可能会越压越大
        gzip_buffers 4 16k; #表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
        gzip_http_version 1.1; #压缩版本(默认1.1,目前大部分浏览器已经支持gzip解压.前端如果是squid2.5请使用1.0)
        gzip_comp_level 2; #压缩等级.1压缩比最小,处理速度快.9压缩比最大,比较消耗cpu资源,处理速度最慢,但是因为压缩比最大,所以包最小,传输速度快
        gzip_types text/plain application/x-javascript text/css application/xml;
        #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn.
        gzip_vary on;#选项可以让前端的缓存服务器缓存经过gzip压缩的页面.例如:用squid缓存经过nginx压缩的数据
        
        #开启限制IP连接数的时候需要使用
        #limit_zone crawler $binary_remote_addr 10m;
        
        ##upstream的负载均衡,四种调度算法(下例主讲)##
        
        #虚拟主机的配置
        server
        {
            # 监听端口
            listen 80;
            # 域名可以有多个,用空格隔开
            server_name 127.0.0.1;
            # HTTP 自动跳转 HTTPS
            rewrite ^(.*) https://www.baidu.com;
            deny 127.0.0.1;  #拒绝的ip
            allow 172.18.5.54; #允许的ip 
        }
        upstream myserver {   
          server 127.0.0.1:8080;
          server 192.168.24.189:8080 backup;  #热备
        }
        server
        {
            # 监听端口 HTTPS
            listen 443 ssl;
            server_name https://www.baidu.com;
            root /data/www/;
            # 配置域名证书
            ssl_certificate      C:\WebServer\Certs\certificate.crt;
            ssl_certificate_key  C:\WebServer\Certs\private.key;
            ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
            ssl_protocols SSLv2 SSLv3 TLSv1;
            ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
            ssl_prefer_server_ciphers  on;
        
            index index.html index.htm index.php;
            
            location ~ .*\.(php|php5)?$
            {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi.conf;
            }
            
            # 配置地址拦截转发,解决跨域验证问题
            location /oauth/{
                proxy_pass https://localhost:13580/oauth/;
                proxy_set_header HOST $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
            
            # 图片缓存时间设置
            location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
                expires 10d;
            }
            
            # JS和CSS缓存时间设置
            location ~ .*\.(js|css)?$ {
                expires 1h;
            }
    
            # 日志格式设定
            log_format access '$server_name $remote_addr -$remote_user [$time_local] "$request"'
                      '$status $uptream_status $body_bytes_sent "$http_referer"'
                      '"$http_user_agent" "$http_x_forwarded_for" '
                      '$ssl_protocol $ssl_cipher $upstream_addr $request_time $upstream_response_time';
           # 定义本虚拟主机的访问日志
            access_log /var/log/nginx/access.log access;
            
            # 设定查看Nginx状态的地址.StubStatus模块能够获取Nginx自上次启动以来的工作状态,此模块非核心模块,需要在Nginx编译安装时手工指定才能使用
            location /NginxStatus {
                stub_status on;
                access_log on;
                auth_basic "NginxStatus";
                auth_basic_user_file conf/htpasswd;
                #htpasswd文件的内容可以用apache提供的htpasswd工具来产生.
            }
        }
    }
    

    简化版实用版

    # nginx运行的用户名
    user nginx;
    # nginx启动进程,通常设置成和cpu的数量相等,这里为自动
    worker_processes auto;
    
    # errorlog文件位置
    error_log /var/log/nginx/error.log;
    # pid文件地址,记录了nginx的pid,方便进程管理
    pid /run/nginx.pid;
    
    # Load dynamic modules. See /usr/share/nginx/README.dynamic.
    # 用来加载其他动态模块的配置
    include /usr/share/nginx/modules/*.conf;
    
    # 工作模式和连接数上限
    events {
        # 每个worker_processes的最大并发链接数
        # 并发总数:worker_processes*worker_connections
        worker_connections 1024;
    }
    
    # 与提供http服务相关的一些配置参数类似的还有mail
    http {
        # 设置日志的格式
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        # access_log记录访问的用户、页面、浏览器、ip和其他的访问信息
        access_log  /var/log/nginx/access.log  main;
    
        # 这部分下面会单独解释
        # 设置nginx是否使用sendfile函数输出文件
        sendfile            on;
        # 数据包最大时发包(使用Nagle算法)
        tcp_nopush          on;
        # 立刻发送数据包(禁用Nagle算法)
        tcp_nodelay         on;
        # 链接超时时间
        keepalive_timeout   65;
        # 这个我也不清楚...
        types_hash_max_size 2048;
    
        # 引入文件扩展名与文件类型映射表
        include             /etc/nginx/mime.types;
        # 默认文件类型
        default_type        application/octet-stream;
    
        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        include /etc/nginx/conf.d/*.conf;
    
        # http服务上支持若干虚拟主机。
        # 每个虚拟主机一个对应的server配置项
        # 配置项里面包含该虚拟主机相关的配置。
        server {
            # 端口
            listen       80 default_server;
            listen       [::]:80 default_server;
            # 访问的域名
            server_name  _;
            # 默认网站根目录(www目录)
            root         /usr/share/nginx/html;
    
            # Load configuration files for the default server block.
    
            include /etc/nginx/default.d/*.conf;
    
            # 默认请求
            location / {
            }
    
            # 错误页(404)
            error_page 404 /404.html;
                location = /40x.html {
            }
    
            # 错误页(50X)
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        }
    }
    

    六、虚拟主机

    虚拟主机,也叫“网站空间”,就是把一台运行在互联网上的物理服务器划分成多个“虚拟”服务器。虚拟主机技术极大的促进了网络技术的应用和普及。同时虚拟主机的租用服务也成了网络时代的一种新型经济形式。

    在主配置文件的http块添加include vhosts/*.conf;

    vim /usr/local/nginx/conf/nginx.conf
    #user  nobody;
    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        include vhosts/*.conf;
        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;
            }
        }
    }
    
    
    mkdir  /usr/local/nginx/conf/vhosts/
    
    

    七、代理

    01.正向代理

    02.反向代理

    八、负载均衡

    官方地址

    http://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream
    

    简单来说所谓的负载均衡就是把很多请求进行分流,将他们分配到不同的服务器去处理。比如我有3个服务器,分别为A、B、C,
    然后使用Nginx进行负载均衡,使用轮询策略,此时如果收到了9个请求,那么会均匀的将这9个请求分发给A、B、Cf服务器,
    每一个服务器处理3个请求,这样的话我们可以利用多台机器集群的特性减少单个服务器的压力。

    负载均衡架构和策略
    image-20210608172542079.png

    准备三个服务器(单节点多实例)

    cd /usr/local/src/
    wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-8/v8.5.66/bin/apache-tomcat-8.5.66.tar.gz
    tar xf apache-tomcat-8.5.66.tar.gz
    mv apache-tomcat-8.5.66 /usr/local/tomcat-8.5
    cd /usr/local/
    #准备三个实例
    cp -a  tomcat-8.5/ tomcat-8.5.80
    cp -a  tomcat-8.5/ tomcat-8.5.81
    cp -a  tomcat-8.5/ tomcat-8.5.82
    #修改每个实例的端口和首页
    sed -i  s/8080/8081/g /usr/local/tomcat-8.5.81/conf/server.xml 
    sed -i  s/8005/8006/g /usr/local/tomcat-8.5.81/conf/server.xml 
    sed -i  s/8009/8010/g /usr/local/tomcat-8.5.81/conf/server.xml 
    
    sed -i  s/8080/8082/g /usr/local/tomcat-8.5.82/conf/server.xml 
    sed -i  s/8005/8007/g /usr/local/tomcat-8.5.82/conf/server.xml 
    sed -i  s/8009/8011/g /usr/local/tomcat-8.5.82/conf/server.xml 
    
    echo "8080"  > /usr/local/tomcat-8.5.80/webapps/ROOT/index.jsp
    echo "8081"  > /usr/local/tomcat-8.5.81/webapps/ROOT/index.jsp
    echo "8082"  > /usr/local/tomcat-8.5.82/webapps/ROOT/index.jsp
    
    /usr/local/tomcat-8.5.80/bin/startup.sh
    /usr/local/tomcat-8.5.81/bin/startup.sh
    /usr/local/tomcat-8.5.82/bin/startup.sh
    
    

    确保三个实例都能正常访问

    负载均衡策略

    01.轮询

    编写虚拟主机配置文件

    /usr/local/nginx/conf/vhosts/
    vim tomcat.conf 
    
    upstream backend {
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
    }
    
    server {
        listen 80;
        location / {
            proxy_pass http://backend;
        }
    }
    #重现加载配置服务
    /usr/local/nginx/sbin/nginx -t
    /usr/local/nginx/sbin/nginx -s reload
    #浏览器访问可以看到每次的页面都是不一样的,说明可以能将请求分发到后端的服务器上
    

    02.权重

    只需要修改配置文件upstream模块的功能

    vim tomcat.conf
    upstream backend {
        server 127.0.0.1:8080 weight=5;
        server 127.0.0.1:8081 weight=3;
        server 127.0.0.1:8082 weight=1;
    }
    ...
    #重现加载配置服务
    /usr/local/nginx/sbin/nginx -t
    /usr/local/nginx/sbin/nginx -s reload
    

    03.ip_hash

    只需要修改配置文件upstream模块的功能

    vim tomcat.conf
    upstream backend {
        ip_hash;
        server 127.0.0.1:8080 ;
        server 127.0.0.1:8081 ;
        server 127.0.0.1:8082 ;
    }
    ...
    #重现加载配置服务
    /usr/local/nginx/sbin/nginx -t
    /usr/local/nginx/sbin/nginx -s reload
    

    负载均衡的实现最主要的还是依赖于两个模块upstreamproxy_pass模块

    九、动静分离

    Nginx的并发能力公式:

    worker_processes * worker_connections / 4|2 = Nginx最终的并发能力

    动态资源需要/4,静态资源需要/2

    Nginx通过动静分离来提升Nginx的并发能力,更快的给用户响应

    为什么要进行动静分离?

    在Web开发中,通常来说,动态资源其实就是指那些后台资源,而静态资源就是指HTML,JavaScript,CSS,img等文件。

    一般来说,都需要将动态资源和静态资源分开,将静态资源部署在Nginx上,当一个请求来的时候,如果是静态资源的请求,就直接到nginx配置的静态资源目录下面获取资源,如果是动态资源的请求,nginx利用反向代理的原理,把请求转发给后台应用去处理,从而实现动静分离。

    在使用前后端分离之后,可以很大程度的提升静态资源的访问速度,同时在开过程中也可以让前后端开发并行可以有效的提高开发时间,也可以有些的减少联调时间 。

    01.动态资源配置

    在配置文件修改

    location / {
        proxy_pass URL;
    }
    

    02.静态资源配置

    #配置如下
    location / {
        root 静态资源路径;
        index 默认访问路径下的什么资源;
        autoindex on;#代表展示静态资源的全部内容,以列表的形式展开
    }
    

    一般的静态资源文件是放在Nginx所在的服务器上的,可以使用NFS挂载目录。

    十、Nginx服务器版本升级

    对Nginx版本进行不宕机更新,就需要用到Nginx服务器提供的平滑升级功能。

    步骤:

    01.查看旧版本的参数配置

    /usr/local/nginx/sbin/nginx -V
    nginx version: nginx/1.16.1
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
    configure arguments: #(如果之前没有添加参数配置的话,就不会有以下的参数)
    

    02.下载新版本的源码包

    cd /usr/local/src/
    wget http://nginx.org/download/nginx-1.18.0.tar.gz
    

    03.解压、进入、进行参数配置和编译,不需要进行安装(make install)。

    #进入源码包目录
    cd /usr/local/src/
    #解压
    tar xf nginx-1.18.0.tar.gz
    #参数配置:./configure的时候需要加上旧源码包的参数配置,没有就不添加
    ./configure
    #编译make
    make
    

    在make之后就会在目录下生成Makefile文件和objs目录,objs目录就会有刚刚编译生成的二进制可执行文件

    04.重命名旧版本的二进制文件

    cd /usr/local/nginx/sbin/
    mv nginx nginx.old
    

    05.将新编译生成的二进制文件拷贝到原来/usr/local/nginx/sbin目录下

    cp /usr/local/src/nginx-1.18.0/objs/nginx /usr/local/nginx/sbin/
    

    06.进入到新版本的安装目录,执行make upgrade

    cd /usr/local/src/nginx-1.18.0/
    make upgrade
    

    07.查看是否更新成功

    /usr/local/nginx/sbin/nginx -V
    

    十一、Nginx添加新模块

    添加新模块的思路和版本升级的思路是一样的,不同的地方有两个地方:
    1.在添加新模块的时候,确保Nginx使用源码包是同一个
    2.在参数配置./configure的时候需要带上–add-module=path_of_new_module

    步骤:

    01.查看nginx编译安装时安装了哪些模块

    /usr/local/nginx/sbin/nginx -V
    ...
    configure arguments:...
    ...
    

    02.下载好第三方扩展模块nginx-rtmp-module

    cd /usr/local/src
    wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
    unzip master.zip
    ls nginx-rtmp-module-master/
    

    02.进入原来编译安装的源码包目录(不建议安装完之后删除目录,不然又得去查找相同的源码包)

    如果在添加新模块之前已经完成版本升级,需要进入新版本解压好之后的目录
    
    cd /usr/local/src/nginx-1.18.0/
    ./configure --add-module=/usr/local/src/headers-more-nginx-module-0.23 --add-module=/usr/local/src/nginx-http-concat-master --with-http_gzip_static_module --add-module=/usr/local/src/nginx-rtmp-module-master
    
    

    03.编译(千万不能make install)

    make
    

    04.替换原来的二进制包

    cd /usr/local/nginx/sbin/
    mv nginx nginx.old
    cp /usr/local/src/nginx-1.18.0/objs/nginx /usr/local/nginx/sbin/
    

    05.再次确认是否安装成功

    /usr/local/nginx/sbin/nginx -V
    

    相关文章

      网友评论

          本文标题:16小白入坑指南——Nginx

          本文链接:https://www.haomeiwen.com/subject/jruueltx.html