◆ 現象が起きる fedora 31 をホストにした Docker 環境だと別 OS でも起きる
◆ ↑の fedora 31 以外だと同じ OS でも起きていない

前回調べた結果 「fedora 31 の Apache でネットワーク経由でマウントしたフォルダを DocumentRoot にすると発生する」 としていましたがそうでもないようです

手順

Docker 環境を使って簡単に再現させるための手順を用意しました

まず起動では cifs mount を可能にするため --cap-add オプションをつけます

docker run --cap-add SYS_ADMIN --cap-add DAC_READ_SEARCH -it fedora

Docker 内部の処理はこれです

dnf install cifs-utils httpd nano
mount -t cifs -o username=user,password=pass //win-pc/public /mnt
nano /etc/httpd/conf/httpd.conf
httpd

mount で指定している //win-pc/public のところを Windows の公開フォルダの合わせて書き換えます
公開フォルダの中に docroot フォルダを作って中に 1.html を配置します

<h1>1</h1>

nano で編集する部分は以下のテキストを最後に追記するだけです
>> リダイレクトでもいいかもしれません

DocumentRoot /mnt/docroot
<Directory /mnt/docroot>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
</IfModule>

これで起動したサーバにアクセスします

[root@261f5b87d9fc /]# curl http://localhost/1.html
curl: (1) Received HTTP/0.9 when not allowed

再現していますね

fedora 31 経由すると

これを fedora 31 のホストで CentOS 7, CentOS 8, fedora 27, fedora 31 のコンテナを使って試したところ全てで再現しました
この fedora 31 のホスト自体でも Apache の問題は起きています

また 非 Docker 環境の CentOS 7 と CentOS 8 と fedora 27 では発生しませんでした

ホストの fedora 31 も VM で 非 Docker 環境の CentOS 7 と 8 は fedora 31 と同じホストで動作しています
非 Docker の fedora 27 は VM ですが fedora 31 などとは別の物理マシンです

まとめると

- 物理マシン
- fedora 31 ✖
(Docker)
- CentOS 7 ✖
- CentOS 8 ✖
- fedora 27 ✖
- fedora 31 ✖
- CentOS 7 ✔
- CentOS 8 ✔
- 物理マシン
- fedora 27 ✔

fedora 31 を通すと Docker 環境でもおかしくなるようです
一応マウントはコンテナ内でネットワーク経由で行うようにしているので ホストの影響は受けなそうなのですけどね
Docker だと内部ではホストでマウントしてそれをコンテナからアクセス可能にするような動きなんでしょうか

この fedora 31 だけがおかしいのかもしれませんが 他に fedora 31 を入れて試すのも面倒なので fedora 31 全体の問題なのか この環境だけの問題なのかはわかってません