首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Lighttpd 訪問 index 返回 400 Bad Request 的排查清單

     編輯:程式設計綜合問答

現象

虛擬機 Lighttpd 監聽 2048 端口 (sockstat 可見),modules.conf 僅啟用 mod_access、mod_accesslog。瀏覽器訪問 https://ip:2048/ 或 /index.html 返回 400。

核心排查清單

  1. 檢查 server.document-root 路徑權限:
    
    server.document-root = "/var/www/html"
    # 確保 lighttpd 進程用戶(www-data) 可讀
    chown -R www-data:www-data /var/www/html
    chmod -R 755 /var/www/html
        
  2. 確認 index-file.names 包含 index.html:
    
    index-file.names = ( "index.html", "index.htm", "index.php" )
        
  3. 啟用 mod_dirlisting 臨時驗證目錄瀏覽:
    
    server.modules += ( "mod_dirlisting" )
    dir-listing.activate = "enable"
        
    訪問 / 若能列出文件,說明文檔根目錄與索引文件配置無誤,**問題在索引文件匹配/權限**。
  4. 檢查 url.rewrite / url.redirect 規則是否誤匹配導致 400:暫時註釋所有重寫規則測試。
  5. 查看 error.log 詳細錯誤:
    
    tail -f /var/log/lighttpd/error.log
    # 400 通常伴隨 "request-header too long" / "invalid request line" / "URI path not found"
        
  6. 驗證請求行格式:用 curl -v https://ip:2048/ 觀察請求/響應頭,排除瀏覽器緩存/代理干擾。
  7. 端口 2048 是否衝突/被攔截:netstat -ntlp | grep 2048 確認僅 lighttpd 監聽。

常見誤配導致 400

誤配現象
server.document-root 指向不存在目錄404/400 混淆
缺少 index-file.names 或不含實際文件名目錄請求無索引 → 400/403
url.rewrite-once 正則錯誤導致空路徑請求行異常 → 400
請求頭過大超過 server.max-request-size (默認 64MB)400 "request too large"
HTTP/1.1 請求缺少 Host 頭且 server.reject-expect-100-with-417 設置400

最小化可用配置模板


server.modules = ( "mod_access", "mod_accesslog", "mod_dirlisting" )
server.port = 2048
server.document-root = "/var/www/html"
server.errorlog = "/var/log/lighttpd/error.log"
accesslog.filename = "/var/log/lighttpd/access.log"
index-file.names = ( "index.html" )
dir-listing.activate = "enable"
mimetype.assign = ( ".html" => "text/html", ".css" => "text/css", ".js" => "application/javascript" )

總結

Lighttpd 400 多為**文檔根目錄/索引文件/重寫規則/權限**配置錯誤。按清單逐項驗證,啟用 mod_dirlisting 快速隔離問題域,查看 error.log 定位具體拒絕原因。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved