Apache2

apache2 使用 cifs 共享時發送損壞的響應

  • January 7, 2022

我對 ubuntu-instance (Ubuntu 20.04.1 LTS) 和 apache2 (Apache/2.4.41 (Ubuntu)) 有疑問。一個虛擬主機正在從已安裝的 cifs 共享中提供一些 html 文件和文件。cifs-share 工作正常,文件系統上的文件正確。

但是,apache 無法為以二進制形式提供的每種文件類型(如圖像、word 文件、pdf ……)生成正確的響應。例如,當我下載圖像時image.gif,文件被下載並保存到客戶端。在客戶端上使用文本編輯器打開文件時,如下所示:

grade, Keep-Alive
Last-Modified: Thu, 12 Nov 2020 10:01:47 GMT
ETag: "b6b-5b3e600040144"
Accept-Ranges: bytes
Content-Length: 2923
Keep-Alive: timeout=5, max=100
Content-Type: image/gif

GIF89av[binary-string starting...]

因此,部分響應標頭現在位於下載的文件中,這永遠不會發生。我期待下載的文件以GIF89av等等開頭。提供基於文本的文件(如 html)不是問題,並且可以按預期工作。但是,當我將同一文件複製到同一伺服器上另一個虛擬主機的文件根目錄中時,該伺服器不使用已安裝的 cifs-share,該文件被正確提供(其中沒有響應頭)。所以我認為,掛載的 cifs-share 和 apache2 的組合存在一些問題,這會導致該錯誤。

我已經嘗試了有關掛載共享的各種選項 - 但我認為這是正確的,因為這些文件直接在沒有 apache 的文件系統上執行。

共享安裝/etc/fstab如下

//192.168.0.1/share$ /mnt/share cifs username=user,password=pass,dom=contoso.local 0 0

這幾乎是最基本的方法。我體驗過類似的選項iocharset=utf8,嘗試了不同的版本(vers=1.0vers=3.1),但這並沒有改變任何東西。apache 配置也是基本配置,隨 ubunutu 20 一起提供,沒有什麼特別的添加或更改。我對 mime 類型有一些經驗,但是 apache 應該能夠提供開箱即用的圖像。

此外,我在該目錄中啟動了一個 php-webserver ( php -S 192.168.0.2:8000) 進行測試——它返回正確的二進製文件,這讓我很確定,錯誤在 apache 中的某個地方。

是什麼導致了 apache 的這種損壞響應,我該如何解決?

我也有同樣的問題,看來這個問題是最近的,可能與 20.04 中的核心版本有關?我確實也看到了純文字文件的問題。您是否能夠找到解決方案/解決方法?(對不起,我沒有代表發表評論)

編輯:我可以在這裡找到錯誤報告: https ://bugs.debian.org/cgi-bin/bugreport.cgi?bug= 900821 在 apache 配置中設置 EnableMMAP 對我有用:

EnableMMAP off

在“/etc/apache2/apache2.conf”中,添加:

EnableSendfile Off
EnableMMAP off

這救了我的命~

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