Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Squid 顯示本地時間配置:修改錯誤頁面時間格式

編輯:Linux 教學

問題背景

Squid 代理服務器生成的錯誤頁面(如 404、拒絕訪問、連接超時)默認在頁腳顯示 GMT 時間(如 Generated Thu, 01 Jan 2024 00:00:00 GMT by proxy (squid/3.5)),對中國大陸運維人員不直觀。本文說明如何通過修改源碼使其顯示本地時間。

修改方法

  1. 定位源碼文件:src/errorpage.c(Squid 3.x/4.x 路徑可能為 src/errorpage.cc 或 helpers/errorpage.c)。
  2. 搜索關鍵字 Generated %T(約第 60-70 行)。
  3. 將格式字符串中的 %T(GMT 時間)改為 %t(本地時間)。

修改前

{
    ERR_SQUID_SIGNATURE,
    "\n
\n" "
\n" "
\n" "Generated %T by %h (%s)\n" "
\n" "\n" },

修改後

{
    ERR_SQUID_SIGNATURE,
    "\n
\n" "
\n" "
\n" "Generated %t by %h (%s)\n" "
\n" "\n" },

重新編譯安裝

cd /path/to/squid-source
make
make install
# 或僅重新編譯該文件並替換二進制
gcc -c src/errorpage.c -o src/errorpage.o
# ... 鏈接生成 squid 二進制
systemctl restart squid

驗證效果

瀏覽器訪問被 Squid 攔截的頁面(如配置 deny_info 或觸發 ACL 拒絕),頁腳將顯示:

Generated 2024-01-01 08:00:00 by proxy.example.com (squid/4.16)

時間為服務器所在時區(如 CST),不再是 GMT。

補充:自定義錯誤頁面模板

若需更徹底定制(加入 Logo、聯繫信息、多語言),可:

  1. 複製 errors/ 目錄下模板文件(如 ERR_ACCESS_DENIED)。
  2. 修改 HTML 內容,保留 %U (URL)、%h (主機名)、%s (Squid 版本) 等佔位符。
  3. 在 squid.conf 指定模板目錄:error_directory /etc/squid/custom_errors。

注意事項

  • 修改源碼屬於硬編碼,升級 Squid 版本後需重複操作。生產環境建議維護補丁文件,構建自定義 RPM/DEB 包。
  • Squid 5.x 可能將錯誤頁面模板化,直接編輯模板文件即可無需改源碼,請參考對應版本文檔。
  • 若 Squid 運行在容器中,確保容器時區正確(TZ=Asia/Shanghai 或掛載 /etc/localtime),否則 %t 仍為 UTC。

結語

將 %T 改為 %t 是讓 Squid 錯誤頁面顯示本地時間的最簡單直接方法。結合自定義錯誤模板目錄,可構建更友好、品牌化的代理訪問體驗。

Copyright © Windows教程網 All Rights Reserved