欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

《nginx从入门到实践》学习笔记2

程序员文章站 2022-07-13 08:35:08
...

2-1

中间件是什么?

NGINX是一个开源且高性能,可靠的HTTP中间件,代理服务。

2-2

常见的HTTP服务:HTTPD,IIS,GWS

2-3/4/5/6

为什么选择nginx?

  1. IO多路复用epoll:(多个描述符的I/O一个线程里并发交替的完成),实现并发和吞吐《nginx从入门到实践》学习笔记2
  2. 轻量级:功能模块少(出于性能考虑,源代码只保留核心代码),代码模块化(易读,可以二次改进,比如阿里的tenginx)
  3. CPU亲和:一个worker进程在一个CPU上进行
  4. sendfile:静态文件不需要过多的用户空间逻辑处理,可以直接内核空间进行传输。

2-7

http://nginx.org下载安装包

2-8

安装目录的讲解

|-- client_body_temp
|-- conf                                  #这是Nginx所有配置文件的目录,极其重要
|   |-- fastcgi.conf                    #fastcgi相关参数的配置文件
|   |-- fastcgi.conf.default                 #fastcgi.conf的原始备份
|   |-- fastcgi_params                   #fastcgi的参数文件
|   |-- fastcgi_params.default
|   |-- koi-utf                                # 编码转换映射转化文件(很少用到)
|   |-- koi-win                                #同上
|   |-- mime.types                      #媒体类型,
|   |-- mime.types.default
|   |-- nginx.conf                      #这是Nginx默认的主配置文件
|   |-- nginx.conf.default
|   |-- scgi_params                     #scgi相关参数文件,一般用不到
|   |-- scgi_params.default
|   |-- uwsgi_params                       #uwsgi相关参数文件,一般用不到
|   |-- uwsgi_params.default
|   |-- win-utf                                # 编码转换映射转化文件(很少用到)
|-- fastcgi_temp                       #fastcgi临时数据目录
|-- html                       #这是编译安装时Nginx的默认站点目录,类似
                    Apache的默认站点htdocs目录
|   |--50x.html     #     错误页面优雅替代显示文件,例如:出现502错误时会调用此页面
         #     error_page   500502503504  /50x.html;
|   |-- index.html   #     默认的首页文件,首页文件名字是在nginx.conf中事先定义好的。
|-- logs          #这是Nginx默认的日志路径,包括错误日志及访问日志
|   |-- access.log      #     这是Nginx的默认访问日志文件,使用tail -f access.log,可以实时观看网站用户访问情况信息
|   |-- error.log      #     这是Nginx的错误日志文件,如果Nginx出现启动故障等问题,一定要看看这个错误日志
|   |-- nginx.pid      #     Nginx的pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
|-- proxy_temp       #临时目录
|-- sbin      #这是Nginx命令的目录,如Nginx的启动命令nginx
|   |-- nginx      #Nginx的启动命令nginx
|-- scgi_temp      #临时目录
|-- uwsgi_temp      #临时目录

2-9

编译配置参数的讲解

            nginx -V :会出现如下信息

《nginx从入门到实践》学习笔记2

-prefix=/etc/nginx 
--sbin-path=/usr/sbin/nginx 
--modules-path=/usr/lib64/nginx/modules 
--conf-path=/etc/nginx/nginx.conf 
--error-log-path=/var/log/nginx/error.log                                                             安装目录或者路径
--http-log-path=/var/log/nginx/access.log 
--pid-path=/var/run/nginx.pid

--lock-path=/var/run/nginx.lock

------------------------------------------------------------------------------------------------------------------------------

--http-client-body-temp-path=/var/cache/nginx/client_temp 
--http-proxy-temp-path=/var/cache/nginx/proxy_temp 
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp                            执行对应模块时,Nginx所保留的临时性文件
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp 
--http-scgi-temp-path=/var/cache/nginx/scgi_temp
------------------------------------------------------------------------------------------------------------------------------

--user=nginx 

--group=nginx                                                                                             设定Nginx的进程启动的用户和组用户

------------------------------------------------------------------------------------------------------------------------------

--with-cc-opt                                                                                                C语言编译
------------------------------------------------------------------------------------------------------------------------------

