需要详细了解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文件里的顶级块,它们都有自己的范围,使用花括弧来圈定范围。简单的如下:


user  nobody;                ##main块
worker_processes 1; ##main块
events { ##event块
worker_connections 1024;
}
http { ##http块
include mime.types;
default_type application/octet-stream;
}

其中http块代表的就是nginx服务了,一个nginx只有一个http块;http块下可以有server块,就是对应的web服务,也就是虚拟主机,因为nginx支持多个虚拟主机,所以server块会有很多,而为了方便管理通常会把server块给独立出来,放置到sites-available目录里,server块的简单配置见下:


http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
include /path/to/some/conf/file
server {
listen 80; #设定端口
server_name localhost; ##规定服务名
location / {
root html; ##设置web程序的主目录
index index.html index.htm; ##设置默认文件
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}


正则语法:

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跳转