Nginx怎么处理请求

67 阅读1分钟

Nginx怎么处理请求的?

server {         # 第一个Server区块开始,表示一个独立的虚拟主机站点
   listen       80; # 提供服务的端口,默认80
   server_name  localhost; # 提供服务的域名主机名
   location / { # 第一个location区块开始
     root   html; # 站点的根目录,相当于Nginx的安装目录
     index  index.html index.html;  # 默认的首页文件,多个用空格分开# 第一个location区块结果
  • 首先,Nginx 在启动时,会解析配置文件,得到需要监听的端口与 IP 地址,然后在 Nginx 的 Master 进程里面先初始化好这个监控的Socket(创建 S ocket,设置 addr、reuse 等选项,绑定到指定的 ip 地址端口,再 listen 监听)。
  • 然后,再 fork(一个现有进程可以调用 fork 函数创建一个新进程。由 fork 创建的新进程被称为子进程 )出多个子进程出来。
  • 之后,子进程会竞争 accept 新的连接。此时,客户端就可以向 nginx 发起连接了。当客户端与nginx进行三次握手,与 nginx 建立好一个连接后。此时,某一个子进程会 accept 成功,得到这个建立好的连接的 Socket ,然后创建 nginx 对连接的封装,即 ngx_connection_t 结构体。
  • 接着,设置读写事件处理函数,并添加读写事件来与客户端进行数据的交换。
  • 最后,Nginx 或客户端来主动关掉连接,到此,一个连接就寿终正寝了。