配置文件一般是一个文本文件,可以由程序解析,通过为一组指令指定值便定义了程序的行为,配置nginx只需要掌握一些机制:指令、区段(block)和整体逻辑结构,实际配置过程中,大多为指令填写值。
nginx的配置文件实际是一个具有一定逻辑结构的一组指令列表,修改指令值即可控制应用程序。
nginx的配置文件默认安装在/usr/local/nginx/conf/nginx.conf,查看nginx.conf文件:
# more /usr/local/nginx/conf/nginx.conf前两行配置如下:
#user nobody; worker_processes 1;使用字符”#”注释掉了第一行,第二行声明了一条指令,worker_processes是一个键,它对应的值设置为1,以";"结尾,这条指令指定了nginx作为单个工作进程工作。
每个指令都有不同的语法,例如指令worker_processes只接受一个数值,指令user需要指定两个字符串值:用户账户(nginx的woker进程使用该账户运行)和用户组。
nginx通过模块的方法构建而成,每一个模块都提供一组指令,最根本的指令是nginx核心模块部分。
在配置文件中有如下的指令:
include mime.types;该指令用来执行对一个特定文件的包含,即在配置文件的内容中,将被插入的文件通过include指令插入到确切的位置上,实际例子如下: nginx.conf文件内容:
user nginx nginx; worker_processes 4; include other_settings.conf;other_settings.conf文件内容如下:
error_log logs/error.log; pid logs/nginx.pid;nginx解释配置文件的最终结果如下:
user nginx nginx; worker_processes 4; error_log logs/error.log; pid logs/nginx.pid;在nginx最初的配置文件中使用了两个文件nginx.conf和mime.types( include mime.types;),对于高级配置而言,至少需要5个文件:
标准名称描述nginx.conf应用程序的基本配置文件mime.types文件扩展列表文件,它们与MIME类型关联fastcgi.conf与FastCGI相关的配置文件proxy.conf与Proxy相关的配置文件sites.conf配置nginx提供的网站,也包括众所周知的虚拟主机,推荐一个域建立一个单独的文件以上文件名是依据惯例定义的,实际上完全可以使用其他文件名。 include指令支持文件名替换,例如:
include sites/*.conf这将包含sites目录下的所有.conf文件,这种机制允许你为自己的网站建立单独的配置文件,然后再将它们全部包含进来。
指令由模块提供,如果激活了一个模块,那么该模块对应的指令也同时生效,如下:
events { worker_connections 1024; }events模块提供的指令worker_connections 1024;只能放在events区段才有意义。 有些指令可以写在配置文件顶部,起到全局效果: 不同区段可以互相嵌套: 上述例子展示了网站对nginx的配置,在http区段可以声明多个server区段,一个server区段允许配置一个虚拟主机和监听的端口,在server区段内允许插入多个location区段,当需要对特定的路径进行URL匹配时,Location区段允许对这些路径单独设置。 一个区段嵌套其它区段,被嵌套的区段将继承其父区段的设置,上述例子server区段设置了access_log指令来记录服务器所有的HTTP请求,在location区段同样生效,可以在location区段重新设置access_log:
模块提供各种变量,注意:有些指令不允许使用变量,例如:
error_log logs/error-$nginx_version.log这是一个有效的配置指令,但它只产生一个error-$nginx_version.log文件,并不解析变量。
将字符串作为指令值,可以没有引号,但如果使用的是特殊字符,例如:空格符、分号(;)、花括号({}),就需要使用引号将其括起:
root '/home/example.com/my web pages'注意:无论使用单引号、双引号,nginx都认为没有区别。