面试中关于nginx的问答

1. 简单说下请求链路的处理流程#

 client IP 访问www.baidu.com
       |
       |
     lvs 负载均衡 (DR转发规则)
       |
       |
     Nginx 负载均衡
       |
       |
路由到www.baidu.com/index.php
       |
       |
加载nginx的fast-cgi模块
       |
       |
fast-cgi监听127.0.0.1:9000地址
       |
       |
www.baidu.com/index.php请求到达127.0.0.1:9000
       |
       |
php-fpm 监听127.0.0.1:9000
       |
       |
php-fpm 接收到请求,启用worker进程处理请求
       |
       |
php-fpm 处理完请求,返回给nginx
       |
       |
nginx将结果通过http返回给浏览器(lvs-DR

2. 说说 nginx 502,503,504 的意义和可能原因#

502 - Bad Gateway fpm
进程挂掉或者后端程序过长时间未返回。
nginx 在这里充当的是反向代理服务器的角色,是把 http 协议请求转成 fastcgi 协议的请求,通过 fastcgi_pass 指令传递给 php-fpm 进程,当 php-fpm 进程响应的内容是 nginx 无法理解的响应,就会返回 502 bad gateway。

503 - Service Unavailable
服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。(服务不可用)。一个 http 请求占用一个 php-fpm 进程,瞬时请求量过大时,没有足够的 php-fpm 进程去处理请求,就会返回 503 service unavailable。
或者,nginx 配置了频率限制,而 client 端又超过了配置的限制后就会收到 503 的响应。

504 - Gateway Time-out
nginx 的 fastcgi 模块有一个 fastcgi_read_timeout 配置,它表示从 FastCGI server 获取数据的超时时间。如果超过这个配置,客户端就是收到 504 的响应。
可以理解为,单个 php-fpm 进程阻塞超过 nginx 的时间阈值返回 504 gateway timeout。

3. 详细说下 502 和 504 的区别#

nginx 的 502 和 504

4. client 请求进来,先到 lvs 层,这个了解么#

lvs,keepalive 和 nginx 的关系

5. 说说 PHP-FPM 与 Nginx 怎么通信,处理请求连接的?#

PHP-FPM 与 Nginx 的通信机制

本作品采用《CC 协议》,转载必须注明作者和本文链接
是非之外有一座花园,我们会在那里相遇
本帖由系统于 4年前 自动加精
Martist
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。