上午
静态资源
根据开发者保存在项目资源目录中的路径访问静态资源
html
图片
js css
音乐
视频
f12
,开发者工具,网络

1
、
web
基本概念
web
服务器(
web server
):也称
HTTP
服务器(
HTTP server
),主要有
Nginx
、
Apache
、
Tomcat
等。
2
、动态⻚⾯与静态⻚⾯的差别
(
1
)
URL
不同
静态⻚⾯链接⾥没有
“
?
”
动态⻚⾯链接⾥包含
“
?
”
(
2
)后缀不同
(
开发语⾔不同
)
静态⻚⾯⼀般以
.html .htm .xml
为后缀
动态⻚⾯⼀般以
.php .jsp .py
等为后缀
(
3
)内容不同
静态⻚⾯的内容是固定的
动态⻚⾯的内容会因⽤户、浏览器、时间、地点等⽽发⽣变化。
3
、
HTTP
协议
HTTP
协议是超⽂本传输协议的缩写,英⽂是
Hyper Text Transfer Protocol
。它是从
WEB
服务器传
输超⽂本标记语⾔
(HTML)
到本地浏览器的传送协议。
(
1
)
HTTP
原理
HTTP
是⼀个基于
TCP/IP
通信协议来传递数据的协议,传输的数 据类型为
HTML
⽂件,图⽚⽂件,查 询结果等。
HTTP
协议⼀般⽤于
B/S
架构。浏览器作为
HTTP
客户端通过
URL
向
HTTP
服务端即
web
服务器发送所 有请求,web
服务器收到客户端请求后进⾏响应。
(
2
)
HTTP
特点
1
、
http
协议⽀持客户端
/
服务端模式,也是⼀种请求
/
响应模式的协议。
2
、简单快速:客户向服务器请求服务时,只需传送请求⽅法和路径。请求⽅法常⽤的有
GET
、
HEAD
、
POST
。
3
、灵活:
HTTP
允许传输任意类型的数据对象。传输的类型由
Content-Type
加以标记。除开可以
响应字符串之外,还可以上传和下载⼆进制⽂件
4
、⽆连接:限制每次连接只处理⼀个请求。服务器处理完请求,并收到客户的应答后,即断开连
接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不⾜,产⽣了两项记录
http
状态的技 术,⼀个叫做 Cookie,
⼀个叫做
Session
。
5
、⽆状态:⽆状态是指协议对于事务处理没有记忆,后续处理需要前⾯的信息,则必须重传。
4
、
URI
和
URL
的区别
(
1
)
HTTP
使⽤统⼀资源标识符(
Uniform Resource Identifiers, URI
)来传输数据和建⽴连接。
URI
:
Uniform Resource Identifier
统⼀资源标识符
URL
:
Uniform Resource Location
统⼀资源定位符
(
2
)
URI
是⽤来标识⼀个具体的资源的,我们可以通过
URI
知道⼀ 个资源是什么,使⽤它就能够唯 ⼀地标记互联⽹上资源。
(
3
)
URL
则是⽤来定位具体的资源的,标识了⼀个具体的资源位置。互联⽹上的每个⽂件都有⼀个
唯⼀的。
(
4
)
URL
,也就是我们俗称的⽹址,它实际上是
URI
的⼀个⼦集。
(
5
)
URI
不仅包括
URL
,还包括
URN
(统⼀资源名称),它们之间的关系如下:

