配置步驟
- 編輯
nginx.conf,在 http 塊或 server 塊中添加:
http {
# ... 其他配置
ssi on;
ssi_silent_errors on;
ssi_types text/shtml;
}
- 重載配置:
nginx -s reload
指令詳解
| 指令 | 默認值 | 說明 |
ssi | off | 啟用 Server Side Includes 模塊 |
ssi_silent_errors | off | 開啟後,SSI 處理錯誤(如文件不存在)不輸出錯誤信息到頁面,僅記錄 error_log,前端體驗更友好 |
ssi_types | text/html | 指定啟用 SSI 的 MIME 類型。添加 text/shtml 使 .shtml 文件被解析;如需 .html 也解析,改為 ssi_types text/html text/shtml; |
SSI 常用指令示例
Mobile Version
Desktop Version
典型應用場景
- 靜態站點公共頭尾/側邊欄複用(無需模板引擎)。
- CDN 邊緣動態注入用戶信息、A/B 測試標記。
- 舊系統改造:保留 .shtml 後綴,最小化代碼變更實現局部動態化。
性能與避坑
- 緩存策略:SSI 頁面通常不緩存或短緩存(
expires 1m;),避免包含內容更新不生效。
- 嵌套深度:避免超過 3 層
include,防止遞歸解析導致延遲飆升。
- 錯誤處理:生產環境建議開啟
ssi_silent_errors on;,防止後端故障暴露堆疊信息到前端。
- 替代方案:高併發動態場景建議使用 Nginx + Lua (OpenResty) 或 Edge Side Includes (ESI/Varnish),性能與靈活性更優。