面试中关于nginx的问答

738 阅读2分钟

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的通信机制