5
、
HTTP
报⽂组成
(
1
)客户端发出请求:
GET /index.php HTTP/1.5/ Host:zgod.cn
(
2
)客户端浏览器发送出来的请求格式:
GET
:这个部分只声明了请求⽅式,除了
get
⽅式可能还有
post
等⽅式。
GET
表示请求,
POST
表
示邮寄。
/index.php
:这⾥是⼀个
URL
,表示了我们要访问的资源是哪 个。
HTTP/1.5/
:这⾥表示的是客户端浏览器使⽤的协议版本是
1.5
。
Host:zgod.cn
:这是请求是交给主机
zgod.cn
的。
6
、
HTTP
状态码
2xx
:成功,
200
成功、
201
已经创建
3xx
:重定向,
304
未修改
4xx
:请求错误,
404
未找到⽂件、
408
请求超时
5xx
:服务器错,
500
服务器内部错误、
502
⽹关错误
7
、
HTTP
报⽂格式
⼀个完整的
http
访问包含请求(
request
)和响应(
response
)
(
1
)请求报⽂
客户端发出的报⽂:包含了请求⾏,请求头部字段,通⽤头部字段,实体头部字段及报⽂主体。
请求⾏:客户端使⽤的请求⽅法,⽐如
GET
,
POST
等等。同时也包含了
URL
信息和
HTTP
的版本号。
请求头部字段:它包含了请求的符加信息,⽐如客户端的信息, 响应的优先级等等。
通⽤头部字段:是请求报⽂和响应报⽂都会使⽤的报⽂内容。
实体头部字段:跟实体有关的资源信息,⽐如请求的实体更新时间等。
报⽂主体:⼀般来说,请求报⽂在使⽤
GET
⽅法时,没有报⽂主体,使⽤
POTS
⽅法时,就会有。

8
、常⻅请求⽅法(客户端向服务器)
1
、
GET
: 去向服务器获取资源。即请求指定的⻚⾯信息,并返回实体主体。

2
、
POST
:⽤来传输请求的实体主体。向指定资源提交数据进⾏处理请求。数据被包含在请求体
中。
POST
请求可能会导致新的资源建⽴或已有资源修改。

3
、
PUT
:从客户端向服务器传送的数据取代指定的⽂档内容。
4
、
HEAD
:从服务器端获取报⽂⾸部信息,确定客户端输⼊的
URL
有效性和资源的更新⽇期。类似
于
get
请求,只不过返回的响应没有具体内容,只⽤于获取头部。
5
、
OPTIONS
:⽤来询问服务器⽀持哪些⽅法。即获取服务器⽀持的请求⽅法。
6
、
DELETE
:⽤来删除⽂件的。请求服务器删除指定的⻚⾯。
9
、
HTTPS
协议
HTTP
⼀般是明⽂传输,很容易被攻击者窃取重要信息,鉴于 此,
HTTPS
应运⽽⽣。
HTTPS
的全称为 (
Hyper Text Transfer Protocolover Secure Socket Layer
),
HTTPS
和
HTTP
有很⼤的不同在于
HTTPS
是以安全为⽬标的
HTTP
通道,在
HTTP
的基础上通过传输加密和身份认证保
证了传输过程的安全性。
HTTPS
在
HTTP
的基础上增加了
SSL
层,也就是说
HTTPS=HTTP+SSL
。
HTTP
使⽤明⽂传播,有三⼤⻛险 :
(
1
)窃听⻛险(
eavesdropping
):第三⽅可以获知通信内容。
(
2
)篡改⻛险(
tampering
):第三⽅可以修改通信内容。
(
3
)冒充⻛险(
pretending
):第三⽅可以冒充他⼈身份参与通信。
SSL/TLS
协议是为了解决这三⼤⻛险⽽设计的,希望达到:
(
1
)所有信息都是加密传播,第三⽅⽆法窃听。
(
2
)具有校验机制,⼀旦被篡改,通信双⽅会⽴刻发现。
(
3
)配备身份证书,防⽌⽌身份被冒充。
10
、
HTTPS
安全通信的四⼤原则
(
1
)机密性
就是对数据的加密,在传输数据的过程当中,如果被⼈劫持了数据,那么这个加密的数据对⽅不能
轻易获得。
(
2
)完整性
是指数据在发送到接收的过程当中没有被篡改,从⽽接收到的数据 是⼀个完整的数据内容。
(
3
)身份认证
数据传输的过程当中对于身份的验证,确认对⽅是传送数据过来的⼈。可以解决冒充这样的⻛险。
(
4
)不可否认性
不能否认已经发⽣的⾏为。⽐如刚才举例双⽅借钱需要有借据并且 签名按⼿印,如此⼀来就不能抵 赖。
11
、
Apache
概念
最早的
web
服务程序,基于
http
协议提供⽹⻚浏览服务。
工作模式:
(
1
)
Prefork
:使⽤进程处理请求,在该模式中⽐较消耗内存,但稳定性⾼,如某个进程出现问
题,不会影响其他请求。
(
2
)
Worker
:属于多进程模式,每个进程⽣成多个进程
;
在该模式下 消耗的资源⽐较⼩,适合⾼并 发请求,但稳定性没有 Prefork
模式稳定。
‘
(
3
)
Event
:该模式与
Worker
模式较为相似,不同之处在于在该模 式下可以解决
keepalive
⻓连
接时占⽤线程资源导致浪费的问题。
(
4
)
keep-alive
⻓连接:
TCP
连接在发送后将仍然保持打开状态, 于是,浏览器可以继续通过相同
的连接发送请求。保持连接节省了为 每个请求建⽴新连接所需的时间,还节约了带宽。实现⻓连接要客
户 端和服务端都⽀持⻓连接。
12
、搭建
apache
服务器
1
、安装启动
httpd
服务
[root@web ~]# yum -y install httpd
[root@web ~]# systemctl start httpd
2
、查看安装情况以及安装的资源文件
[root@web ~]# rpm -qa | grep httpd
[root@web ~]# rpm -ql httpd
[root@web ~]# ls /etc/httpd/
[root@web ~]# vim /etc/httpd/conf/httpd.conf
[root@web ~]# ls /var/www/html/
3
、查看端口
[root@web ~]# netstat -lnput | grep http
4
、设置防火墙
[root@web ~]# systemctl status firewalld //
检查防火墙状态
[root@web ~]# systemctl start firewalld //
开启防火墙
不能直接禁用防火墙,可以单独打开端口
/
服务
[root@web ~]# firewall-cmd --list-ports //
查看防火墙打开的端口列表
[root@web ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent //
打开防火墙的
80
端口
[root@web ~]# firewall-cmd --zone=public --add-service=http --permanent //
设置防
⽕
墙放
⾏
apache
[root@web ~]# firewall-cmd --list-all //
查看当前区域下防
⽕
墙所有规则
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
打开服务不会马上生效,需要重启或者重载服务信息
[root@web ~]# firewall-cmd --reload //
重载防
⽕
墙规则
[root@web ~]# firewall-cmd --list-all //
查看当前区域下防
⽕
墙所有规则
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client http
ports: 80/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
5
、在资源目录中添加
index.html
,
html
服务会自动找到
index
文件
[root@web ~]# vim /var/www/html/index.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>
正方形
</title>
<style>
div{
background-color:red;
width:120px;
height:120px;
}
</style>
</head>
<body>
<div>
正方形
</div>
<img src="1.jpg"
</body>
</html>
下午
1
、
nginx
概念
(
1
)
Nginx
简介
Nginx
(
engine X
):开源、轻量级、⾼性能的
HTTP
和反向代 理服务器,可以代理
HTTP
、
IMAP/POP3/SMTP
和
TCP/UDP
协议。
基本特点:占⽤内存少、并发能⼒强,采⽤
C
语⾔编写,在性能⽅⾯有⼀定保证。
Nginx
可以⽤来做负载均衡及反向代理使⽤,⽬前使⽤最多的是负载均衡。
与
Nginx
同类的
Web
服务有
Apache
、
Tomcat
等。
官⽅⽹站:
http://nginx.org/
(
2
)
Nginx
服务器特点
1
、模块化设计
Nginx
将模块分为核⼼模块、
HTTP
模块、事件模块和邮件模块四类。每个模块都有特定的职责,从 ⽽实现了整个 Web
服务器 的功能。
2
、低内存消耗,⾼并发
Nginx
使⽤
epoll and kqueue
作为开发⼯具,能够⽀持最⼤
50000
个并发连接数的响应;不论是系 统资源开销还是 CPU
使⽤效率都很优秀。
3
、事件驱动
nginx
采⽤异步⽅式处理请求。
同步:指在发送⽅发出消息后,需要等待接收到接收⽅发回的响应,或者通过回调函数来接收到对
⽅响应信息。
异步:指在发送⽅发出请求后,接收⽅不需要返回消息或者不等 待返回消息,直接提供响应请求机
制。
4
、⾼可靠性,
master
与
worker
架构
⼀个主进程和多个⼯作进程。
⼯作进程是单线程的,且不需要特殊授权即可运⾏;
master
进程:主要⽤来监控
worker
进程⼯作状态进⾏相应重启、停⽌等操作。
worker
进程:进⾏具体提供服务,接受请求和处理请求。
5
、⽀持热更新配置、⽇志⽂件滚动、平滑升级
/usr/local/nginx/sbin/nginx -s reload
html
⽬录中的⽂件发上修改之后,不需要
nginx
服务
可向
master
发送
USR1
、
QUIT
等信号,⽆需强制停⽌服务即 可完成热更新。
向
master
发送的
USR1
,可实现⽇志⽂件滚动。
向
master
发送的
USR2
,可实现平滑升级。
6
、丰富的扩展模块
可在编译安装
nginx
时指定拓展模块,例如:
nginx-sticky-module
模块(基于
cookie
来进⾏负载
转发)。
2
、
Nginx
和
Apache
区别
(
1
)架构
Apache
采⽤多进程架构,每个请求都由⼀个独⽴的进程处理; ⽽
Nginx
采⽤异步事件驱动的架构,
可以处理更多的并发连接。
(
2
)性能
由于
Nginx
的架构设计,它可以处理更多的并发连接,⽽且在⾼负载情况下表现更加稳定和可靠。
因此,
Nginx
通常被认为是⽐
Apache
更⾼效的
Web
服务器。
(
3
)配置
Apache
的配置⽂件⽐较复杂,需要⼀定的学习和经验才能正确配置;⽽
Nginx
的配置⽂件⽐较简
洁和可读性强,更容易理解和配置。
(
4
)功能
apache
有许多模块可以扩展其功能,例如
mod_rewrite
⽤于
URL
重写,
mod_ssl
⽤于
SSL
加密
等;⽽
nginx
的功能⽐较简单,但是可以通过第三⽅模块扩展其功能。
3
、
Nginx
基本功能
(
1
)静态资源
Web
服务器
nginx
可实现动静资源分离
动态资源:需要程序处理或者从数据库中读数据,能根据不同的 条件在⻚⾯显示不同的数据。
静态资源:前端的固定⻚⾯,这⾥⾯包含
HTML
、
CSS
、
JS
、图 ⽚、⾳乐等等,不需要查数据库也不需要程序处理,直接就能够显示的⻚⾯。
动静分离:当使⽤
nginx
处理静态⻚⾯时,可将⽤户的动态请求 转发给后端的
tomcat
或
PHP
处理
动态⻚⾯。
前后端,前端就是完全的静态资源。
(
2
)基于域名
/IP/
端⼝的虚拟主机
虚拟主机:在
Web
服务⾥就是⼀个独⽴的⽹站站点,这个站点对 应独⽴的域名
(
也可能是
IP
或端⼝
)
,具有独⽴的程序及资源⽬录,可以独⽴地对外提供服务供⽤户访问。
⼀个
nginx
主进程,指定⼀个配置⽂件,配置⽂件内有多个虚拟主机。如果不⽤虚拟机,⼀个域名
就要对应⼀个服务器,浪费资源。
(
3
)⻚⾯缓存
Nginx
不仅仅是⼀个
Web
服务器,它还可以作为⼀个缓存服务 器使⽤。
通过
Nginx
缓存,可以对⼀些静态资源或者数据更新频率较低 的后端服务做缓存,降低静态资源或 后端服务的响应时间,同时也会降低后端的负载。 ⽐如对⼀些图⽚,css
或
js
做⼀些缓存,那么在每次刷
新浏览器的时候,就不会重新请求了,⽽是从缓存⾥⾯读取。这样就可以减轻服务器的压⼒。
(
7
)⽀持
gzip
、
expires
当运维⼈员将压缩包放到
html
中,会⾃动部署 nginx ⽀持资源压缩和缓存控制。
4
、衡量⽹站⼤⼩和处理能⼒的指标
常⽤的⽹站性能测试指标有:吞吐量、并发数、响应时间、性能计算等。
⼀个⽹站优化的⽬的即是,最⼤限度的利⽤好服务器硬件资源提升资源利⽤率,减少⽤户请求的响
应时间,提⾼系统吞吐量,提⾼系统并发数。
Thread.sleep(1500)
1
、并发数
12306
并发数是指系统同时能处理的请求数量,这个也是反映了系统的负载能⼒。
2
、响应时间
响应时间是指发出⼀个请求时,从开始到最后收到该请求的响应数据时,所花费的总体时间。响应
时间是⼀个系统最重要的指标之⼀,该数值的⼤⼩直接反映了系统的快慢。作为运维⼈员,要确保⽹站响应时间在客户可接受的范围内,⼀般在 3~10
秒。
3
、吞吐量
吞吐量是指单位时间内系统能处理的请求数量,体现系统处理请 求的能⼒,这是⽬前最常⽤的性能测试指标。
QPS
(每秒查询数)、
TPS
(每秒事务数)是吞吐量的常⽤量化 指标。 还有
HPS
(每秒
HTTP
请求
数)。
QPS
(
TPS
)、并发数、响应时间三者的关系为:
QPS
(
TPS
)
=
并发数
÷
响应时间。
4
、性能计数器
性能计数器是描述服务器或操作系统性能的⼀些数据指标,如使⽤内存数、进程时间,在性能测试
中发挥着
“
监控和分析
”
的作⽤,尤其是在分析系统可扩展性、进⾏新能瓶颈定位时有着⾮常关键的作⽤。
Linux
中可以使⽤
top
或者
uptime
命令看到当前系统的负载及 资源利⽤率情况。
资源利⽤率
:
指系统各种资源的使⽤情况,如
cpu
占⽤率为
68%
,内存占⽤率为
55%
,⼀般使⽤
“
资源
实际使⽤
/
总的资源可 ⽤量
”
形成资源利⽤率。
5
、
nginx
安装
1
)安装
pcre
⾸先安装
pcre
。此软件是为了⽀持
rewrite
(重写、复写)功能 ⽽存在的。
rewrite
是实现
url
重定向的重要命令,它会根据正则 表达式来匹配内容,从⽽跳转到⽬标上⾯去。
2
)安装
OpenSSL
当没有使⽤
ssl
证书对服务器数据进⾏加密认证时,⽤户的数据 将会以明⽂的形式进⾏传输,⽽此时,⽤户的数据可以被⼀些抓 包⼯具获取,就容易造成⽤户的信息泄露。 所以为了改善这种情况,作为运维⼈员需要去为⽹站配置 ssl 证 书,实现
https
协议的访问。
[root@sla ~]# wget https://nginx.org/download/nginx-1.27.0.tar.gz //
下载最新
版本的
nginx
[root@sla ~]# yum -y install gcc gcc-c++ //gcc
用于编译多种编程语言的编译器
gcc
c++
专门用于编译
C++
程序的
gcc
组件
[root@sla ~]# yum -y install make //make
用于自动化软件构建过程
[root@sla ~]# yum -y install openssl-devel //
安装
“openssl-devel”
包可以获得
OpenSSL
库的头文件和静态库文件
[root@sla ~]# yum -y install pcre-devel //
安装
pcre-devel
包可以让开发者在编写
C
或
C++
程序时能够使用
PCRE
库来处理正则表达式
[root@sla ~]# tar -zxvf nginx-1.27.0.tar.gz
[root@sla ~]# cd nginx-1.27.0
[root@sla nginx-1.27.0]# ./configure --prefix=/usr/local/nginx --user=nginx --
group=nginx --with-http_ssl_module --with-http_stub_status_module --with
http_realip_module --with-stream
configure
,编译安装前的预配置。
--prefix=/usr/local/nginx
:指定软件的安装路径,注意不是安装包⽬录,⽽是软件要安装在哪。
--user=nginx
:程序⽤户为
nginx
。
--group=nginx
:组为
nginx
。
--with-http_ssl_module
:提供
HTTPS
⽀持,
ssl
证书模块。
--with-http_stub_status_module
:获取
nginx
⼯作状态模块。
--with-http_realip_module
:获取真实客户端
IP
。
--with-stream
:启⽤
TCP/UDP
代理模块。
[root@sla nginx-1.27.0]# make && make install
[root@sla nginx-1.27.0]# useradd -s /bin/nologin -M nginx //-M
:表示不创建用
户的家目录。
[root@sla nginx-1.27.0]# cd /usr/local/nginx/
[root@sla nginx]# cp -r conf/ conf.bak //
备份配置文件的目录
[root@sla nginx]# ./sbin/nginx //
启动
nginx
服务
[root@sla nginx]# netstat -lntup | grep nginx //
查看
nginx
端口
[root@sla nginx]# firewall-cmd --zone=public --add-port=80/tcp --permanent
//
配置防火墙打开
80
端口
[root@sla nginx]# firewall-cmd --reload //
重启服务
[root@sla nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/bin/ //
将软件
⽬
录
下的
nginx
可执
⾏
程序软链接到
/usr/sbin
[root@sla nginx]# nginx -s reload //
热重启,仅重载
nginx
配置
⽂
件
之所以指令能在命令行使用,是因为在
$PATH
目录中能找到这个可执行文件或者是这个可执行文件的链接文件
6
、
nginx
目录结构介绍
[root@YH2 nginx-1.22.1]# cd /usr/local/nginx/ //
切换到
nginx
软件
⽬
录下
[root@YH2 nginx]# ls
conf html logs sbin #nginx
软件构成的
⽬
录
#conf
:存放
nginx
配置
⽂
件的
⽬
录
#html
:存放资源
⽂
件也就是
⽹
站
⾸⻚
(站点根
⽬
录)的
⽬
录
#logs
:存放
nginx
⽇
志的
⽬
录
#sbin
:存放
nginx
可执
⾏
程序的
⽬
录
[root@YH2 nginx]# ls ./conf //nginx
所有配置
⽂
件
fastcgi.conf nginx.conf
fastcgi.conf.default nginx.conf.default
fastcgi_params scgi_params
fastcgi_params.default scgi_params.default
koi-utf uwsgi_params
koi-win uwsgi_params.default
mime.types win-utf
mime.types.default
#fastcgi.conf
:
fastcgi
相关参数配置
⽂
件。
#fastcgi.conf.default
:
fastcgi.conf
的原始备份
⽂
件。
#fastcgi_params
:
fastcgi
的参数
⽂
件。
#nginx.conf
:
nginx
默认主配置
⽂
件。
[root@YH2 nginx]# ls ./html/ //
⽹
站根
⽬
录
50x.html index.html //
⾸⻚
索引
⽂
件。
#50x.html
:错误
⾸⻚
#index.html
:
⽹
站
⾸⻚
[root@YH2 nginx]# ls ./sbin
nginx //nginx
可执
⾏
程序
7
、
nginx
配置文件介绍
1
、
nginx
主配置⽂件
nginx.conf
为
nginx
的主配置⽂件,编译安装的配置⽂件在之前预配置时指定的软件⽬录下,⼀般
为
/usr/local/nginx/conf/nginx.conf
;
yum
安装的
nginx
,主配置 ⽂件位于
/etc/nginx/nginx.conf
。
nginx.conf
配置⽂件由指令控制的模
块组成。
指令分为简单指令和块指令,⼀个简单指令由名称和参数组成,空格分隔,分号结尾,如:
listen
80
;。
块指令与简单指令相同的结构,但不是以分号结尾,⽽是以⼤括 号包围的组附加指令结束,如:
server { }
。
2
、
nginx
块指令
全局块:配置
nginx
全局的指令
events
块:配置
nginx
与⽤户连接的相关指令,如:
events { }
。
http
块:提供
HTTP
服务,如:
http { }
。
server
块:配置虚拟主机,⼀个
http
可以有多个
server
,如:
server { }
。
location
块:匹配
URL
后做什么动作或者跳转到⽹⻚的哪⾥, 如:
location { }
。
[root@YH2 nginx]# vim /usr/local/nginx/conf/nginx.conf //nginx
主配置
⽂
件
1
2 #user nobody; //
配置运
⾏
nginx
的
⽤
户和组,(全局块)
3 worker_processes 1; //
设置
worker
的进程数量
4
5 #error_log logs/error.log; //
错误
⽇
志的路径信息
6 #error_log logs/error.log notice; //notice
等级的错误
⽇
志路径信息(等级可修改
或添加)
7 #error_log logs/error.log info; //info
等级的错误
⽇
志路径信息(等级可添加或修
改)
8
9 #pid logs/nginx.pid; //pid
的
⽂
件路径
10
11
12 events { //events
块
13 worker_connections 1024; //
每个进程最多能处理多少个连接
14 }
15
16
17 http { //http
块,设定
http
服务器,利
⽤
它的反向代理功能提供负载均衡
⽀
持
18 include mime.types; //
指定
⽂
件拓展名和
⽂
件类型映射表
19 default_type application/octet-stream; //
指定
⽂
件类型
20
21 #log_format main '$remote_addr - $remote_user [$time_local] "$request"
'
22 # '$status $body_bytes_sent "$http_referer" '
23 # '"$http_user_agent" "$http_x_forwarded_for"';
24
//
上
⾯
注释的三
⾏
为
nginx
程序内部变量
25 #access_log logs/access.log main; //
设定访问
⽇
志的路径及格式
26
27 sendfile on; //
指定
nginx
是否调
⽤
sendfile
函数来输出
⽂
件,对于普通应
⽤
必须设定为
no
28 #tcp_nopush on; //
放置
⽹
络阻塞
29
30 #keepalive_timeout 0; //
连接超过的时间设置
31 keepalive_timeout 65;
32
33 #gzip on; //
开启
gzip
压缩
34
35 server { // server
块,配置各种虚拟主机
36 listen 80; //
设置监听端
⼝
37 server_name localhost; //
配置的域名信息,
⼀
个
server
可以对应
⼀
个域名信
息
38
39 #charset koi8-r; //
字符集,
utf-8
为中
⽂
字符集
40
41 #access_log logs/host.access.log main; //
设定本虚拟主机的访问
⽇
志和
⽇
志类型
42
43 location / { // location
块,代表
url
的跳转,
“/”
后
⾯
写
⼊
的内容代表我们
在浏览器地址栏输
⼊
的域名或
IP
地址的后续访问路径
44 root html; //
服务器的默认
⽹
站根
⽬
录位置
45 index index.html index.htm; //
⾸⻚
索引
⽂
件名称
46 }
48 #error_page 404 /404.html; //
错误提示
⻚⾯
49
50 # redirect server error pages to the static p age /50x.html
51 #
52 error_page 500 502 503 504 /50x.html; //
错误提示
⻚⾯
53 location = /50x.html {
54 root html;
55 } //
每个花括号都会与前
⾯
的对应
......
省略部分注释内容
.......
79 } //
这个花括号对应的是
server
的
...........................................................
117 } //
这个花括号对应的是
http
的
“{”
8
、以
systemctl
控制
nginx
脚本启动
nginx
[root@sla ~]# vim nginx.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx &> /dev/null
if [ $? -ne 0 ];then
echo "nginx
正在执行,或者
80
端口被占用
"
fi
[root@sla ~]# sh nginx.sh
配置
systemctl
控制
nginx
[root@sla ~]# ls /usr/lib/systemd/system
[root@sla ~]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=Flase
[Install]
WantedBy=multi-user.target
[root@sla ~]# systemctl daemon-reload //
重载
systemctl
的配置
⽂
件,以便
nginx.service
⽣
效
[root@sla ~]# reboot
[root@sla ~]# systemctl stop nginx //
停用成功
注意:如果直接使⽤
nginx
命令对程序进⾏控制,那么不可以再⽤
systemctl
服务控制命令对
nginx
进⾏后续操作。
⽐如:我现在使⽤了
nginx
命令直接启动了
nginx
程序,如果此时我对
nginx
的主配置⽂件做出了
修改想要重新载⼊主配置⽂件,那么不能使⽤
systemctl reload nginx.service
重载
nginx
配置,或
systemctl stop nginx.service
停⽌
nginx
程序,只能使⽤
nginx -s reload
重载配置,或
nginx -s stop停⽌服务。
9
、监控模块的应用
添加监控模块(修改配置文件)
[root@sla nginx]# vim /usr/local/nginx/conf/nginx.conf //
在
location
模块下面添
加新模块
status
location / {
root html;
index index.html index.htm;
}
location /status {
stub_status on;
access_log off;
}
[root@sla nginx]# systemctl restart nginx

