web-dev-qa-db-ja.com

Apache:クライアントがサーバー構成によって拒否されました

私はなっています

[Tue Apr 24 12:12:55 2012] [エラー] [クライアント127.0.0.1]クライアントがサーバー設定で拒否しました:/ labs/Projects/Nebula/bin /

私のディレクトリ構造は次のようになっています(私はSymfony 2を使っています、他のWebフレームワークでも同様の構造であるべきです)

enter image description here

私はバーチャルホストを次のように設定しています。

<VirtualHost nebula:80>
    DocumentRoot "/labs/Projects/Nebula/web/"
    ServerName nebula
    ErrorLog "/var/log/httpd/nebula-errors.log"
</VirtualHost>

<Directory "/labs/Projects/Nebula/">
    Options All
    AllowOverride All
    Order allow,deny
    Allow from 127.0.0 192.168.1 ::1 localhost
</Directory>

私はその問題をどうやって解決したのでしょうか。

149
Jiew Meng

OK間違った構文を使っています、使うべきです

Allow from 127.0.0.1
Allow from ::1
...
11
Jiew Meng

Apache 2.4.3(あるいはそれより少し前)は新しいセキュリティ機能を追加しました。 「クライアントはサーバー構成によって拒否されました」という形式のログメッセージも表示されます。この機能は、ディレクトリにアクセスするために承認されたユーザーIDを必要としています。 Apacheに同梱されているhttpd.confのDEFAULTによって有効にされます。あなたはディレクティブで機能の有効化を見ることができます

Require all denied

これは基本的にすべてのユーザーへのアクセスを拒否することを意味します。この問題を解決するには、拒否されたディレクティブを削除する(またはもっと良い方法で)アクセスを許可したいディレクトリに次のディレクティブを追加します。

Require all granted

のように

<Directory "your directory here">
   Order allow,deny
   Allow from all
   # New directive needed in Apache 2.4.3: 
   Require all granted
</Directory>
394
Phil L

Apache 2.4では、古いアクセス許可構文が非推奨になり、Requireを使用して新しいシステムに置き換えられました。

あなたが望むものは次のようなものです:

<Directory "/labs/Projects/Nebula/">
  Options All
  AllowOverride All
  <RequireAny>
    Require local
    Require ip 192.168.1
  </RequireAny>
</Directory>

これにより、ローカルホストまたはipからからeitherを発信する接続が許可されます。 「192.168.1」で始まるアドレス。

構成をすぐに更新したくない場合に、Apache 2.4に古い構文を認識させる新しいモジュールもあります。

Sudo a2enmod access_compat
4
Chirp

「127.0.0 192.168.1 :: 1 localhostからの許可」を「すべてから許可」に変更してみてください。それでも問題が解決した場合は、どこからコンテンツをリクエストできるかについて制限を少なくする必要があります。

1
MauricioOtta

これが私のsymfony 1.4仮想ホストファイルです。

  <Directory /var/www/sf_project/web/>
    Options All Indexes FollowSymLinks    
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

アクセスを特定のIPアドレス範囲に制限したくない場合は、 localhostはこれを使う:

Allow from 127.0.0.0/8

mod_authz_Host はIP範囲のフィルタリングを担当します。あなたはそこで詳細なことを調べることができます。

しかし、おそらく問題はあなたの "Apache2.conf"のある種の設定ミスに関連している可能性があります。

ApacheはどのOSで稼働していますか?

1
cb0

私はVesta CPを使用してこの問題を抱えていたので、私にとっては、トリックは.htaccessを削除してから任意のファイルに再度アクセスしようとすることでした。

その結果、.htaccessファイルが再生成され、ファイルにアクセスできました。

1
Guille Acosta

あなたが持っているなら

Allow from All

それからhttpd.confに

index.php

httpd.confの以下の行のように

DirectoryIndex index.html index.php
1
Satya

私の場合、鍵は次のとおりです。

AllowOverride All

バーチャルホストの定義で。誰かに役立つことを願っています。