ディレクトリ(vhost構成)へのアクセスを許可しているにもかかわらず、Apache「クライアントはサーバー構成によって拒否されました」


38

UbuntuのApacheではvhostを設定しましたが、ブラウザでは「403 Access forbidden」エラーが発生し続けます。ログには、「クライアントはサーバー構成によって拒否されました:/ home / remix /」と表示されます

オンラインで解決策を探して、ディレクトリアクセスに関する多くの投稿(すべてから許可するなど)を見つけましたが、私が知っている限りでは、すでにそれを行っています。httpd-vhosts.conf次のコードがあります:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/opt/lampp/htdocs/"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/home/remix/"
    ServerName testproject
    ServerAlias testproject
    <Directory "/home/remix/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

私も追加しました

127.0.0.1    testproject

/ etc / hostsファイルに。

また、/ home / remix /フォルダーにはindex.htmlファイルが含まれており、httpd.confでvhostsが有効になっています。

表示されていないものはありますか?

編集:これはApache error_logエントリです:

[Sat Aug 18 09:15:32.666938 2012] [authz_core:error] [pid 6587] 
[client 127.0.0.1:38873] AH01630: client denied by server configuration: /home/remix/

Apacheのエラーログには何が含まれていますか?
シェーンマッデン

ああ、私は思った私は何かを忘れてしまった...私は最初の投稿にそれを追加しました。
RemiX

どのバージョンのApacheを使用していますか?
シェーンマッデン

Apache / 2.4.2(Unix)
RemiX

回答:


65

許可構成を変更します。

<Directory /home/remix/>
    #...
    Order allow,deny
    Allow from all
</Directory>

...同じApache 2.4バージョンに。

<Directory /home/remix/>
    #...
    Require all granted
</Directory>

必要な他の変更に関する情報については、アップグレードの概要ドキュメントを確認してください。また、Google(およびこのサイト)で見つける構成例と支援のほとんどが2.2を参照していることに注意してください。


2
時間があれば、httpd -tは古い構文を使用しても問題はなく、httpd -Sも使用しないため、これに関するバグを記録します。私の考えでは、構成チェッカーの全体的なポイントは、問題を指摘する必要があるということです!...これを参照していないディレクトリがある場合、それは機能しません-そのように簡単です。...答えに賛成です。
リチャードT

4

ディレクトリの権限を確認してください。たとえば、自分以外のユーザーへのアクセスを拒否するように設定されていると思います。

$ ls -ld /home/remix
drwx------ 92 remix remix 4096 Aug 17 22:59 /home/remix

drwx------正確に表示される場合、これが当てはまります。次を実行して修正します:

chmod a+x /home/remix

なるほど:drwxrwxr-x 2 remix remix 4096 Aug 16 09:36 / home / remix。とにかくコマンドを試しましたが、効果はありませんでした。
RemiX

ああ、すべてを勝ち取ることはできません。
マイケルハンプトン

3

httpdサービスを実行しているユーザーがこのディレクトリにアクセスできることを確認してください。


httpdのユーザーが誰なのか、どのように確認するのかわかりませんが、誰でも読むことができます(user / group / other)。
RemiX

Userparam についてはhttpd.confを確認してください。
cpt。バギー

1
[ユーザーnobody]、および[グループnogroup]と表示されます。「User remix」(フォルダの所有者)に変更してみましたが、それでも役に立ちません。
RemiX

1

「クライアントはサーバー構成によって拒否されました」とは、Linuxサーバー自体がファイルへのアクセスを禁止することを意味し、Apacheではありません。

パーミッション/所有権/グループメンバシップを変更してアクセスを提供しても問題が解決しない場合、ルートの原因は、SELinuxでのApache DocumentRootの再配置で説明されているように、適切なSE Linuxコンテキストを持たないフォルダーへのアクセスをSELinuxが禁止している可能性があります。

  • 一時的にSELinuxを無効にしてsetenforce 0ファイルにアクセスできるようにする場合
  • SELinux setenforce 0を再度有効にすると、ファイルに再びアクセスできなくなります

次に、ファイルのアクセス許可が何であれ、SELinuxによってアクセスが禁止されていることを確認します。


0

人々にこの問題を引き起こす可能性のあるもう1つの単純な(ただし厄介な落とし穴)は、ユーザーディレクトリが/ home / *にない場合です。

提供されたuserdir.confには次のようなものが含まれます(ただし、Userdir:disabledを使用)

$ cat /etc/httpd/conf.d/userdir.conf 
<IfModule mod_userdir.c>
    UserDir enabled
    UserDir public_html
</IfModule>

<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

ディレクトリの仕様では、〜user == / home / userを想定しています。ユーザーのホームディレクトリが実際に存在するディレクトリの仕様を変更または追加するだけです。

かなり明らかですが、理解するのに時間がかかりました!! :-Pダウ!

例:〜user == / nethome / user

<Directory "/nethome/*/public_html">
    AllowOverride All
    Options MultiViews Indexes Includes FollowSymLinks
    Require all granted
</Directory>

一般に、そのディレクトリでのより多くのオープン認証も参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.