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


429

ブラウザを介してlocalhostにアクセスしようとすると、このエラーが発生します。

AH01630: client denied by server configuration

サイトフォルダーのアクセス許可を次の方法で確認しました。

sudo chmod 777 -R *

これが私の設定ファイルです:

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /home/user-name/www/myproject
<Directory />
    Options FollowSymLinks
    AllowOverride all
    Allow from all
</Directory>

<Location />
  Allow from all
  Order Deny,Allow
</Location>

<Directory  /home/user-name/www/myproject/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    Allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride all
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride all
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>


1
新しいApache 2.4を使用していますか?どのパスがそのエラーを出しますか?
aadel 2013

12
設定を更新する必要があるようです。こちらをご覧ください:httpd.apache.org/docs/2.4/upgrading.html#run-time
aadel


7
chmod 777(おそらく)例でのみ使用されている場合でも、非常に悪い習慣です。
Antonis Christofides

3
chmod 777が答えになることは決してありません。
アーロンマクミリン2017年

回答:


770

Apache 2.4を使用している場合

許可と拒否のルールを確認する必要があります

http://httpd.apache.org/docs/2.4/upgrading.html#accessを確認してください。

2.2では、クライアントのホスト名、IPアドレス、およびクライアント要求の他の特性に基づくアクセス制御は、Order、Allow、Deny、およびSatisfyのディレクティブを使用して行われました。

2.4では、このようなアクセス制御は、新しいモジュールmod_authz_hostを使用して、他の認証チェックと同じ方法で行われます。

新しいディレクティブはRequireです。

2.2構成:

Order allow,deny
Allow from all

2.4構成:

Require all granted

また、これらの変更後、Apacheサーバーを再起動することを忘れないでください(# service httpd restart


2
Apache 2.4を使用したOSX 10.10 Yosemiteの動作
Matthew Herbst

2
何を構成する(つまり、「すべて許可」はどこに行くのか?.confファイルで?)
Alexis

1
@Alexisディレクトリ(または場所)。次の回答のスクリーンショットを参照してください。
見知らぬ人、2015

2
私の場合、エラーDocumentRoot<Directory>パスがあります。
ローマン・グリニョフ2017年

4
注意すべき点の1つ:構成をオンラインで参照している場合、それらがOrder allow,deny ...との両方を使用している可能性がありRequire all grantedます。うまくいきません。バージョンによっては、これらのいずれかである必要があります。それが、私が最初に問題を解決するのを妨げていた理由です。
Vishnu Narang 2017

299

すべてのディレクトリについて、次のRequire all granted代わりに書き込みますAllow from all 何かのようなもの

更新

上記が機能しない場合は、以下の行も削除してください。

注文を許可、拒否


14
Order allow,denyもラインを削除した後、私のために働きました。
kasperd 2014

注意:HTTPSの使用中に、ポートのVirtualHostを構成する 443の<Location /media> Require all granted </Location>default-ssl.confている間、CSSをロードするために同じ構成を複製 する必要がありました。(私の問題は、ログインページにはアクセスできたが、CSSも他のメディアファイルもロードされなかったことでした...)
yuric

1
Apache 2.4を使用したOSX 10.10 Yosemiteの動作
Matthew Herbst

7
ログに何も出力されずに誰かがApache設定を壊したときにそれを嫌うのは私だけです。(ねえ男の子、Allow from All理由から引退しました...理由...)
ウォーレンP

おかげで-「注文許可、拒否」の削除が役立ちました
srvy 2017

34

DocumentRootパスが正しいことを再確認してください。このエラーが発生する可能性があります。


3
具体的には、DocumentRoot宣言に末尾のスラッシュがないため、これが私の問題であることがわかりましたが、<Directory>ブロックで使用していました。大文字小文字の違いもありました。これら2つの値を相互に(末尾のスラッシュなしで)カーボンコピーにすると、完全に機能しました。
Adam Tuttle、

その場合は(はい、また....ここに起こった)あなたは中follwingラインを見つけることができますapache/logs/error.logAH00112: Warning: DocumentRoot [E:/xampp/htdocs/website/frontend/web] does not exist
Piemol

私の誤字の間違いについても答えを見つけることができるとは信じられません。
Taher

21

Apacheをバージョン2.4にアップグレードするために、ravisorgがOSX 10.10 Yosemiteに提案したのと同じ変更を行いました。以下は、http.confに追加された変更です。

<Directory />
    AllowOverride none
    Require all denied
</Directory>

<Directory /Volumes/Data/Data/USER/Sites/>
    AllowOverride none
    Require all granted
</Directory>

11

これは1日半の間、私を完全に混乱させましたが、他のすべての解決策がうまくいかなかった場合の解決策を見つけました。

これはmacOS用です。

  • アクティビティモニターに移動します(スポットライト検索:アクティビティ)
  • アクティビティモニターで、Apacheサービスであるhttpdを検索します
  • ルートに属するものを選択し、左上のXをクリックして閉じます。

その時点で、403エラーがすぐに出なくなり、すべてが期待どおりに機能し始めました。奇妙なことに、私はそれが機能したapacheを再起動する必要さえなかった、私は自分のローカルホストに行ったときにそれ自体が再起動したと思う、正直に知らないが、問題はapachectl restartを使用するとApacheが実際に再起動しないことだと思う、または停止または開始します。これが誰かを助けることを願っています。


1
時間の無駄な時間の後に、これは私の問題も解決したものです。
ever.wakeful 2015

10

問題はVirtualHostにありますが、おそらくありません

すべての許可が必要

設定を確認するが正しいことを、これは正しいサンプルです ここに画像の説明を入力してください


<Directory ...> ... </Directory>以前にApache構成で定義されていなかったディレクトリパスを使用していたため、これらの行を含めるとうまくいきました。
Don Wilson、

4

エラーログをテールにし、ページをリロードすると、正確な問題に関するいくつかの詳細情報が表示されます。

$ {APACHE_LOG_DIR}が実際に機能するように環境変数を取得します...

source /etc/apache2/envvars

それから尾を見て...

tail -f ${APACHE_LOG_DIR}/error.log

5
これはログからのエラーです:「AH01630:クライアントはサーバー構成によって拒否されました」
Hazem Hagrass

おそらく、これを確認したいことがあります:httpd.apache.org/docs/2.4/upgrading.html#accessと、この:stackoverflow.com/questions/12759854/...
Shylo花

6
LogLevel debugVirtualHostに追加する場合は、「Require all denied:denied」や「<RequireAny>:denied」などの行が表示されるので、これは良いアドバイスです(つまり、「クライアントがサーバー構成によって拒否された」よりもはるかに便利です)。実際にどの構成が表示されるかについてです!)
Darren Cook

4

私は数時間を過ごした後、自分を解決しました。

私はvagrant vmのcoookbookを通じてApache / 2.4.7(Ubuntu)をインストールしました。

/etc/apache2/apache2.confファイルには<VirtualHost *:80>、デフォルトでは要素がありません。

私はそれを成し遂げるために2つの変更をしました

  1. 追加された <VirtualHost *:80>
  2. 追加された
    オプションインデックスFollowSymLinks
    AllowOverride all
    Allow from all

その後、最後にvmを起動しました。


4

そのwampサーバーのデフォルトがhttpd-vhosts.confファイルを含まないことについて誰かが考えましたか?私のアプローチは以下のメモを削除することです

 conf
  # Virtual hosts
  Include conf/extra/httpd-vhosts.conf

httpd.confファイル。以上です。


1これは、同様に私のために働いたが、おそらくよりよい解決策を維持することですconf/extra/httpd-vhosts.conf、それでファイルを交換するとRequire localしてRequire all granted
アレックスPandrea

4

私の場合、

私はmacOS Mojave(Apache / 2.4.34)を使用しています。/etc/apache2/extra/httpd-vhosts.confファイルの仮想ホスト設定に問題がありました。必要なディレクトリタグを追加した後、問題は解決しました。

