面试中关于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 协议》,转载必须注明作者和本文链接
本帖由系统于 4年前 自动加精
贊赞贊~
看完后有了更多的理解,特意回来点赞 :+1: