Nginx相关

来源:互联网 发布:电力网络 编辑:程序博客网 时间:2024/05/18 01:54

Nginx一个worker进程可以同时处理的请求数只受限于内存大小。不同的worker进程之间处理并发请求时几乎没有同步锁的限制,worker进程通常不会进入睡眠状态。

在执行configure命令时,已经把许多模块编译进nginx中,但是否启动这些模块,一般取决于配置文件中相应的配置项。

 location的匹配规则:

  1. = 把URI作为字符串,与参数中的uri做完全匹配;
  2. ~ 匹配时大小写敏感;
  3. ~* 忽略大小写;
  4. ^~ 匹配时只需要前半部分与uri参数匹配;
location ^~ /images/ {
#以/images/开始的请求都会匹配上。
}
5. @用于nginx服务内部请求之间的重定向,带有@的location不直接处理用户请求。

http proxy module模块

当客户端发来http请求时,不会立刻转发到上游服务器,而是把用户请求(包括http包体)完整地接收到Nginx所在服务器的硬盘或内存中,再向上游服务器发起连接,把缓存的客户端请求转发到上游服务器。优缺点。优点:公网和内网,降低上游服务器的并发压力。
ngx_http_core_module模块提供了很多在http相关模块中可以使用的变量。
nginx的编程风格:
  1. 用查表代替分支,数据与逻辑分离。用数组集中存储数据,在一个循环中对比命令名称,找到目标命令,则执行它。
  2. 重定义原始类型,重定义标准库函数。不用时直接define。
  3. 每个struct都有typedef。
  4. flag位用位域。
  5. 控制代码行长度。80个字符。
typedef的目的:给变量一个易记且意义明确的新名字;简化一些比较复杂的类型声明。typedef 与struct的结合。
#define只是简单的字符串替换,而typedef则是为一个类型起新名字。
http调用模块上下文结构ngx_http_module_t中的回调函数的实际顺序(与nginx.conf配置项有关,8个阶段的调用顺序与定义顺序是不同的)。
模块的基本结构:模块配置结构;模块配置指令;模块上下文结构;模块的定义。


配置模块和核心模块与nginx框架密切相关,是其他模块的基础。
核心结构体:ngx_cycle_t。每一个进程(master、worker、cache manager(loader))都拥有一个唯一的ngx_cycle_t结构体。


























0 0
原创粉丝点击