すべての許可が必要

完全な仮想ホストのセットアップ構造があなたを救ってくれることを願っています。

<VirtualHost *:80>
    DocumentRoot "/Users/vagabond/Sites/MainProjectFolderName/public/"
    ServerName project.loc

    <Directory /Users/vagabond/Sites/MainProjectFolderName/public/>
        Require all granted
    </Directory>

    ErrorLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-error_log"
    CustomLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-access_log" common
</VirtualHost>

MainProjectFolderNameを正確なProjectFolderNameに置き換えてください。


2

これは私を夢中にさせていました。最終的に問題が何であるかを理解しました:エラーログに直接パスを使用していて、それらは間違っていました。

なぜApacheは漠然とした(そして間違った)エラーメッセージを表示するのですか?代わりに、次のような正しく有用なエラーメッセージを使用してください。ErrorLogディレクティブのパス "/wrong/path/and/filename.log"は無効です。

とにかく、修正するには、エラーログディレクティブが次のようになっていることを確認してください。

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

2

Windows OSのWampServerでApache 2.4を使用している場合。

https-vhosts.confファイルをメモ帳で開く必要があります。

C:\wamp64\bin\apache\apache2.4.37\conf\extra\https-vhosts.conf 

上記のファイルが見つからない場合。下のスクリーンショットを確認してください Wampserver apacche 2.4 httpd-vhosts

 <VirtualHost *:80>
     ServerName localhost
     DocumentRoot c:/wamp64/www
     <Directory  "c:/wamp64/www/">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

上記のコードで置き換え

Require local

Require all granted

そしてそれを保存します。Apacheサービスを再起動して、再試行してください。


2

私にとって、私は実際には2.4標準に基づいて許可と拒否のルールを更新していました。

Require all granted

ただし、それでも同じAH01630エラーが発生しました。別のスレッドを見つけ、apache2の再インストールを提案しました。どういうわけかこれはうまくいった!誰かが理由を説明したいのであれば、それは役に立ちます。

クレジット:AH01630:サーバー構成によってクライアントが拒否されましたが、すべての許可が設定されている必要があります(Apache 2.4、CentO)


1

あなたがhttpsホストを持っているなら、作ることを忘れないでください Require all granted、ssl変更。

また、apacheユーザーとして権限を確認すると便利な場合があります。

# ps -eFH | grep http # get the username used by httpd
...
apache   18837  2692  0 119996 9328   9 10:33 ?        00:00:00     /usr/sbin/httpd -DFOREGROUND
# su -s/bin/bash apache # switch to that user
bash-4.2$ whoami
apache
bash-4.2$ cd /home
bash-4.2$ ls
bash-4.2$ cd mysite.com
bash-4.2$ ls
bash-4.2$ cat file-which-does-not-work.txt

1

Wamp 3(Apache 2.4)の場合、他の回答で説明されているようにサーバーをオンラインにする以外に、仮想ホストファイルでconf/extra/httpd-vhosts.conf
置き換える必要がある場合があります。

Require local

Require all granted



これはhttpd.confあなたが持っている場合に適用されます

Include conf/extra/httpd-vhosts.conf

1

Ubuntuを使用する場合は、CGIモジュールが有効になっているかどうかを確認してください。そうでない場合:

sudo a2enmod cgi

CGIモジュールを有効にする必要があります。プログラムがようやく機能しました。
スティーブR.

1

ユーザー固有の設定が含まれていることを確認してください!

このページの他の答えがどれも機能しない場合は、何時間も悩みの末に私が遭遇したものをここに示します。

私はでSites指定されているユーザー固有の構成を使用しUserDirました/private/etc/apache2/extra/httpd-userdir.conf。ただし、エンドポイントへのアクセスは禁止されていましたhttp://localhost/~jwork/

