0
点赞
收藏
分享

微信扫一扫

【web服务】nginx为什么这么受企业欢迎?看完这边文章你就懂了

boom莎卡拉卡 2022-05-01 阅读 74

 📋 个人简介
💖 作者简介:大家好,我是小鹏linux,运维领域创作者,阿里云ACE认证高级工程师😜
📝 个人主页:小鹏linux🔥
🎉 支持我:点赞👍+收藏⭐️+留言📝
💬格言:你未必出类拔萃,但一定与众不同!🔥
📕 系列专栏:
               🍎 阶段一:windows基础                        目前原创16篇
               🍎 阶段二:Linux基础知识                      目前原创38篇
               🍎 阶段三:shell基础+shell高级              目前原创23篇
               🍎 阶段四:python基础及自动化应用      目前原创4篇
               🍎 阶段五:Linux网络服务                       目前原创1篇
               🍎 阶段六:集群原理及架构                     原创未开始
               🍎 阶段七:云计算虚拟化技术                 原创未开始

目录

一. 讲在Nginx之前

        1.同步与异步

                1.1实例解释

        2.阻塞与非阻塞

                2.1实例解释

        3.epoll模型

        4.为什么Nginx比其他web服务器并发高(Nginx工作原理)

                4.1进程管理上的区别

                4.2网络IO模型的选择

                4.3进程的阻塞方式的区别

                4.4模块开发方向不同

        5.nginx和apache的差异对比

        6.nginx配置文件详解

 二. Nginx详解

1.概述 

        2.工作模式

                2.1master-worker

                2.2单进程模式

三.Nginx相关搭建实验

        1.yum安装nginx

                1.2主配置文件

                1.3子配置文件

        2.源码包安装nginx

                实验1:Nginx的状态统计

                实验2:nginx目录保护

                实验3:基于IP的身份验证

                实验4:nginx的虚拟主机(基于域名)

                实验5:nginx的反向代理

                实验6:负载调度(负载均衡)

                实验7:samba服务-网络共享存储(CIFS文件系统)

                实验8:nginx实现https {证书+rewrite}


一. 讲在Nginx之前

1.同步与异步

同步与异步的重点在消息通知的方式上,也就是调用结果的通知方式不同。

同步:当一个同步调用发出去后,调用者要一直等待调用的结果通知后,才能进行后续的执行。

异步:当一个异步调用发出去后,调用者不必一直等待调用结果的返回,异步调用,要想获得结果,一般有两种方式:

1、主动轮询异步调用的结果;

2、被调用方通过callback(回调通知)来通知调用方调用结果。

1.1实例解释

同步取快递:小明收到快递将送达的短信,在楼下一直等到快递送达。

异步取快递:小明收到快递将送达的短信,快递到楼下后,小明再下楼去取。

异步取快递,小明知道快递到达楼下有两种方式:

1、不停的电话问快递小哥到了没有,即主动轮询;

2、快递小哥到楼下后,打电话通知小明,然后小明下楼取快递,即回调通知。

2.阻塞与非阻塞

阻塞与非阻塞的重点在于进/线程等待消息时候的行为,也就是在等待消息的时候,当前进/线程是挂起状态,还是非挂起状态。 

阻塞:调用在发出去后,在消息返回之前,当前进/线程会被挂起,直到有消息返回,当前进/线程才会被激活

非阻塞:调用在发出去后,不会阻塞当前进/线程,而会立即返回。

2.1实例解释

阻塞取快递:小明收到快递即将送达的信息后,什么事都不做,一直专门等快递。

非阻塞取快递:小明收到快递即将送达的信息后,等快递的时候,还一边敲代码、一边刷微信。

同步与异步,重点在于消息通知的方式;阻塞与非阻塞,重点在于等消息时候的行为。

所以,就有了下面4种组合方式

  1. 同步阻塞:小明收到信息后,啥都不干,等快递;
  2. 同步非阻塞:小明收到信息后,边刷微博,边等着取快递;
  3. 异步阻塞:小明收到信息后,啥都不干,一直等着快递员通知他取快递;
  4. 异步非阻塞:小明收到信息后,边刷着微博,边等快递员通知他取快递。

大部分程序的I/O模型都是同步阻塞的,单个进程每次只在一个文件描述符上执行I/O操作,每次I/O系统调用都会阻塞,直到完成数据传输。传统的服务器采用的就是同步阻塞的多进程模型。一个server采用一个进程负责一个request的方式,一个进程负责一个request,直到会话结束。进程数就是并发数,而操作系统支持的进程数是有限的,且进程数越多,调度的开销也越大,因此无法面对高并发。

Nginx采用了异步非阻塞的方式工作。我们先来先了解一下I/O多路复用中的epoll模型。

3.epoll模型

当连接有I/O事件产生的时候,epoll就会去告诉进程哪个连接有I/O事件产生,然后进程就去处理这个事件。

例如:小明家楼下有一个收发室,每次有快递到了,门卫就先代收并做了标记;然后通知小明去取送给小明的快递。

4.为什么Nginx比其他web服务器并发高(Nginx工作原理)

Nginx配置use epoll后,以异步非阻塞方式工作,能够轻松处理百万级的并发连接。

处理过程:每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到可能发生阻塞的地方。比如向后端服务器转发request,并等待请求返回。那么,这个处理的worker不会这么傻等着,他会在发送完请求后,注册一个事件:“如果后端服务器返回了,告诉我一声,我再接着干”。于是他就休息去了。此时,如果再有新的request 进来,他就可以很快再按这种方式处理。而一旦后端服务器返回了,就会触发这个事件,worker才会来接手,这个request才会接着往下走。通过这种快速处理,快速释放请求的方式,达到同样的配置可以处理更大并发量的目的。

4.1进程管理上的区别

Apache:

默认采用的是一个主进程 多个工作进程 每个工作进程管理一个线程 每

个线程管理一个连接

并发数 = 工作进程数 x 1

Nginx:

一个主进程 多个工作进程 每个工作进程管理多个线程(最大到65535)

并发数 = 工作进程数 x 单进程开启的线程数

淘宝等电商用的web浏览器 Tengine ,相当与Nginx的换皮,通过nginx开源项目针对电商优化的产品

4.2网络IO模型的选择

Apache:select模型

Nginx:epoll模型

select就是一个简单的选择模型(如排队请求网络资源,第一个人阻塞住第二个人

依然要排着)

epoll更智能的网络管理模型(如排队第一个人阻塞住,会先把第二个人网络的 IO

请求提交出来)

4.3进程的阻塞方式的区别

Apache:同步 阻塞型

Nginx:异步 非阻塞型

4.4模块开发方向不同

Apache:安全模块众多

Nginx:高性能模块众多

