Nginx 位于访问者与应用之间。它可以直接返回静态文件,也可以把请求转发给后端,即负责生成响应的应用。
跟踪一次商品请求
text
Browser -> Nginx -> Application -> Database
Browser <- Nginx <- Application <- Database
对于商品页面,Nginx 接收请求,选择网站和路径规则,然后转发给应用。应用读取商品数据,再通过 Nginx 返回响应。对于静态图片,Nginx 则可以直接读取文件。
谁来完成这些工作?
- Master 进程读取配置并管理 worker,可以把它理解为监督者。
- Worker 进程处理连接和请求。一个 worker 可以同时管理多个连接。
当一个请求等待后端时,事件循环让 worker 处理其他已就绪的连接。它不会为每个正在等待的访问者保留一个线程。
这种方式解决不了什么?
如果商品查询耗时很长,Nginx 仍需等待。增加 worker 不会自动解决数据库慢的问题。首先要确定等待发生在 Nginx、应用还是数据库中。
