我們正在嘗試為返回死亡白頁的網路應用程式設定監控(zabbix)。應用程式基於 PHP。
據我所知,白屏死機可能是由許多問題、記憶體問題、語法錯誤等引起的。
所以我想問,是依靠網頁伺服器返回 50x 程式碼更好,還是有可能(以某種方式)獲得返回程式碼 200,但渲染頁面為空(白色)?
答案1
依賴 HTTP 狀態碼是最佳且常用的做法。如果 PHP 遇到嚴重錯誤,它應該關閉並顯示適當的 HTTP 錯誤代碼。
HTTP 狀態碼 200 的嚴重錯誤是虛假聲明,應避免。即使設計良好的 404 頁面也應該使用 HTTP 錯誤代碼 404,而不是其他任何內容。
使用 HTTP 錯誤代碼,您可以:
使用現有的線上和本地監控工具來監控您的網站和應用程式
允許瀏覽器根據給定的錯誤做出反應
告訴 Google 和其他搜尋引擎您的網站中有錯誤而不是新內容
配置 Nginx 以顯示正確的 HTML,並在 PHP 因致命錯誤而關閉時保留錯誤代碼
…
答案2
如果要正確監視網站,您應該識別 Web 內容中出現的一個或多個字串,並讓監視器檢查這些字串是否存在於 HTTP 回應中。
如果您正在執行收集和處理表單資料的 Web 應用程序,則應建立一個互動式監視器來處理表單並確認表單傳回正確的結果。您可以透過多種方式做到這一點。過去我將 Jmeter 與 Nagios 整合來執行此操作,但您也可以使用 Pingdom 等線上服務。
我認為依賴 HTTP 狀態碼並不是一個好的做法。 PHP 中的資料庫錯誤仍可能傳回 HTTP 200 狀態。同樣,被破壞的網站可能會返回 200 狀態代碼。