总结:如果网站并发量不高但是稳定性要求严格,选择Apache(政府网站、

网络服务——Apache & Nginx

5.nginx和apache的差异对比

Apache

Nginx

配置繁琐

配置相对简单

原生支持动态和静态页面

支持静态页面

模块相对安全

高性能模块出产迅速、社区活跃

BUG 相对较少,消耗资源较多

BUG相对较多,节省资源

对加密支持较好

对反向代理支持较好

同步阻塞型应用

异步非阻塞型应用

6.nginx配置文件详解

 二. Nginx详解

1.概述 

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是内存利用率高,并发能力强。

2.工作模式

nginx有两种工作模式:master-worker模式和单进程模式。在master-worker模式下,有一个master进程和至少一个的worker进程,单进程模式顾名思义只有一个进程。这两种模式有各自的特点和适用场景。

2.1master-worker

该模式下,nginx启动成功后,会有一个master进程和至少一个的worker进程。master进程负责处理系统信号,加载配置,管理worker进程(启动,杀死,监控,发送消息/信号等)。worker进程负责处理具体的业务逻辑,也就是说,对外部来说,真正提供服务的是worker进程。生产环境下一般使用这种模式,因为这种模式有以下优点:

1. 稳定性高,只要还有worker进程存活,就能够提供服务,并且一个worker进程挂掉master进程会立即启动一个新的worker进程,保证worker进程数量不变,降低服务中断的概率。

2. 配合linux的cpu亲和性配置,可以充分利用多核cpu的优势,提升性能

3. 处理信号/配置重新加载/升级时可以做到尽可能少或者不中断服务(热重启)

2.2单进程模式

单进程模式下,nginx启动后只有一个进程,nginx的所有工作都由这个进程负责。由于只有一个进程,因此可以很方便地利用gdb等工具进行调试。该模式不支持nginx的平滑升级功能,任何的信号处理都可能造成服务中断,并且由于是单进程,进程挂掉后,在没有外部监控的情况下,无法重启服务。因此,该模式一般只在开发阶段和调试时使用,生产环境下不会使用。(了解)

三.Nginx相关搭建实验

1.yum安装nginx

<注意事项>

1. 注意配置文件中的结尾有;作为结束~!(切记!)

2. 每次实验修改完配置文件后需要热重启nginx才会生效

1.1nginx安装流程

yum -y install wget
mv  /etc/yum.repos.d/CentOS-Media.repo  /etc/yum.repos.d/CentOS-Media.repo.bak
cd  /etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
yum -y install	nginx

1.2主配置文件

vim /etc/nginx/nginx.conf

1.3子配置文件

vim /etc/nginx/conf.d/default.conf	#直接新建,添加下面内容即可
server {
    listen       80;
    server_name  www.hongfuedu.com;

    location / {
        root   /www;
        index  index.html index.htm index.php;
    }

    location ~ \.php$ {
        root           /www;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

2.源码包安装nginx

实验准备:CentOS7.6版本192.168.132.163

[root@localhost ~]# mkdir  /lnmp/
[root@localhost ~]# cd /lnmp/
[root@localhost lnmp]# rz -E	#上传nginx-1.21.3.tar.gz源码包
[root@localhost lnmp]# vim  /etc/shells	#打开文件,在文件末尾添加/sbin/nologin
[root@localhost lnmp]# useradd -r -s /sbin/nologin nginx	#创建nginx用户
[root@localhost lnmp]# yum -y install gcc gcc-c++ cmake3 pcre pcre-devel libxml2 libxml2-devel zlib zlib-devel openssl openssl-devel  autoconf automake bison ncurses ncurses-devel php-mcrypt libmcrypt libmcrypt-devel freetype gd libpng libpng-devel libjpeg zlib curl curl-devel re2c net-snmp-devel libjpeg-devel freetype-devel  #解决依赖
[root@localhost lnmp]# tar -xf nginx-1.21.3.tar.gz 	#解压缩
[root@localhost lnmp]# cd nginx-1.21.3/
[root@localhost nginx-1.21.3]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx  --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module	#执行文件
[root@localhost nginx-1.21.3]# echo $?
[root@localhost nginx-1.21.3]# make && make install		#编译安装
[root@localhost nginx-1.21.3]# echo $?
[root@localhost nginx-1.21.3]# cd  /usr/local/nginx/conf
[root@localhost conf]# vim nginx.conf		#进入配置文件
#将#user  nobody;修改为user  nginx nginx;
#将worker_processes  1;修改为worker_processes  auto;
[root@localhost conf]# vim  /etc/init.d/nginx		#创建命令管理脚本,添加如下内容:
#!/bin/bash
#Author:liu
#chkconfig: 2345 99 33
#description: nginx server control tools

ngxc="/usr/local/nginx/sbin/nginx"
ngxc_fpm="/usr/local/php/sbin/php-fpm"
case "$1" in
    start)
        $ngxc -t &> /dev/null
        if [ $? -eq 0 ];then
                $ngxc
                $ngxc_fpm
                echo "nginx service start success!"
        else
                $ngxc -t
        fi
        ;;
    stop)
        $ngxc  -s  stop
        killall  php-fpm
        echo "nginx service stop success!"
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    reload)
        $ngxc -t &> /dev/null
        if [ $? -eq 0 ];then
               $ngxc  -s  reload
                pkill  -HUP  php-fpm
                echo "reload nginx config success!"
        else
                $ngxc -t
        fi
        ;;
    *)
        echo "please input stop|start|restart|reload."
        exit 1
esac
[root@localhost conf]# chmod  +x  /etc/init.d/nginx 		#添加权限
[root@localhost conf]# service  nginx  start	#测试启动脚本
[root@localhost conf]# service  nginx  restart	#结束进程,重新加载
[root@localhost conf]# service  nginx  reload	#不结束进程,只重新加载
[root@localhost conf]# chkconfig nginx on	#设为开机自启动
[root@localhost conf]# netstat  -antp		#查看发现nginx的80端口开启了
[root@localhost conf]# ln -s /usr/local/nginx/sbin/nginx  /usr/local/sbin
[root@localhost conf]# nginx
[root@localhost conf]# ps  aux | grep nginx		#查看启动了
[root@localhost conf]# nginx  -s  reload		#重启正常

实验1:Nginx的状态统计

实验步骤:

[root@localhost ~]# nginx -s stop		停止服务
[root@localhost ~]# cd /lnmp/nginx-1.21.3/	进入解压后的文件夹
[root@localhost nginx-1.18.0]# make clean	清空缓存
[root@localhost nginx-1.18.0]# yum -y install openssl-devel	安装openssl依赖
[root@localhost nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module	需要什么模块就在执行文件加指向路径后面跟上--with+相应的模块即可
[root@localhost nginx-1.18.0]# cd /usr/local/nginx/conf/
[root@localhost conf]# vim nginx.conf	打开主配置文件

location /status {
            stub_status on;
            access_log  off;
        }
[root@localhost conf]# nginx -t	检查配置文件语法错误无错误,如图:

 

[root@localhost conf]# nginx -s stop		关闭服务
[root@localhost conf]# nginx	启动服务。 直接重启可能有些模块不会重新加载,关闭再启动会重新加载所有模块。

此时状态统计功能开启了,每刷新一次。第三列的数字便会+1,代表的是访问次数,如图:前两列是TCP连接次数,与配置文件中设置的keepalive_timeout=65有关,代表着每65秒会断开TCP连接,所以等到65秒后再刷新页面,会变成2 +2+访问次数,如图

"Active connections"表示当前的活动连接数;

"server accepts handled requests"表示已经处理的连接信息

三个数字依次表示已处理的连接数、成功的TCP握手次数、已处理的请求数

实验2:nginx目录保护

实验步骤:接上一个实验,对状态统计页面的目录进行保护

[root@localhost conf]# vim nginx.conf	#打开主配置文件

auth_basic "Welcome to nginx_status!";
auth_basic_user_file /usr/local/nginx/conf/htpasswd.status;
[root@localhost conf]# yum -y install httpd	安装Apache,需要用Apache服务中的htpasswd命令
[root@localhost conf]# htpasswd -c /usr/local/nginx/conf/htpasswd.status lisi	进行用户密码文件的创建	
[root@localhost conf]# nginx -s reload		重启服务

实验3:基于IP的身份验证

实验步骤:接上一个实验进行

[root@localhost conf]# vim nginx.conf	打开主配置文件

allow 192.168.132.1;		只允许192.168.132.1访问
deny 192.168.132.0/24;		不允许132网段的其他所以ip访问
[root@localhost conf]# nginx -t	检查语法错误
[root@localhost conf]# nginx -s reload		重启服务

实验4:nginx的虚拟主机(基于域名)

实验步骤:接上一个实验继续做

[root@localhost conf]# vim nginx.conf	打开配置文件

[root@localhost conf]# cd ../html/	进入到上级目录的html目录中
[root@localhost html]# mkdir blog  创建指向和绑定域名的网页目录
[root@localhost html]# mkdir bbs	创建指向和绑定域名的网页目录
[root@localhost html]# echo "blog..." >> blog/index.html	
[root@localhost html]# echo "bbs..." >> bbs/index.html
[root@localhost html]# vim /etc/hosts	进入域名解析文件
[root@localhost html]# nginx -t	检查语法错误
[root@localhost html]# nginx -s stop	停止服务
[root@localhost html]# nginx	启动服务

server {
	listen 80;
	server_name blog.kernel.com;
	index index.html index.htm index.php;
	root  html/blog;
	access_log  logs/blog-access.log  main;
}
server {
	listen 80;
	server_name bbs.kernel.com;
	index index.html index.htm index.php;
	root  html/bbs;
	access_log  logs/bbs-access.log  main;
}

实验5:nginx的反向代理

代理和反向代理?

代理:找别人代替你去完成一件你完不成的事(代购),代理的对象是客户端

反向代理:替厂家卖东西的人就叫反向代理(烟酒代理) ,代理的对象是服务器端,

反向代理+负载均衡:比如windows客户端访问Nginx服务器,然后Nginx服务器将请求转发到后台的服务器组内,实现任务均摊的模式。

完全反向代理:所有的来自客户端的请求都由192.168.88.100服务器来处理

 部分反向代理:(动静态分离)来自客户端的.php的网页请求才由192.168.88.100服务器来处理

静态算法:仅考虑算法本身的工作方式,不考虑后台服务器的运行状况,缺点是很可能导致某些低配置服务器压力过大或者某些高配置服务器闲置。

动态算法:详见负载均衡服务(集群阶段)

Nginx:高并发特点,一般用于前台接受客户端请求

Apache:高稳定性特点,一般用于后台处理由Nginx服务请接受并转发过来的来自客户端的请求。

a、在另外一台机器上安装apache,启动并填写测试页面

b、在nginx服务器的配置文件中添加(写在某一个网站的server标签内)

c、重启nginx,并使用客户端访问测试

实验步骤:

实验准备四台虚拟机

1号机:192.168.132.163 Nginx服务器

2号机:192.168.132.164 Apache服务器1

3号机:192.168.132.165 Apache服务器2

4号机:192.168.132.166 2号机和3号机的共享存储服务器

[root@localhost ~]# yum -y install gcc	pcre-devel	zlib-devel安装上传命令和gcc工具和pcre		扩展包及zlib依赖包
[root@localhost ~]# rz -E	上传Nginx源码包
[root@localhost ~]# tar -xvf nginx-1.18.0.tar.gz	解压缩
[root@localhost ~]# cd nginx-1.18.0/
[root@localhost nginx-1.18.0]# useradd -r -s /sbin/nologin nginx	创建一个名叫nginx 的运行用户
[root@localhost nginx-1.18.0]# ./configure --prefix=/usr/local/nginx	执行
[root@localhost nginx-1.18.0]# make && make install	编译并安装
[root@localhost ~]# yum -y install httpd	安装papche服务
[root@localhost ~]# echo "hello-164..." >> /var/www/html/index.html	创建网页目录
[root@localhost ~]# systemctl start httpd	启动服务

[root@localhost ~]# yum -y install httpd	安装papche服务
[root@localhost ~]# echo "hello-165..." >> /var/www/html/index.html	创建网页目录
[root@localhost ~]# systemctl start httpd	启动服务

[root@localhost nginx-1.18.0]# cd /usr/local/nginx/
[root@localhost nginx]# cd conf/
[root@localhost conf]# vim nginx.conf	打开nginx配置文件

 

[root@localhost conf]# ln -s /usr/local/nginx/sbin/nginx  /usr/local/sbin	软连接
[root@localhost conf]# nginx -t
[root@localhost conf]# nginx

实验6:负载调度(负载均衡)

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

upstream 可以将多台服务器声明成一个服务器组(也叫)

proxy 反向代理模块,可以代理一台设备或者是一组服务器,模板如下:

 实验步骤;在实验五的基础上做

[root@localhost conf]# vim nginx.conf	打开主配置文件

 

 

[root@localhost conf]# /usr/local/nginx/sbin/nginx -s reload

实验7:samba服务-网络共享存储(CIFS文件系统)

samba主配置文件:

配置文件模板:

[print$]								#共享名,给客户端提供连接的专用名字
        comment = Printer Drivers		#对共享名的描述
        path = /var/lib/samba/drivers   	#共享目录
        write list = @printadmin root		#可写列表,相当于白名单
        writable = Yes					#是否可写
        browseable = Yes				#是否可见
        force group = @printadmin		
        create mask = 0664
        directory mask = 0775

实验步骤:在实验56的基础上做

实验目的:

[root@axp2 ~]# yum -y install samba
[root@axp2 ~]# cd /etc/samba/
[root@axp2 samba]# mkdir /data	创建一个共享目录
[root@axp2 samba]# vim smb.conf	打开配置文件进行修改
在文件末尾新增添加如下内容:
[hf2106]
        comment = 2106 anxiaopeng
        path = /data
        writable = Yes
        browseable = Yes
[root@axp2 /]# chmod 777 /data/	先给data目录777权限,然后用2号机和3号机测试,获得2号机和三号机的用户	名,然后去掉777权限,利用ACL权限加用户名的方式来使得2号机和3号机可以对data目录拥有w权限
[root@axp2 /]# useradd lisi	创建用户
[root@axp2 /]# pdbedit -a lisi	设置samba密码
[root@axp2 /]# systemctl start smb  启动asmba服务
二号机安装连接命令:[root@localhost ~]# yum -y install samba-client
[root@localhost ~]# smbclient -U lisi //192.168.132.166/hf2106

切记先清空所有机器的防火墙规则!!!登录4号机的samba存储服务,如图:

一般情况下要将samba服务器挂载到三号机和三号机的本地,命令:

永久挂载:/etc/fstab:

[root@localhost ~]# vim /etc/fstab	文件末尾新增一行添加:
//192.168.132.166/hf2106        /var/www/html   cifs    defaults,username=lisi,password=123456  0       0
[root@localhost ~]# df -h 发现还未挂载
[root@localhost ~]# mount -a
[root@localhost ~]# df -h	发现挂载成功
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# touch index.html	
[root@localhost html]# echo "hello world" >> index.html	准备进行测试
[root@localhost ~]# yum -y install samba-client
[root@localhost ~]# smbclient -U lisi //192.168.132.166/hf2106

[root@localhost ~]# vim /etc/fstab	永久挂载,添加:
//192.168.132.166/hf2106        /var/www/html   cifs    defaults,username=lisi,password=123456  0       0
[root@localhost ~]# mount -a
[root@localhost ~]# df -h
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# touch index.html
[root@localhost html]# echo "nihao pengyou" >> index.html	准备进行测试

[root@axp2 /]# cd /data/	进入data目录
[root@axp2 data]# ls		查看有index.html文件
[root@axp2 data]# cat index.html	查看文件内容,发现有如下内容:

实验8:nginx实现https {证书+rewrite}

实验步骤:

实验准备,基于实验四,并在主配置文件中添加反向代理和负载均衡内容,如图:

[root@blog conf]# nginx -t	检查配置文件语法
[root@blog conf]# nginx -s reload	重启

[root@blog conf]# vim nginx.conf	打开主配置文件

[root@blog conf]# mkdir ssl
[root@blog conf]# cd ssl/
[root@blog ssl]# openssl genrsa -out blog.key 1024	生成密钥文件
[root@blog ssl]# openssl req -new -key blog.key -out blog.csr	生成未签字证书
[root@blog ssl]# openssl x509 -req -days 365 -sha256 -in blog.csr -signkey blog.key -out blog.crt生成签字证书
[root@blog ssl]# ls	查看一下有三个文件生成
[root@blog ssl]# cd ..
[root@blog conf]# vim nginx.conf	打开配置文件

 

[root@blog conf]# nginx -t	检查配置文件语法错误
[root@blog conf]# nginx -s reload	重启服务

[root@blog conf]# vim nginx.conf	打开配置文件

[root@blog conf]# nginx -t	检查配置文件语法错误
[root@blog conf]# nginx -s reload	重启服务

喜欢的请来个三连支持一下吧,谢谢谢谢!!!

您的支持是我最大的动力!!!

举报

相关推荐

0 条评论