码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx如何处理一个连接

时间:2020-02-04 15:50:07      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:--   绑定   article   其他   soc   nginx   请求   文件   cti   

Nginx如何处理一个连接

Nginx作为服务器

1 启动

  • 首先,nginx在启动时,会解析配置文件,得到需要监听的端口与ip地址
  • 然后,nginx的master进程里面,先初始化好这个监控的socket(创建socket--设置addrreuse等选项--绑定到指定的ip地址端口--在listen),然后再fork出多个子进程出来,然后子进程会竞争accept新的连接。
    此时,客户端就可以向nginx发起连接了。

2 客户端向Nginx发起连接

  • 首先:当客户端与nginx进行三次握手,与nginx建立好一个连接后,此时,某一个子进程会accept成功,得到这个建立好的socket,然后创建nginx对连接的封装,即ngx_connection_t结构体。
  • 其次:设置读写事件处理函数并添加读写事件来与客户端进行数据的交互。
  • 最后,nginx或客户端来主动关掉连接。至此,一个连接寿终正寝。

Nginx作为客户端

Nginx也可以作为客户端来请求其他server的数据(如upstream模块),此时与其他server创建连接,所创建的连接也封装在ngx_connection_t结构体中。作为客户端:

  • 首先:nginx获取一个ngx_connection_t结构体
  • 然后,创建socket,并设置socket属性(比如非阻塞)
  • 之后,通过添加读写事件,调用connect/read/write来调用连接
  • 最后,关掉连接,释放ngx_connection_t。

参考:详细文章

Nginx如何处理一个连接

标签:--   绑定   article   其他   soc   nginx   请求   文件   cti   

原文地址:https://www.cnblogs.com/vinsent/p/12259430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!