server
listen 监听的端口
server_name 服务的名字
(ps.listen中会有一个default(不同版本的Nginx的default标签会不同),在具有相同的监听端口(listen)时,你的浏览器中访问的域名和server_name来进行区分,如果server_name没有匹配上,就选用默认匹配的端口。相同的端口,server配置比较前面的内容会被Nginx默认为默认的端口)
优先级:
listen>server_name>default>server在文件中的位置
location 对服务中的目录进行配置
resolver dns服务的IP地址,一般用在正向代理中
location
Nginx location匹配规则:
语法规则: location [=|~|~*|^~] /uri/ { … } (ps.uri表示的是http://write.blog.csdn.net/postedit中的/postedit)
= 表示精确匹配
^~ 表示uri以某个常规字符串开头,可以理解为匹配url即可。
~ 表示区分大小写的正则表达式,和linux的正则表达式有点像,也许就是同一个,至少没有发现不同点。
~* 表示不区分大小写的正则表达式。
网上有说可以用!来表示‘否’,但是尝试了几遍,发现不行。
在尝试location的正则表达式,匹配到最能匹配的,其中精确匹配=的优先度最高。
(猜测,一般location匹配的应该都是目录)
范例:
location = / {
#匹配根目录,即http://www.csdn.net/
#规则一
}
location / {
#默认最后匹配的,任何没有匹配上的其他location的都使用这个location。
}
location = /one/ {
#精确匹配uri的/one/,即http://www.csdn.net/one/
}
location = /one {
#此写法在Nginx0.76版本,和上面的一样
}
location ~ "正则表达式" {
#大小写都要匹配该正则表达式,当正则表达式中有{ ;等字符,最好就要带上引号。
}
location中部分内容:
root 设置根目录
proxy_pass 设置代理的url
proxy_set_header Host $host; 设置头部的Host内容
proxy_set_header Host $host; 设置用户访问的IP地址
。。。。等等各种。。。。
upstream
等待进一步研究,不过反向代理的时候貌似必须使用。
参考:
http://nginx.org/cn/ 详细的各个模块内容;
http://blog.sina.com.cn/s/blog_97688f8e0100zws5.html