需要详细了解Nginx配置的可以参考以下的站点:
Nginx中文WIKI:
http://wiki.nginx.org/NginxChs
Nginx源码解析blog:
http://www.pagefault.info/?p=368
Nginx英文官方配置:
http://wiki.nginx.org/Configuration
Nginx模块参考手册中文版:
http://www.howtocn.org/nginx:Nginx
=================================================个人说明分割线================================================
参数:
-c <path_to_config>:使用指定的配置文件而不是 conf 目录下的 nginx.conf 。
-t:测试配置文件是否正确,在运行时需要重新加载配置的时候,此命令非常重要,用来检测所修改的配置文件是否有语法错误。
-v:显示 nginx 版本号。
-V:显示 nginx 的版本号以及编译环境信息以及编译时的参数。
-s:启动参数,后跟具体选项,如reload、restart、stop等
配置加载:
只加载主配置文件nginx.conf,然后这个文件里可以有include指令来包含外部的.conf文件进来,所以server级别的配置可以独立出来放在单独的conf文件里,便于管理和维护,不过独立的server级别的conf必须要放置在sites-available目录下,还要在sites-enable目录下对应建立一个软件连接,这样才能生效。
配置结构:
nginx配置文件是有自己的语法规则的,给vim添加nginx.vim配置可以支持nginx语法的高亮显示;既然有语法那么就有一定的格式,nginx配置文件是按块来分的:顶层的有main、event、http3个块;其中main代表的就是nginx.conf整个文件的区域,event、http都是nginx.conf文件里的顶级块,它们都有自己的范围,使用花括弧来圈定范围。简单的如下:
其中http块代表的就是nginx服务了,一个nginx只有一个http块;http块下可以有server块,就是对应的web服务,也就是虚拟主机,因为nginx支持多个虚拟主机,所以server块会有很多,而为了方便管理通常会把server块给独立出来,放置到sites-available目录里,server块的简单配置见下:
正则语法:
nginx里使用的比较多的就是正则语法的应用了,所以需要记录一下。需要使用正则的地方通常都是location、rewrite、if语句等,使用正则的选项具体如下:
* ~ 区分大小写匹配正则
* ~* 不区分大小写匹配正则
* !~ 和 !~* 与 ~ 和 ~* 是相反的意思,即为若不匹配正则表达式,结果为真
* 检查一个文件是否存在,使用 -f 和 !-f
* 检查一个目录是否存在,使用 -d 和 !-d
* 检查一个文件/目录/链接是否存在,使用 -e 和 !-e
* 检查文件是否可执行文件,使用 -x 和 !-x
location /index.html { ... } ##只匹配/index.html
location ~* ^/static/.* { ... } ##不区分大小匹配以/static/开头的请求路径
if (-f $file_name) { ... } ##如果请求的文件名是一个文件
可以通过在正则里加括弧在进行引用操作,如:
location ~* ^/static/(.*) { ...$1... } #$1就是对.*多匹配到的内容的引用
中断关键字:
* last 结束rewrite指令的执行,之后查找响应的URI和location
* break 结束rewrite指令的执行
* redirect 以状态码302进行临时重定向;可在替换的串值以 http:// 开头时使用它
* permanent 以状态码301进行永久重定向
* return 该指令结束命令执行,并向客户端返回一个状态码。
* rewrite 重写url,即url跳转