への/var/log/apache2/error_logアクセス/Users/jwork/Sites/がブロックされているのがわかりました。ただし、を介してDocumentRootにアクセスすることは許可されていましたhttp://localhost/。これは、~jworkユーザーを表示する権限がないことを示唆しています。しかし、ps aux | egrep '(apache|httpd)'lsof -i :80でわかる限り、Apacheはjworkユーザーのために実行されていたため、ユーザー設定で何かが明らかに書き込まれていませんでした。

という名前のユーザーがいる場合jwork、これが私の設定ファイルです:

/private/etc/apache2/users/jwork.conf

<Directory "/Users/jwork/Sites/">
    Require all granted
</Directory>

この構成は完全に有効です。ただし、ユーザー構成が含まれていないことがわかりました。

/private/etc/apache2/extra/httpd-userdir.conf

## Note how it's commented out by default.
## Just remove the comment to enable your user conf.
#Include /private/etc/apache2/users/*.conf

これはuserdir confファイルへのデフォルトパスですが、以下に示すように、で構成可能であることに注意してくださいhttpd.conf。次の行が有効になっていることを確認します。

/private/etc/apache2/httpd.conf

Include /private/etc/apache2/extra/httpd-userdir.conf

# ...

LoadModule userdir_module libexec/apache2/mod_userdir.so

1

私と同じようにこのエラーで立ち往生していて、上から何の助けもない人のために:error.logの問題のフォルダが実際にサーバーに存在するかどうかを確認してください。鉱山はDjangoによって間違った場所で自動的に生成されました(静的ルートで混乱しましたmanage.py collectstatic)。なぜエラーに正しく名前を付けることができないのかわからない。


私の脳を使うように思い出させてくれてありがとう、私の問題を修正しました。+1 haha
オレンジキャタピラー

0

他の回答で言及されている欠落OrderしているAllowディレクティブと並んで、DirectoryMatchディレクティブの一致しない正規表現もこのエラーを引き起こす可能性があることに注意してください。

リクエストされたパスが以下/home/user-foo1bar/www/myproject/のマッチャーである場合、一致しません

<DirectoryMatch "/home/user-[a-z]+/www/myproject/">
...
</DirectoryMatch>

したがって、有効なアクセス構成でもこのエラーが発生する可能性があります。


0

(これに対処しただけの)不明な1つの原因は、サーバーファイルシステムのルートに存在するパスに書き込むメイン構成ファイル(.htaccessではない)の内部mod_rewriteルールです。あなたが持っていると言う/mediaあなたのサイトにディレクトリを、あなたはこのような何かを書き換えます:

RewriteRule /some_image.png /media/some_other_location.png

/mediaサーバーのルートにディレクトリがある場合、ファイルシステムのルートが最初にmod_rewriteによってチェックされ、存在するかどうかが確認されるため、サイトディレクトリのディレクトリではなく、そのディレクトリへの書き換えが試行されます(アクセス拒否エラーが発生します)。パスの最初のディレクトリの、サイトディレクトリの前。


0

問題は、ディレクティブが<Directory>の下にないことである可能性があります

https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html#requiredirectives

ディレクティブは、<Directory>、<Files>、または<Location>セクション内で参照でき、サーバーの特定の部分へのアクセスを制御するために.htaccessファイルも使用できます。クライアントのホスト名またはIPアドレスに基づいてアクセスを制御できます。


0

誰かに役立つかもしれない別のものを得た。PHP 5.6 => 7.0からアップグレードした後、同じエラーメッセージを受け取りました。PHPのアップロード設定を変更しましたが、コピー後に変更するのを忘れていました。当時は画像をアップロードしていませんでしたが、Silverstripe(CMS)は保存を拒否し、そのエラーをスローしていました。画像のアップロードサイズを大きくすると、すぐに機能しました。


0

これが私と同じように誰かがググるのに役立つ場合、このエラーメッセージがサーバー上のSVGファイル(https://example.com/images/file.svgなど)にアクセスしようとしました。他のファイルタイプは問題ないようでしたが、SVGだけが失敗していました。

私は/etc/httpdconfファイルを探し回り、すべてのrequire all deniedタイプの構成をチェックしましたが、どの構成がこの影響を及ぼしているのかを見つけることができませんでした。

VirtualHost構成でデバッグするようにLogLevelを変更しましたが、 'Require all denied'が有効であることを示すmod_authz_coreロギングを確認できました。

[Mon Jun 10 13:09:54.321022 2019] [authz_core:debug] [pid 23459:tid 140576341206784] mod_authz_core.c(817): [client 127.0.0.1:54626] AH01626: authorization result of Require all denied: denied
[Mon Jun 10 13:09:54.321038 2019] [authz_core:debug] [pid 23459:tid 140576341206784] mod_authz_core.c(817): [client 127.0.0.1:54626] AH01626: authorization result of <RequireAny>: denied
[Mon Jun 10 13:09:54.321082 2019] [authz_core:error] [pid 23459:tid 140576341206784] [client 127.0.0.1:54626] AH01630: client denied by server configuration: /home/blah/htdocs/images/file.svg

ブラインドテストにより、ファイルをWebルートのルートに移動し、https://example.com/file.svg .. でアクセスできることを確認したため、「images」フォルダーでのみ失敗しました。これにより、イメージフォルダーにある.htaccessファイルがあり、そこにあるとは思いもしませんでした。

Zen Cart 1.5には、以下のものが含まれるimages / .htaccessファイルが付属しています。

# deny *everything*
 <FilesMatch ".*">
   <IfModule mod_authz_core.c>
     Require all denied
   </IfModule>
   <IfModule !mod_authz_core.c>
     Order Allow,Deny
     Deny from all
   </IfModule>
 </FilesMatch>

 # but now allow just *certain* necessary files:
 <FilesMatch "(?i).*\.(jpe?g|gif|webp|png|swf)$" >
   <IfModule mod_authz_core.c>
     Require all granted
   </IfModule>
   <IfModule !mod_authz_core.c>
     Order Allow,Deny
     Allow from all
   </IfModule>
 </FilesMatch>

これは非常に迷惑で、このようなトムフーラリが起こっている場合に、アクセスできないファイルにつながるファイルシステムのすべてのレベルで.htaccessファイルを確認するように他の人に思い出させてくれることを願っています


0

これを実際に解決するには、ディレクトリアクセスを:80エントリに追加します。

 <Directory "c:/whatever-directory-you-use/">
    AllowOverride All
    Require all granted
</Directory>

誰もが私にすべての「セキュリティ」を得る前に、私の特定の状況下では、これはセキュリティの問題ではありません。

リモートリソースを使用している場合は、代わりにCURLリクエストがHTTPS / TLSを経由することを確認し、このディレクトリエントリが443ポートを経由するようにすることをお勧めします。


0

この「バグ」は、実際にはApache 2.4の新しい通常の動作です。私の場合、 "。"で始まる名前のフォルダーまたはファイルへのアクセスを拒否する非常に具体的なルールがあったため、そのような奇妙な名前を必要とする特定のパブリックフォルダーに例外を設定する必要がありました。

記録のために、私の特定の書き換えルールは次のとおりです。

RewriteRule "(?!\.trusted)(^|/)\." - [F]

この規則は、「。」で始まるすべてのものに[F]従います。しかし.trusted、正規表現「?!」の魔法のおかげで 否定。


0

このスレッドは、言及されたエラーを検索するときに最初にポップアップするものであるため、このエラーの別の考えられる原因を追加したいと思います。 mod_evasiveアクティブで、このエラーを表示しているクライアントが、mod_evasive.conf

これは、以前に問題がなく、他に何も変更されていないクライアントで突然このエラーが発生する場合は、調査する価値のある原因です。

mod_evasive原因である場合、クライアントがサイトへのアクセスの試行を一時的に停止すると、エラーは自然に解消します。ただし、制限が厳しすぎることを示している可能性があります)


0

私にとって、提案されたすべてのソリューションは機能しません。これは、cgi、fastcig、またはfpmをプロキシとして使用する場合に役立ちます。この問題を回避するには、vhostに場所を追加する必要があります。これにより、404をパススループロキシにすることができます。

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