Apacheは仮想ホスト上で403を提供します。

Apacheは仮想ホスト上で403を提供します。

私はCentOS 7でApacheをマスターしようとしてきました。

2つの仮想ホストを設定し、次のデフォルトのindex.htmlページを作成しました。

/var/www/domainA/public_html/index.html

/var/www/domainB/public_html/index.html

両方のホストには次の権限があります。

ドメインA:

public_html -> jonathan:jonathan
index.html -> root:root

ドメインB:

public_html -> jonathan:jonathan
index.html -> root:root

DomainAのindex.htmlページは正常に動作しますが、Domain Bのindex.htmlでは403 Forbiddenが表示されます。

DomainB の error.log は以下を提供します。

AH00132: file permissions deny server access: /var/www/DomainB/public_html/index.html

なぜこれが起こるのですか?これは私をとても悲しくさせます。

答え1

問題は、ファイル/フォルダ権限自体ではなく、機能しないドメインのセキュリティコンテキストにあることがわかりました。

私の限られた理解によれば、Apacheがファイルを提供するためにファイル/フォルダをコンテキストで実行するように設定する必要がありますhttpd_sys_content_d

私の「エラー」は、機能しないドメインが私の開発領域からApacheコンテンツフォルダに移動さ​​れ、正しいセキュリティコンテキストがないため、Apacheがファイルを提供できないことです。これは、フォルダとサブフォルダで実行することによって確認ls -Zされました。public_html

一度chcon -R -t httpd_sys_content_t public_html/正しいセキュリティコンテキストを設定し、Apacheはすべてを提供しています。

答え2

chcon -R -t httpd_sys_content_t <Your_Document_Root_Dir>

トリックを行う必要があります

関連情報