Nginx部分模块参数介绍
2013-08-13 16:19
288 查看
在学习nginx过程中,遇到一些问题。翻阅资料时学到了不少,参考了wiki nginx,英文不好的同学可以参考其翻译nginx模块参考手册中文版。
上诉资料很详细的讲解了nginx的方方面面,在此总结下我经常用到的。
一、Http模块
所有的http配置项必须直属于http块、location块、upstream块等中,有些配置项可以任意的出现在某一个块中,而有些配置项只能出现在特定的块中。
1.server
一个server块就是一个虚拟主机,它只能处理与之对应的主机域名请求,通过设置多个不同的server,一台服务器上的Nginx就能以不同的方式处理不同主机域名的HTTP请求。
参数
listen
语法:listen address:port [ default(0.8.21后已过时) | default_server | [ backlog=num | rcvbuf=size | sndbuf=size | accept_filter=filter | deferred | bind | ipv6only=[on|off] | ssl ] ]
指定Nginx服务监听哪些端口,listen后值可以为IP地址(不加端口号时,默认监听80端口)、端口或主机名。
server_name
语法:server_name name [… ]
设置主机名称,其后可以跟多个主机名称。
在处理一个Http请求时,Nginx会取出header中的Host,与每个server块中的server_name进行匹配,由此决定哪个server块处理这个请求。当多个server中的server_name都能与这个HTTP请求匹配时,根据匹配优先级来选择实际处理的server块。
location
语法:location [=|~|~*|^~|@] /uri/ { … }
location会根据用户请求的URI来匹配当前的uri表达式,如果匹配,则选择location{}中的配置来处理用户请求。当location为正则表达式时,需指定前缀~或者~*。location符号介绍如下
其中1,2为普通匹配,3,4为正则表达式匹配,5的优先级最低。
关于location顺序的说明:普通 location 的匹配与 location 编辑顺序无关;但是“正则 location ”的匹配规则是“顺序匹配,且只要匹配到第一个就停止后面的匹配”;“普通 location ”与“正则 location ”之间的匹配顺序是先匹配普通 location ,再“考虑”匹配正则 location 。注意这里的“考虑”是“可能”的意思,也就是说匹配完“普通 location ”后,有的时候需要继续匹配“正则 location ”,有的时候则不需要继续匹配“正则 location ”。两种情况下,不需要继续匹配正则 location :( 1 )当普通 location 恰好严格匹配上时,不再继续正则匹配。(12)当普通 location 前面指定了“ ^~ ”时,匹配成功后不需要继续正则匹配;
关于location的说明,可以参考location匹配详解。
root
语法:root path;
指定资源路径。
上诉资料很详细的讲解了nginx的方方面面,在此总结下我经常用到的。
一、Http模块
所有的http配置项必须直属于http块、location块、upstream块等中,有些配置项可以任意的出现在某一个块中,而有些配置项只能出现在特定的块中。
1.server
一个server块就是一个虚拟主机,它只能处理与之对应的主机域名请求,通过设置多个不同的server,一台服务器上的Nginx就能以不同的方式处理不同主机域名的HTTP请求。
参数
listen
语法:listen address:port [ default(0.8.21后已过时) | default_server | [ backlog=num | rcvbuf=size | sndbuf=size | accept_filter=filter | deferred | bind | ipv6only=[on|off] | ssl ] ]
指定Nginx服务监听哪些端口,listen后值可以为IP地址(不加端口号时,默认监听80端口)、端口或主机名。
server_name
语法:server_name name [… ]
设置主机名称,其后可以跟多个主机名称。
在处理一个Http请求时,Nginx会取出header中的Host,与每个server块中的server_name进行匹配,由此决定哪个server块处理这个请求。当多个server中的server_name都能与这个HTTP请求匹配时,根据匹配优先级来选择实际处理的server块。
匹配优先级: 1. 完整匹配的名称。 2. 名称开始于一个文件通配符:*.example.com。 3. 名称结束于一个文件通配符:www.example.*。 4. 使用正则表达式的名称。 如果没有匹配的结果,nginx配置文件将按照以下优先级使用[#server server { … }]字段: 1. listen指令被标记为default的server字段。 2. 第一个出现listen(或者默认的listen 80)的server字段。
location
语法:location [=|~|~*|^~|@] /uri/ { … }
location会根据用户请求的URI来匹配当前的uri表达式,如果匹配,则选择location{}中的配置来处理用户请求。当location为正则表达式时,需指定前缀~或者~*。location符号介绍如下
1. = 表示严格匹配; 2. ^~ 表示匹配URI时只需要其前半部分与URI参数匹配即可; 3. ~ 表示匹配URI时字母大小写是敏感的; 4. ~* 表示匹配URI时忽略字母大小写问题; 5. / 表示匹配以“/”开头的URI,优先级最低; 6. @ 表示仅用于Nginx服务内部请求之间的重定向,带有@的location不直接处理用户请求。
其中1,2为普通匹配,3,4为正则表达式匹配,5的优先级最低。
关于location顺序的说明:普通 location 的匹配与 location 编辑顺序无关;但是“正则 location ”的匹配规则是“顺序匹配,且只要匹配到第一个就停止后面的匹配”;“普通 location ”与“正则 location ”之间的匹配顺序是先匹配普通 location ,再“考虑”匹配正则 location 。注意这里的“考虑”是“可能”的意思,也就是说匹配完“普通 location ”后,有的时候需要继续匹配“正则 location ”,有的时候则不需要继续匹配“正则 location ”。两种情况下,不需要继续匹配正则 location :( 1 )当普通 location 恰好严格匹配上时,不再继续正则匹配。(12)当普通 location 前面指定了“ ^~ ”时,匹配成功后不需要继续正则匹配;
关于location的说明,可以参考location匹配详解。
root
语法:root path;
指定资源路径。
相关文章推荐
- Nginx的HTTP模块介绍-----数据结构部分
- nginx命令参数用法详细介绍
- nginx 自定义带参数模块
- nginx上传模块nginx_upload_module和nginx_uploadprogress_module模块进度显示,如何传递GET参数等。
- Nginx基础入门之nginx编译参数说明介绍
- 实战Nginx(3)-访问控制与用户认证模块及nginx内置状态页介绍
- nginx部分调优参数
- IPTABLES逻辑介绍以及部分参数
- nginx的gzip压缩功能参数介绍(ngx_http_gzip_module)
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- 解决nginx上传模块nginx_upload_module传递GET参数
- (转载) 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- nginx模块开发获取post参数
- nginx支持websocket及websocket部分原理介绍
- Nginx自定义模块编写:根据post参数路由到不同服务器
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- 详细解释:nginx中ngx_http_auth_basic_module模块(HTTP Auth Basic 模块)配置及各个参数含义 .
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- ElasticSearch 各模块介绍及参数配置详解