Jun 23, 2011

nginx笔记

详细手册

在nginx目录下,执行(必须在nginx目录下?貌似)
windows 下
nginx 开启服务
nginx -s [ stop | quit | reopen | reload ]
nginx -s stop 退出
如果修改了配置,可以
nginx -s reload

listen 80;
server_name localhost;
如果要对外服务,把localhost 改成IP

配置

location [=|~|~*|^~|@] /uri/ { ... }
/uri/ 前面五种前缀,加上没有前缀(空前缀),共六种情况
  1. 空前缀 普通字符匹配,从 url 起始(字符串起始)匹配起,可以只匹配 url 一段
  2. ^~ 含义和空前缀相同,不过如果匹配成功则停止搜索
  3. = exact match, 匹配成功停止搜索
  4. ~ case sensitive regular expression match(是否从 url 起始匹配起?)
  5. ~* case insensitive regular expression match
搜索顺序和规则:
  1. 先判断 = 是否匹配,如果匹配,停止搜索
  2. 普通字符匹配,如果有多个匹配,使用最精细的那个;如果 ^~ 匹配,停止搜索,使用那个匹配
  3. 按照定义顺序进行正则表达式匹配,找到一个就结束正则表达式匹配
  4. 如果3匹配成功,使用3,否则使用2
url: /i/foo.bar
uri: /i/
使用普通字符串匹配
root: 将 url 接在 root 后面,相当于字符串相加
alias: 将 url 前缀替换成 alias,相当于做了映射
location /i/ {
alias /spool/w3/images/; #最后要有 /
}
/i/foo.bar 替换成
/spool/w3/images/foo.bar
注意,当路径相加时,path1 + path2,必须path1以/结尾或者path2以/开头,或者二者都成立,不能都没有/
因此,如上如果写成
alias /spool/w3/images;
则 /i/foo.bar 替换成
/spool/w3/imagesfoo.bar 就错了

同样的,对root要写成
location /i/ {
root /spool/w3; #后面不要有 /
}

使用正则表达式

root: 将 url 接在 root 后面,相当于字符串相加
alias: 将 url 替换成 alias,相当于做了映射
location ~ ^/i/ {
alias /spool/w3/images/; 
}
替换成
/spool/w3/images/ 
而不是正确的


/spool/w3/images/foo.bar


location ~ ^/i/ {
root /spool/w3/images/; 
}
替换成
/spool/w3/images/; 

0 comments: