虛擬機 Lighttpd 監聽 2048 端口 (sockstat 可見),modules.conf 僅啟用 mod_access、mod_accesslog。瀏覽器訪問 https://ip:2048/ 或 /index.html 返回 400。
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
index-file.names 包含 index.html:
index-file.names = ( "index.html", "index.htm", "index.php" )
mod_dirlisting 臨時驗證目錄瀏覽:
server.modules += ( "mod_dirlisting" )
dir-listing.activate = "enable"
訪問 / 若能列出文件,說明文檔根目錄與索引文件配置無誤,**問題在索引文件匹配/權限**。url.rewrite / url.redirect 規則是否誤匹配導致 400:暫時註釋所有重寫規則測試。error.log 詳細錯誤:
tail -f /var/log/lighttpd/error.log
# 400 通常伴隨 "request-header too long" / "invalid request line" / "URI path not found"
curl -v https://ip:2048/ 觀察請求/響應頭,排除瀏覽器緩存/代理干擾。netstat -ntlp | grep 2048 確認僅 lighttpd 監聽。| 誤配 | 現象 |
|---|---|
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 定位具體拒絕原因。