PHP 网络请求的流程以及 Nginx 的响应过程

PHP 网络请求的流程通常涉及到 Web 服务器(如 Nginx)和 PHP 解释器(如 PHP-FPM)的配合。以下是 PHP 网络请求的流程以及 Nginx 的响应过程:(重点4,5步)

PHP 网络请求流程:

  1. 用户发起请求: 用户在浏览器中输入URL或与Web应用互动,发送HTTP请求到Web服务器。

  2. DNS解析和建立TCP连接: Web浏览器解析域名并建立到Web服务器的TCP连接,通常使用HTTP(端口80)或HTTPS(端口443)。

  3. Web服务器接收请求: Web服务器(如 Nginx)接收到HTTP请求,然后根据请求的URL和其他信息将请求路由到适当的虚拟主机或应用程序。

  4. Nginx处理请求: Nginx可能会进行一些预处理,如静态文件缓存、反向代理或负载均衡,然后将请求传递给后端应用程序服务器,通常是PHP-FPM。

  5. PHP-FPM处理请求: PHP-FPM(FastCGI Process Manager)是一个PHP的FastCGI实现,它接收并处理PHP请求。它会将请求传递给PHP解释器。(与4结合着理解,这两个就是Nginx用作分布式服务器的核心步骤,在Nginx服务器中的原理也就这两步,具体工作和面试都会用到重中之重)

  6. PHP解释器执行脚本: PHP解释器将PHP脚本执行为HTML或其他输出,可以包括数据库查询、文件操作、业务逻辑等。

  7. 生成HTTP响应: PHP脚本生成HTTP响应,包括HTTP响应头和HTTP响应体。响应头包括状态码、内容类型等。

  8. 响应返回到Nginx: 生成的HTTP响应返回到Nginx,通常是通过FastCGI协议。

Nginx响应过程:

  1. Nginx接收响应: Nginx接收PHP生成的HTTP响应。

  2. Nginx处理响应: Nginx可以进行额外的处理,如压缩响应、添加响应头或处理缓存。

  3. Nginx发送响应到客户端: 最终,Nginx将处理过的HTTP响应发送到用户的浏览器。

  4. 浏览器接收响应: 浏览器解析HTTP响应并呈现内容,这可能包括HTML、CSS、JavaScript、图像等。

  5. 页面呈现: 浏览器将内容渲染到屏幕上,呈现给用户。

  6. 连接关闭: 一旦页面呈现完毕,连接可能会保持打开以获取其他资源,或者关闭,具体取决于HTTP头信息和浏览器行为。

这是 PHP 网络请求的一般流程,以及Nginx的响应过程。此流程涵盖了从用户发出请求到浏览器呈现页面的整个过程,中间涉及多个层次和组件的协同工作。