摘自《Nginx高性能web服务器实战教程》
1、配置文件结构
块 | 说明 |
---|---|
main | 主要控制nginx子进程所属的用户和用户组、派生子进程数、错误日志位置与级别、pid位置、子进程优先级、进程对应CPU、进程能够打开的文件描述符数目等 |
events | 控制nginx处理连接的方式 |
http | nginx处理http请求的主要配置块 |
server | nginx中主机的配置块,可用于配置多个虚拟主机 |
location | server中对应目录级别的控制块,可以有多个 |
2、默认配置指令
指令 | 说明 |
---|---|
worker_processes | 配置nginx的工作进程数,一般设为CPU总核数或者总核数的两倍 |
worker_connections | 配置nginx允许单个进程并发连接的最大请求数 |
include | 用于引入配置文件 |
default_type | 设置默认文件类型 |
sendfile | 默认值为on,表示开启高效文件传输模式 |
keepalive_timeout | 设置长连接超时时间(秒) |
listen | 监听端口,默认80 |
server_name | 设置主机域名 |
root | 设置主机站点根目录地址 |
index | 指定默认索引文件 |
error_page | 自定义错误页面 |
3、location/ {}与location=/ {}的区别
location/ {}遵循普通location的最大前缀匹配,而location=/ {}则遵循精准匹配,也就是只匹配设置的目录,且禁止搜索正则location。前者相当于站点默认设置,后者则用于更细粒度的匹配,效率更高。
4、禁用正则匹配
利用=和^~可以禁止正则匹配,即满足=或^~条件的站点,不会再去匹配后续的正则规则。区别只是在于=是精确匹配,^~依旧遵循最大前缀规则。
5、alias和root的区别
举个例子:请求为/img/head.png
如果设置的规则是:
location /img/{
alias /var/www/image/;
}
则映射结果为:/var/www/image/head.png。
如果设置的规则是:
location /img/{
root /var/www/image/;
}
则映射结果为:/var/www/image/img/head.png。
也就是说root映射的结果追加了location匹配的部分。
6、server_name指令 server配置块中,server_name除了精准配置ip和域名外,还可以通过通配符和正则进行匹配,如:
#通配符
server_name *.test.com;
server_name www.*;
#正则匹配
server_name ~^(?.*)\.domain\.com$;
7、开启目录列表
为了安全考虑,nginx的目录功能是关闭的,如果需要开启该功能,则可以在http、server或location配置块中通过autoindex配置开启。区别在于,在http中配置对所有站点有效;在server中配置对指定站点有效;在location中配置,对指定目录有效。
autoindex on
效果如下:
8、子配置引入
nginx的配置文件nginx.conf中可以配置多个server,但如果所有虚拟机都配置在这个文件当中,则会造成配置文件臃肿,不利维护,故nginx还提供引入子配置文件的机制,具体操作如下: 首先建立子配置文件的存放目录,即在默认配置目录conf下建立新目录subconf(完整目录为/usr/local/nginx/conf/subconf)。
#建立子配置文件目录
mkdir subconf
#建立配置文件
touch subhost.conf
在配置文件配置虚拟机相关配置:
server{
listen 10000;
server_name localhost;
root html;
index index.html;
}
然后在主配置nginx.conf中引入子配置文件:
include subconf/subhost.conf;
平滑重启即可。
nginx -s reload