美文网首页
Nginx建立连接的流程

Nginx建立连接的流程

作者: FcxD | 来源:发表于2017-04-06 17:15 被阅读0次

    作为服务器

    在默认情况下,Nginx启动后,首先解析配置文件,获得监听端口与地址,初始化socket(创建socket,设置addrreuse等选项,绑定IP,listen),然后fork()出指定数目的子进程(worker进程),master进程关闭用于监听的socket,接由子进程竞争accept新的连接。此时,客户端就可以向Nginx发起连接了。客户端连接Nginx时,会引发惊群效应(可使用accept_mutex让Nginx每次只有一个worker进程进行连接),但是只有一个子进程会accept()成功,得到这个建立好的连接的socket,然后创建Nginx对连接的封装,即ngx_connection_t结构体。接着,设置读写事件并添加读写事件来与客户端进行数据的交换。最后,Nginx或客户端将主动关闭连接。至此,一个连接就完成了。

    作为客户端

    Nginx也是可以作为客户端来请求其他server的数据的(如upstream模块)。与其他server创建的连接,也封装在ngx_connection_t中。作为客户端,Nginx先获取一个ngx_connection_t结构体,然后创建socket,并设置socket属性。然后再通过添加读写事件,调用connect/read/write来调用连接,最后关闭连接,并释放ngx_connection_t。

    相关文章

      网友评论

          本文标题:Nginx建立连接的流程

          本文链接:https://www.haomeiwen.com/subject/mceqattx.html