标签:通配符 字符 length cache 测试 内置变量 比较 默认页面 正则表达式
http段的配置:server{
listen [端口]----监听所有地址的指定端口;
[IP地址:端口]---指定地址的指定端口
[unix:socket]---指定的套接字文件上
[default_server]:定义此server为http中默认server,如果所有的
server中没有任何一个listen使用此参数,那么第一个server及为默认server
rcvbuf=值:接受缓冲大小
sndbuf=值:发送缓冲大小
ssl:https server
server_name [主机名]可跟多个主机名,当nginx收到一个请求时,会取出其首部的
Host的值,而后跟众server_name进行比较,名称中可以使用通配符!
比较方式:
1 先做精确匹配 -- www.dk.com
2 左侧通配符匹配 --*.dk.com
3 右侧通配符匹配 --www.*
4 正则表达式匹配(通常以~开头)
~^.*\.dk\.com
\d---表示[0--9]
&server_name_hash_bucket_size 32|64|128;
为了实现快速主机查找,nginx使用hash表来保存主机名;
root [定义web资源路径]:
用于指定请求的根文档目录
bacjlog=n 排队等候队列
tcp_nodelay on | off;
在keepalived模式下的连接是否启用TCP_NODELAY选项
当为off时,延迟发送,合并多个请求后再发送
默认On时,不延迟发送可用于:http,server,location
sendfile on|off[默认off应该启用]
是否启用sendfile功能,高效传输文件模式
sendfile: 设置为on表示启动高效传输文件的模式。
sendfile可以让Nginx在传输文件时直接在磁盘和tcp socket之间传输数据。
如果这个参数不开启,会先在用户空间(Nginx进程空间)申请一个buffer,
用read函数把数据从磁盘读到cache,再从cache读取到用户空间的buffer,
再用write函数把数据从用户空间的buffer写入到内核的buffer,
最后到tcp socket。开启这个参数后可以让数据不用经过用户buffer。
server_tokens [on|off];
是否在响应报文的Server首部显示nginx版本
可以设置在http server location中使用
location uri/@name {
...........
}
功能:允许根据用户请求中URI来匹配指定的
各location以进行访问配置,匹配到时,将被
location块中的配置所处理
=:做精确匹配
^~:只需要前半部分与uri匹配即可,不检查正则表达式
~:做正则表达式模式匹配,匹配区分字符大小写
~*:做正则表达式模式匹配。忽略大小写
不带符号:匹配起始于此uri的所有的uri
匹配优先级:
1 字符字面量--字符精确匹配
2 正则表达式检索,当有多个时,将被第一个匹配
到的处理!
3 按字符字面量,从左开始
注意:
每个location中的root可以不一样!
location中root的路径优先级要高于主配置段中的root
alias [路径别名],只能用于location中
index file....:定义默认页面
可以跟多个值,自左而右进行匹配
error_page code ...[=[response]] uri;
当对于某个请求返回错误时,如果匹配上了error_page指令中的设定的code
具体应用:
error_page 404 /404.html
如果想让返回码更改 使用 404 =200
http|server|location
try_files path1 path2 uri;
自左至右尝试读取由path所指定路径,在第一次找到即停止并返回,如果所有path
均不存在,则返回最后一个uri
具体使用:
location /images/ {
try_files $uri /images/default.gif <--访问的uri不存在就返回这个页面;
}
}
alias使用案例:
实验案例:确定资源访问目录
1 location / {
root /www/html;
index index.html;
}
2 location ^~ /images/ {
root /web;
资源位置:/web/images/*
}
3 location ^~ /images/<--有斜线 {
alias /web/<--必须要有斜线
}
资源位置:/web/*
下面我们就通过具体操作来展示用法:
1 基本虚拟机主机选项:
[root@www20:11:51conf.d]#cat www.conf
server {
server_name www.a.com;
listen 80;
root /web/a.com;
index index.html;
server_tokens off;
location /test {
root /www/html;
}
}
访问测试:
[root@www20:12:47conf.d]#curl http://www.a.com
<h1>test a.com page for nginx virt</h1>
[root@www20:13:27conf.d]#curl http://www.a.com/test/
<h1>test location page for nginx</h1>
查看报文头部版本信息:
[root@www20:14:32conf.d]#curl -I 172.20.23.48
HTTP/1.1 200 OK
Server: nginx/1.12.2 <--带有版本信息
[root@www20:13:51conf.d]#curl -I http://www.a.com/test/
HTTP/1.1 200 OK
Server: nginx <---没有版本信息
路径别名:
location /test1 {
alias /mydata/html;
}
访问测试:
[root@www20:20:49nginx]#curl www.a.com/test1/
<h1>test alias for nginx</h1>
此时网页文件所在位置:
[root@www20:22:00html]#pwd
/mydata/html
[root@www20:22:05html]#cat index.html
<h1>test alias for nginx</h1>
注意:
此配置只能用于location中
错误页面重定向:
server {
server_name www.c.com;
listen 80;
index index.html;
root /web/c.com;
error_page 404 /404.html;
}
测试访问不存在页面:
[root@www20:29:01c.com]#curl www.c.com/dsadsa
<h1>error page for nginx c.com<h1>
更改错误响应码:
server {
server_name www.c.com;
listen 80;
index index.html;
root /web/c.com;
error_page 404 =302 /404.html;
}
测试:
[root@www20:30:37c.com]#curl -I www.c.com/oosdosdos
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.12.2
Date: Thu, 08 Nov 2018 12:31:54 GMT
Content-Type: text/html
Content-Length: 40
Connection: keep-alive
ETag: "5be42c0d-28"
设置请求内容不存在时默认返回页面:
server {
server_name www.c.com;
listen 80;
index index.html;
root /web/c.com;
error_page 404 =302 /404.html;
location /test2/ {
try_files $uri /test2/test.html;
}
}
$uri --nginx内置变量获取你请求的uri资源
访问存在页面:
[root@www20:41:53test2]#curl www.c.com/test2/index.html
<h1>hello world</h1>
访问不存在页面:
[root@www20:42:06test2]#curl www.c.com/test2/sdsd.html
<h1>test try_files for nginx at www.c.com</h1>
location /test2/ {
try_files $uri /test2/test.html;
这里是不可以写成别的路径,默认返回页面一定
要在test2目录下
}
标签:通配符 字符 length cache 测试 内置变量 比较 默认页面 正则表达式
原文地址:http://blog.51cto.com/13878078/2320257