面試中關於nginx的問答

Martist發表於2020-08-19

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 協議》,轉載必須註明作者和本文連結
是非之外有一座花園,我們會在那裡相遇

相關文章