面试中关于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 的区别#
4. client 请求进来,先到 lvs 层,这个了解么#
5. 说说 PHP-FPM 与 Nginx 怎么通信,处理请求连接的?#
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: