nginx的HTTP配置
http配置:
http {
server {
listen address[:PORT]|PORT;
server_name SERVER_NAME;
root /PATH/TO/DOCUMENT_ROOT;
}
}
listen
listen PORT|address[:port]|unix:/PATH/TO/SOCKET_FILE
listen address[:port] [default_server] [ssl] [http2 | spdy] [backlog=number][rcvbuf=size] [sndbuf=size];
default_server 设定为默认虚拟主机,无法匹配虚拟主机时使用
ssl 限制仅能够通过ssl连接提供服务
backlog=number 超过并发连接数后,新请求进入后援队列的长度
rcvbuf=size 接收缓冲区大小
sndbuf=size 发送缓冲区大小
1.基于port;
listen PORT; 指令监听在不同的端口
2.基于ip的虚拟主机
listen IP:PORT; IP 地址不同
3.基于hostname
server_name fqdn; 指令指向不同的主机名
server_name
server_name name …;
虚拟主机的主机名称后可跟多个由空白字符分隔的字符串
支持*通配任意长度的任意字符
server_name .test.com www.test.
支持~起始的字符做正则表达式模式匹配,性能原因慎用
server_name ~^www\d+.test.com$
说明: \d 表示 [0-9]
匹配优先级机制从高到低
1.首先是字符串精确匹配 如:www.test.com
2.左侧通配符 如:.test.com
3.右侧通配符 如:www.test.
4.正则表达式 如: ~^.*.test.com$
5.default_server
定义路径相关的配置
root
设置web资源的路径映射;用于指明请求的URL所对应的文档的目录路径,可用
于http, server, location, if in location
server {
…
root /data/www/vhost1;
}
示例
http://www.test.com/images/logo.jpg
–> /data/www/vhosts/images/logo.jpg
location
location [ = | ~ | ~* | ^~ ] uri { … }
location @name { … }
在一个server中location配置段可存在多个,用于实现从uri到文件系统的路
径映射;ngnix会根据用户请求的URI来检查定义的所有location,并找出一个最
佳匹配,而后应用其配置
示例:
server {
server_name www.test.com;
location /images/ {
root /data/imgs/;
}
}
http://www.test.com/images/logo.jpg
--> /data/imgs/images/logo.jpg
= 对URI做精确匹配;
location = / {
…
}
http://www.test.com/ 匹配
http://www.test.com/index.html 不匹配
^~ 对URI的最左边部分做匹配检查,不区分字符大小写
~ 对URI做正则表达式模式匹配,区分字符大小写
~* 对URI做正则表达式模式匹配,不区分字符大小写
不带符号 匹配起始于此uri的所有的uri
\ 转义符,可将 . * ?等转义为普通符号
匹配优先级从高到低:
=, ^~, ~/~*, 不带符号
注意:虽然nginx上不区分大小写,但是linux文件系统依旧是敏感的
示例:
root /vhosts/www/htdocs/;
http://www.test.com/index.html
--> /vhosts/www/htdocs/index.html
server {
root /vhosts/www/htdocs/ ;
location /admin/ {
root /webapps/app1/data/;
}
}
http://www.test.com/admin/index.html
--> /webapps/app1/