nginx常见正则匹配符号
 ^: 开始符。 
 $:结束符。
 .*:   .表示匹配任意字符,*表示匹配n次(n>=0)。
 \. :斜杠用来转义,\.匹配 . 这个符号本身。
 (值1|值2|值3|值4):或匹配模式,比如(jpg|gif|png|bmp)可以匹配jpg或gif或png或bmp。nginx的几个匹配模式
 location = /uri:精确匹配,只有完全相同才能匹配。
 location ~ regexPattern :区分大小写的正则匹配。
 location ~* regexPattern :不区分大小写的正则匹配。   
 location ^~ /uri/:前缀匹配,匹配任何以 /uri/ 开头的请求,一旦匹配到就停止继续搜索,它优先于正则匹配。所以任何正则表达式的匹配将不被测试(正则匹配模式的优先级相对低)。
 location /uri:不带任何修饰符,也表示前缀匹配,但正则匹配优先于它。
 location /:通用匹配,可以匹配任何请求,所以任何未匹配到其它location的请求都会匹配到它。优先级最低。
 优先级顺序:(精确匹配 = )>(前缀匹配 ^~)>(正则匹配 ~或~*,以文件配置顺序为准) > (不带任何修饰的前缀匹配) >(通用匹配)不同匹配模式下的匹配示例
 【=】:要求路径完全匹配。
 server {
     server_name website.com;
     location = /abcd {
     […]
     }
 }
 http://website.com/abcd:匹配。 http://website.com/ABCD:可能会匹配 ,也可以不匹配,取决于操作系统的文件系统是否大小写敏感(case-sensitive)。比如Mac 默认是大小写不敏感的,可以匹配。
 http://website.com/abcd?param1¶m2:匹配,自动忽略querystring部分。
 http://website.com/abcd/:不匹配,多了一个结尾的/。
 http://website.com/abcde:不匹配。【~】:区分大小写的正则匹配。
 server {
     server_name website.com;
     location ~ ^/abcd$ {
     […]
     }
 }
 ^/abcd$这个正则表达式表示字符串必须以/开始,以$结束,中间必须是abcd。
 http://website.com/abcd:匹配(完全匹配)。 http://website.com/ABCD:不匹配,此时大小写敏感。
 http://website.com/abcd?param1¶m2:匹配,自动忽略querystring部分。
 http://website.com/abcd/:不匹配,不满足正则表达式。
 http://website.com/abcde:不匹配,不满足配正则表达式。【~*】:不区分大小写的正则匹配。
 server {
     server_name website.com;
     location ~* ^/abcd$ {
     […]
     }
 }
 http://website.com/abcd:匹配 (完全匹配)。
 http://website.com/ABCD:匹配 ,此时大小写不敏感。
 http://website.com/abcd?param1¶m2:匹配,自动忽略querystring部分。 http://website.com/abcd/ :不匹配,不满足正则表达式。
 http://website.com/abcde :不匹配,不满足配正则表达式。root和alias区别
 location /i/ {
   root /data/w3;
 }
 root模式:请求http://kgc.com/i/top.gif 时,在服务器里面对应的真正的资源是 /data/w3/i/top.gif 。
 location /i/ {
   alias /data/w3/;
 }
 alias模式:请求http://kgc.com/i/top.gif 时,在服务器里面对应的真正的资源 /data/w3/top.gif。必须加上最后的斜杠。
 简单的说,/i/top.gif是我们请求的部分,root模式下表示以/data/w3为基准位置。alias模式表示/i/top.gif替换为 /data/w3/top.gif。rewrite
 作用:实现url重写以及重定向。用于做跳转。
 $N:N为一个正整数,表示获取url中正则表达式里第一个正则匹配符的内容。比如对于^/(.*)/(.*)-xxx(.*)$,则$1表示获取第一个(.*)实际的内容。当请求为/a/b-xxx时,$1获取的是a,$2获取的是b。
 rewrite break:url重写后,直接使用当前资源,不再执行location里余下的语句,完成本次请求,地址栏url不变。 
 rewrite last:url重写后,马上发起一个新的请求,再次进入server块,重试location匹配,超过10次匹配不到报500错误,地址栏url不变。
 rewrite redirect:返回302临时重定向,地址栏显示重定向后的url,爬虫不会更新url(因为是临时)。 
 rewrite permanent :返回301永久重定向, 地址栏显示重定向后的url,爬虫更新url。proxy_pass
 用于实现反向代理。nginx.conf
 user nginx nginx ;
 Nginx运行的用户和用户组。worker_processes 8;
 nginx进程数,建议设置为等于CPU总核心数或者2倍于CPU。error_log /usr/local/nginx/logs/error.log info;
 设置错误日志路径及日志级别( debug | info | notice | warn | error | crit)。pid /var/run/nginx.pid;
 指定进程pid文件位置。worker_rlimit_nofile 65535;
 指定进程可以打开的最大文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除。但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。
 (文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket)nginx文件结构
 ...              #全局块(和events块同级)events {         #events块
     # 设置事件驱动模型
     use epoll;# 高性能网络I/O模型,linux建议epoll
     ...
 }http      #http块
 {
     ...   #http全局块
     server        #server块
     { 
         ...       #server全局块
         location [PATTERN]   #location块
         {
             ...
         }
         location [PATTERN] 
         {
             ...
         }
     }
     server
     {
       ...
     }
     ...     #http全局块
 }

全局块:配置影响nginx全局的指令。包含运行nginx服务器的用户组,nginx进程,pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。简单的说,就是一些全局定义。
events块:配置影响nginx服务器或与用户的网络连接。包含每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,是否开启多个网络连接序列化等。
http块:可以嵌套多个server块,配置代理、缓存、日志定义等绝大多数功能以及第三方模块的配置。
server块:虚拟主机的配置。
location块:决定客户端发过来的请求URI如何处理,是映射到本地文件还是转发出去,以及被哪个location匹配处理。