--with-ld-opt=                                                                                                设置附加的参数,链接系统库
 

2-10

默认配置基本语法

参考nginx配置文件nginx.conf超详细讲解

查看CPU核数:cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

子配置文件:

《nginx从入门到实践》学习笔记2

《nginx从入门到实践》学习笔记2

从上到下依次:

                列                                                                                           作用 

    listen       80;                                                                                监听的端口
    server_name  localhost;                                                                 用域名方式访问的地址

------------------------------------------------------------------------------------------------------------------------------

location / {                                                                                    一个server里可以有多个location,当这是/的时候,
        root   /usr/share/nginx/html;                                                root是存放首页的路径
        index  index.html index.htm;                                                访问的页面,访问index.html
    }
------------------------------------------------------------------------------------------------------------------------------

error_page   500 502 503 504 404  /50x.html;                             当访问错误的时候,会显示的页面   
    location = /50x.html {                                                                
        root   /usr/share/nginx/html;                                                 root是存放页面的路径
    }

2-11

默认配置和默认站点启动

2-12

HTTP 请求

《nginx从入门到实践》学习笔记2

安装curl:

yum install curl 

 curl -v www.baidu.com 

《nginx从入门到实践》学习笔记2

2-13

日志:

《nginx从入门到实践》学习笔记2

access log 记录用户,页面以及用户浏览器,ip和其他的访问信息

85.14.245.124 - - [15/May/2019:12:14:02 +0000] "\x03\x00\x00/*\xE0\x00\x00\x00\x00\x0
0Cookie: mstshash=Administr" 400 157 "-" "-"
104.152.52.68 - - [15/May/2019:12:28:28 +0000] "GET / HTTP/1.0" 200 612 "-" "-"
187.11.247.100 - - [15/May/2019:15:19:10 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla
/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.7 (KHTML, like Gecko) Vers
ion/9.1.2 Safari/601.7.7"
193.188.22.116 - - [15/May/2019:15:29:09 +0000] "\x03\x00\x00/*\xE0\x00\x00\x00\x00\x
00Cookie: mstshash=Administr" 400 157 "-" "-"

error log 记录服务器错误日志

2019/05/15 20:26:45 [error] 102452#0: *22 open() "/usr/local/nginx/html/cache/global/
img/gs.gif" failed (2: No such file or directory), client: 80.82.70.187, server: loca
lhost, request: "GET http://www.baidu.com/cache/global/img/gs.gif HTTP/1.1", host: "w
ww.baidu.com"
2019/05/15 21:29:41 [error] 102452#0: *24 open() "/usr/local/nginx/html/robots.txt" f
ailed (2: No such file or directory), client: 124.43.17.15, server: localhost, reques
t: "GET /robots.txt HTTP/1.1", host: "42.159.195.188"
2019/05/15 21:29:41 [error] 102452#0: *24 open() "/usr/local/nginx/html/Appbcc39f2a.p
hp" failed (2: No such file or directory), client: 124.43.17.15, server: localhost, r
equest: "POST /Appbcc39f2a.php HTTP/1.1", host: "42.159.195.188"

2-14

vim nginx.conf

《nginx从入门到实践》学习笔记2access日志格式配置:

 log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'
                       '$upstream_addr $upstream_response_time $request_time ';
    access_log  logs/access.log  main;

#配置access log日志的存储位置及文件,注意:access.log文件是可以按日期进行分割的,方便查看及处理

access_log  /usr/local/nginx/log/access.log  main;

相关说明解释
 1.$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;
 2.$remote_user :用来记录客户端用户名称;
 3.$time_local : 用来记录访问时间与时区;
 4.$request : 用来记录请求的url与http协议;
 5.$status : 用来记录请求状态;成功是200,
 6.$body_bytes_s ent :记录发送给客户端文件主体内容大小;
 7.$http_referer :用来记录从那个页面链接访问过来的;
 8.$http_user_agent :记录客户端浏览器的相关信息;

2-15

模块讲解:

官方模块

第三方模块

《nginx从入门到实践》学习笔记2

2-16

sub_status:NGINX的客户端状态

《nginx从入门到实践》学习笔记2