面试中关于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 协议》,转载必须注明作者和本文链接
是非之外有一座花园,我们会在那里相遇
本帖由系统于 3年前 自动加精
Martist
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2
╰ゝSakura

贊赞贊~

3年前 评论

看完后有了更多的理解,特意回来点赞 :+1:

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!