装潢公司网站源码php浙江制做网站的公司
 第四周 
 
 上午  
 
 静态资源 根据开发者保存在项目资源目录中的路径访问静态资源 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 
  