开发者学堂课程【Linux Web 服务器 Nginx 搭建与配置:nginx 企业应用配置-2】学习笔记,与课程紧密联系,让用户快速学习知识.
课程地址:https://developer.aliyun.com/learning/course/579/detail/7990
nginx 企业应用配置-2
目录内容介绍:
一、ngx_hrrp_core_module
二、HTTP 请求报文
一、ngx_hrrp_core_module
1.root /vhosts/www/htdocs
root /vhosts/www/htdocs
http://www.magedu.com/index.html--> --->/vhosts/www/htdocs/index.htmlserver {
sever{
root /vhosts/www/htdocs/
location /admin/{
root/webapps/app1/data/
}
}
http://www.magedu.com/admin/index.html
--> /webapps/app1/data/admin/index.html
默认情况下如若不自行定义location,则意味着访问时将会以定义的root根目录中去寻找。也可以针对特定的ul实施特定的磁盘路径。
2.alias path
路径别名,与root截然不同。文档映射的另一种机制,仅能用于location上下文。
示例:
http://www.magedu.com/bbs/index.php
locat
ion /
bbs
/ {
alias
/web/forum/;
当访问此网站的上述bbs文件夹时,得到的数据应该是web/forum文件夹下的内容。
} --> /web/forum/index.html
location /bbs/ {
root/web/forum/;
} --> /web/forum/
bbs
/index.html
将同样的代码改为root,同样访问此网站的上述bbs文件夹时,得到的数据应该是web/forum文件夹下的bbs。
实际操作:
root
r
oot/data/sitea;
location/news {
root /app/sitea/ ;
}
location = /index.html {
root/www/sitea/;
}
location /bbs{
alias/
date/fo
r
um
;
}
}
“a.com.conf” 14L, 197c written
[
proot@centos7 vhosts]#
[root@centos7 vhosts]#mkdir /data/forum
[root@centos7 vhosts]#echo/data/forum index.html data/forum/index.htm1
[root@centos7 vhosts]#mkdir /data/forum
/www/sitea/index.htm1
[root@centos7 ~ ]#cur1 http://www.a.com/
[www/sitea/index .htm]
[root@centos7 ~] #cur1
http://www.a.com
www/sitea/index.html
[root@centos7 ~] #cur 1
http://www.a.com/test.html
<
html>
<head> <title>404 Not Found</tit1e> </head>
<body bgco lor= "white">
<center><h1>404 Not Found</h1> </center>
<hr> <center>nginx</center>
</body>
/htm1>
[root@centos7 ~ ]#cur1
http://www.a.com/
www/sitea index.htm
[ root@centos7 ~ ] #cur
1m
http://www.a.com test.htm1
<html> .
<head><tit1e>404 Not Found</tit1e> </head> .
body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr> <center>nginx</ center>
</body>
</htm1>
[root@centos7 ~] #cur1
http://www.a.com/test.htm1
<htm 1>
<head><tit1e>404 Not Found</tit 1e> </head>
body bgcolor="white">
<center><h1>404 Not Found</h1> </center>
<hr> <center>ngi nx</center>
</body>
/htm1>
[root@centos7 ~] #cur1 http://www.a.com/test.htm1
/ data/sitea test . htm
[root@centos7 ~ ] #cur1
http:1//www.a.com
www sitea/index.htm1
[root@centos7 ~]#cur1
http://www.a.com/bbs/
/data/forum/index.html
[root@centos7 ~]#
alias
:
r
oot/data/sitea;
location/news {
root /app/sitea/ ;
}
location = /index.html {
root/www/sitea/;
}
location /bbs{
#alias/
date/fo
r
um
;
r
oot /data/forum
}
}
“
a.com.conf” 15L, 225c written
[proot@centos7 vhosts]#
[root@centos7 vhosts]#mkdir /data/forum
[root@centos7 vhosts]#echo/data/forum/bbs/index.hrml >/data/froum/bbs/index.html
[proot@centos7 vhosts]#nginx
/www/sitea/index.htm1
[root@centos7 ~ ]#cur1 http://www.a.com/
[www/sitea/index.htm]
[root@centos7 ~] #cur1 http://www.a.com
www/sitea/index.html
[root@centos7 ~] #cur 1
http://www.a.com/test.html
<html>
<head> <title>404 Not Found</tit1e> </head>
<body bgco lor= "white">
<center><h1>404 Not Found</h1> </center>
<hr> <center>nginx</center>
</body>
</htm1>
[root@centos7 ~ ]#cur1 http://www.a.com/
www/sitea/index.htm
[ root@centos7 ~ ] #cur1m http://www.a.com test.htm1
<html> .
<head><tit1e>404 Not Found</tit1e> </head> .
body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr> <center>nginx</ center>
</body>
/htm1>
[root@centos7 ~] #cur1 http://www.a.com/test. htm1
<htm 1 >
head><tit1e>404 Not Found</tit 1e> </head>
body bgcolor="white">
<center><h1>404 Not Found</h1> </center>
<hr> <center>ngi nx</center>
</body>
/htm1>
[root@centos7 ~] #cur1 http://www.a.com/test.htm1
/ data/sitea test . htm
[root@centos7 ~ ] #cur1 http:1//www.a.com
www sitea/index.htm1
[root@centos7 ~]#cur1 http://www.a.com/bbs/
/data/forum/index.html
[root@centos7 ~]#cur1 http://www.a.com/bbs/
c
url
:(7)Fai
led connect www.a.com:80;Connection refused
[root@centos7 ~]#curl http://www.a.com/bbs/
/
data/forum/bbs/index.html
注意: location中使用root指令和alias指令的意义不同
(a) root ,给定的路径对应于location中的/uri/左侧的/
(b) alias ,給定的路径対座于location中的/uri/右例的/
3.index file...;
当访问站点目录时,若不指定文件名,则无法进行文件的寻找。
指定默认网页文件,注意:ngx_hrrp_core_module模板
4.error__page code ... [= [response]] uri;
当访问错误页面后,系统将显示404错误。如果使用的是360浏览器,其会劫持本身的错误页面,即替换掉系统自带的错误页面。若想达到相同目的,可使用此类模块。
模块: ngx_http_core_module
定义错误页,以指定的响应状态码进行
可用位置: http, server, location, if inI ocation
error_ page 404 /404.html
error_ page 404
=200/404
.html
例:
访问一个根本不存在的页面
[root@centos7 ~]#curl http://www.a.com/noexist.html
<html>
<head> <title>404 Not Found</tit1e> </head>
<body bgco lor= "white">
<center><h1>404 Not Found</h1> </center> //404错误
<hr> <center>nginx</center>
</body>
</htm1>
[root@centos7 ~ ]#
为避免被劫持,除定向到200响应号
error_ page 404
= 200
/404.html
当访问页面不存在时,正常返回客户端应当是404界面,返回200响应码。
自身定制错误页面
server
_
name www.a.com ;
root/data/sitea;
error_page 404/404.htm1 ;
location/404.html {
root/data/sitea/error/;
}
location/news {
root/app/sitea/;
}
location = /index.htm1 {
root /www sitea;
}
location /bbs {
#alias/data forum;root/data/ forum ;
}
}
a.com.conf" 19L, 305c written
[root@centos7 vhosts]#mkdir data/sitea/error/
[root@centos7 vhosts]#vim 404.htm1
<
h1>NO FOUND PAGE<h1>
a.com.conf" [New]1L, 23c written
[root@centos7 vhosts]#
[root@centos7 vhosts]#nginx
[root@centos7 vhosts]#mv 404.html /data/sitea/error/
访问a
.com
[root@centos7 ~]#curl http://www.a.com/noexist.html
curl:(7)Failed connect www.a.com:80;Connection refused
[root@centos7 ~]#
5.try_ files file ... uri;
try__files file ... =code;
当访问具体路径时,如若找不到内容
按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹) ,如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误
location /images/ {
try_ files $uri /images/default.gif;
}
location / {
try_ files $uri $uri/index.html $uri.html =404;
}
定义客户端请求的相关配置
[root@centos7 sitea] #mkdir images
[root@centos7 sitea] #cd images
[root@centos7 images]#ls
[root@centos7 images#locate*.jpg
[root@centos7 images] #cp usr/ share/pi xmaps/faces/sky.jpg .
[root@centos7 images]#cp/usr/share/pixmaps/faces/ sunflower.jpg
[root@centos7 images]#cp/usr/share/pixmaps/faces/yellow-rose.jpg default. jpg[root@centos7 images]#11
total 16
rw-r--r--. 1 root root 2727 Jul 4 16:37 default.jpg
rw-r--r--. 1 root root 2964Ju 1 4 16:37 sky.jpq
当访问页面时,访问内容即返回内容,但如若无访问内容,则使用/images.defaut.jpg进行响应。即当访问网址时,即使路径写错也可以凭借默认文件页面达到访问的目的。
6. keepalive__timeout timeout [header._timeout];
默认情况下系统已经支持长链接。
长链接的测试命令:[root@centos7]#www.a.com 80
Trying 192.168.30.7...
connected to www.a.com
Escape character is '^]'
GET / HTTP/1.1
host:www.a.com
HTTP/1.1 200 OK
erver: nginx
D
ate: Wed,04Jul 2018 08:44:09 GMT
ontent-Type:text/htm1
C
ontent-Length:22
L
ast-Modified: Wed04 Ju1 2018 07 :15:00 GMTonnection: keep-al ive
Tag:" 5b3c7 3f4-16
ccept -Ranges: bytes
还可以继续发起请求
设定保持连接超时时长, 0表示禁止长连接,默认为75s
7.
keepalive_requests number;
在一次长连接上所允许请求的资源的最大数量
默认为100
8. keepalive_disable none | browser ...
针对哪种浏览器禁用长连接
9.send__timeout time;
向客户端发送响应报文的超时时长,此处是指两次写操作之间的间隔时长,而非整个响应过程的传输时长
10. client_body_buffer_size size;
用于接收每个客户端请求报文的body部分的缓冲区大小;默认为16k ;超出此大小时, 其将被暂存到磁盘上的由下面client_body_ temp_path指令所定义的位置。其与自身传递结构相关。
假设网站中有一个路径ttp://www. a. com/upload/a. mp3
存放路径:/data/sitea/upload/.mp3
当用户访问时,将按照路径寻找文件。数据存放在文件系统中,访问时通过节点一层层找寻。为提高效率,便将数据进行哈希运算。哈希运算得到的内容是一个哈希值。得到后通过122的字符储存方式。即今后通过哈希值来进行文件的排列。
11.
client_body_temp__path path [level1[level2[level3]]];
设定存储客户端请求报文的body部分的临时存储路径及子目录结构和数量目录名为16进制的数字;
client_ body_ temp_ path /var/tmp/client_ body 1 2 2
1 1级目录占1位16进制,即2^4=16个目录0-f
2 2级目录占2位16进制,即2^8=256个目录00-ff
2 3级目录占2位16进制,即2^8=256个目录00-ff
二、HTTP 请求报文
报文由三个部分组成,即开始行、首部行和实体主体。在求情报文中,开始行即请求行。