Nginx

高效定義許多 nginx 自定義錯誤頁面

  • January 8, 2021

我為Wikipedia 頁面上列出的大多數錯誤創建了一些自定義 4xx 和 5xx HTML 錯誤頁面。我想將它們安裝在我設置的任何 nginx 伺服器上,而不會對性能產生太大影響。

按照文件我想出了這個配置指令的錯誤:

error_page 404 /nginx/404.html;
location = /nginx/404.html {
       alias /usr/share/nginx/errors/404.html;
       internal;
}

我把它放進去,可以在我所有的塊/etc/nginx/snippets/errors.conf中包含這個片段。server

這很好用,但是……

它為盒子上的每個塊添加了近 50 個location指令。server

這是否過分,是否有更性能友好的方式來實現相同的目標?我避免了伺服器端包含、if 語句,並認為它需要更多的伺服器資源而重寫。

當您不將每個錯誤頁面映射到它自己的位置時,您可以使用單個位置指令:

error_page 402 /error/402.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html; 
... etc. 

location = /error/ {
       alias /usr/share/nginx/errors/;
}

為什麼不在ssi on;您的錯誤位置嘗試伺服器端包含 ( )?然後,您可以為所有錯誤程式碼定義一個錯誤頁面。它是動態的,不涉及真正的程式語言。這是一個很好的模板範例,它說明了您可以使用該技術執行的大部分操作:https ://www.cambus.net/nginx-and-server-side-includes/

引用自:https://serverfault.com/questions/951260