# 注释
指令总是以;结束
work_process只接受一个数字值
include 对特定文件的包含
指令块 指令由模块提供,例如
events{
}
不同区段能互相嵌套
http{
server{
location ...{
}
}
}
一个http区段可以声明买多个server区段,http是用以和imap区分,imap是邮件服务器代理功能
一个server区段可以配置一个虚拟主机
server区段可以插入多个location区段,当需要对特定的路径进行URI匹配,这些location允许对这些路径单独设置。
配置的继承:一个区段中嵌套其他区段,那么背嵌套的区段会继承其父区段的设置。
access_log指令指定对这个服务器的所有的http请求都会记录在这个文本文件中。
指令值的单位:
k K或者m M大小
ms毫秒 s秒 m分钟 h小时 d天 w周 M月 y年
变量
模块提供各种变量,例如http核心模块定义了$nginx_version变量,有些指令不允许使用任何变量。
字符串值
将字符串用做指令值,可以有三种形式,首先可以没有引号root /home/www;
特殊符号例如空格符“ ”,分号;或者花苦熬好{},就需要使用单引号或者双引号括其root '/home/my web';
核心模块指令
Events模块:配置网络机制,指令的一些参数会对nginx应用程序性能影响。
Configuration模块:是简单的模块,它提供的include指令能将其他文件包含在nginx配置文件中,
在配置文件任何地方都可以插入该指令,并且在它后面只有一个参数:文件路径
include /file/path.conf
如果没有绝对路径,那么文件的路径将和配置文件的目录相关,也就是与配置文件同一目录。
默认的配置文件nginx.conf:效率较高,一般不用修改。
server {
listen 80;//通过80端口监听TCP套接字
server_name localhost;//访问地址http://localhost/
location / {
root html;
index index.html;
}
error_page 500 502 /50x.html;
location =/50x.html{
root html;
}
}
http模块 提出来三个逻辑区块:
http 协议级别,该区段嵌入配置文件的根部。
server server级别,允许什么一个站点,该区段只能用在http区段。可以有多个server区段。
location URI级别,定义一组设置,应用于网站的一个特定位置。
http{
gzip on;
server {
server_name localhost;
listen 80;
location /downloads/{
gzip off;
#该指令只应用于/downloads/目录下找到的文件
}}}
路径和文档
root 定义文档的根目录,root /homt/www
alias只能放在location中,为nginx指定的文件路径提供别名。
http{
server{
server_name localhost;
listen 80;
root /var/www/html
location /admin/{
alias /var/www/locked/;
}
http://localhost/ 由目录 root /var/www/html/来提供;
http://localhost/admin/由/var/www/locaked/来提供
root指令的值不能改变,root指令指定的文件根目录值不能改变。
error_page 允许修改访问URI所产生的HTTP代码,并选择性的将其替换为其他代码。
index 定义一个默认页面,如果在请求中没有指定文件名即index页面,nginx会使用该页面提供服务。可以指定多个文件名,但使用第一个找到的文件。
如果没有找到,nginx要么尝试产生一个自动的文件索引,要么返回403错误页。
例如 index index.php index.html
try_files 试图找到指定的文件,如果都不在,就跳到命名location区段或者指定的URI。
例如:
location / {
try_files $uri $uri.html $uri.php $uri.xml
@proxy;
}
location @proxy{
proxy_pass 127.0.0.1:8080
}
如果URI不符合现有的文件,nginx会给URL附加.html,如果失败继续尝试.php .xml。如果都失败,则由另一个location @proxy处理。
模块变量
请求头 $http_host,$http_user_agent;$http_referer;$http_cookie等
相应头
Nginx产生的变量
$arg_XXX 允许访问查询字符串GET参数,XXX替换为具体参数
$args所有结合在一起的字符串查询参数
$query_string 如同$args
Location区段 语法 location [=|~|~*|^~|@] pattern {...} 第一个可选参数是一个符号,称作location修饰符,它用来定义nginx的匹配模式,也定义非常自然的模式,简单字符串或者正则。
修饰符 符号=
URI的定位必须与指定的模式精确匹配,该模式在这里限定为一个简单的文本字符串,不能使用正则。
server{
server_name w.com;
location=/abcd {
[...]
}}
http://w.com/abcd 可以
http://w.com/ABCD 可以
http://w.com/abcd?a=1 可以
http://w.com/abcd/ 不可以
http://w.com/abcde 不可以
修饰符 无符号
URI的定位必须以指定的模式开设,不能使用正则。
server{
server_name w.com;
location /abcd {
[...]
}}
http://w.com/abcd 可以
http://w.com/ABCD 可以
http://w.com/abcd?a=1 可以
http://w.com/abcd/ 可以
http://w.com/abcde 可以修饰符 ~
URI与正则匹配必须区分大小写
server{
server_name w.com;
location ~ ^/abcd$ {
[...]
}}
http://w.com/abcd 可以
http://w.com/ABCD 不可以
http://w.com/abcd?a=1 不可以
http://w.com/abcd/ 不可以
http://w.com/abcde 不可以
修饰符 ~*
URI与正则匹配 不区分大小写
server{
server_name w.com;
location ~* ^/abcd$ {
[...]
}}
http://w.com/abcd 可以
http://w.com/ABCD 可以
http://w.com/abcd?a=1 可以
http://w.com/abcd/ 不可以
http://w.com/abcde 不可以^~ 类似于无标志模式,URI的定位必须以指定模式开始,不同的是,如果模式匹配,那么nginx就停止搜索其他模式。
@ 定义命名location区段,这些区段客户端不能访问,只可以由内部产生的请求访问,例如try_files或者error_page
$匹配行结束符。例如正则表达式weasel$ 能够匹配字符串"He's a weasel"的末尾,但是不能匹配字符串"They are a bunch of weasels."。
^匹配一行的开始。例如正则表达式^When in能够匹配字符串"When in the course of human events"的开始,但是不能匹配"What and When in the"。
*匹配0或多个正好在它之前的那个字符。例如正则表达式.*意味着能够匹配任意数量的任何字符。
\这是引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配。例如正则表达式\$被用来匹配美元符号,而不是行尾,类似的,正则表达式\.用来匹配点字符,而不是任何字符的通配符。