web-dev-qa-db-ja.com

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

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

AH01630: client denied by server configuration

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

Sudo chmod 777 -R *

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

<VirtualHost *:80>
ServerAdmin [email protected]

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>
397
Hazem Hagrass

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

726

すべてのディレクトリに対して、Require all grantedの代わりにAllow from allを書き込みます。 Something like

アップデート

上記の方法でうまくいかない場合は、以下の行も削除してください。

注文許可、拒否

294
valera5505

DocumentRootパスが正しいことを再確認してください。それはこのエラーを引き起こす可能性があります。

32
Tim

私はravisorgがApacheをバージョン2.4にアップグレードする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>
21
K.M.

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

これはmacOS用です。

  • 活動モニターに移動します(スポットライトで活動を検索します)。
  • 活動モニターで、Apacheサービスであるhttpdを検索してください。
  • Rootに属するものを選択し、それを閉じるために左上のXをクリックしてください。

その時点で、私はすぐに403エラーを受け取るのをやめ、すべてが期待通りに動作し始めました。変なことに、私はApacheを再起動する必要さえなかった、それはうまくいった、私は自分のローカルホストに行ったときに自分自身を再起動したと思う、正直にもわからないが、問題はapachectl restartを使っても実際に再起動しない、または停止または開始これが誰かに役立つことを願っています。

11
RAC

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

すべて許可する

確認 your config は正しい、ここで正しいサンプル enter image description here

7
Albert.Qing

私は数時間を費やした後に私の自己を解決しました。

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

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

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

  1. <VirtualHost *:80>を追加しました
  2. 追加しました
    オプションインデックスFollowSymLinks
    AllowOverride all
    すべてから許可

それから最後に私はちょうどVMを起動しました..

4
Giri Babu

エラーログを確認してページをリロードすると、正確な問題に関する詳細情報が表示されます。

$ {Apache_LOG_DIR}が実際に動作するように環境変数を取得します。

source /etc/Apache2/envvars

それから尾と見て...

tail -f ${Apache_LOG_DIR}/error.log
4
Shylo Hana

私の場合、

私は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に置き換えます。

4
sh6210

Wamp Serverのデフォルトにhttpd-vhosts.confファイルが含まれていないと誰かが考えていますか。私のアプローチは下記のメモを削除することです

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

httpd.confファイルにあります。それがすべてです。

3
Heier

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
Dev Semicolon

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

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

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

ErrorLog ${Apache_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined
2
RyanNerd

Https Hostがある場合は、ssl configにもRequire all grantedの変更を忘れないでください。

また、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
Putnik

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

あなたのためにこのページの他の答えがどれもうまくいかないならば、これは私が何時間もの周りにいらいらした後に遭遇したものです。

私はSites/private/etc/Apache2/extra/httpd-userdir.confUserDirとして指定して、ユーザー固有の設定を使用しました。しかし、私はエンドポイントhttp://localhost/~jwork/へのアクセスを禁じられていました。

/var/log/Apache2/error_logで、/Users/jwork/Sites/へのアクセスがブロックされていることがわかりました。しかし、私はhttp://localhost/経由でDocumentRootにアクセスすることを許可されていました。これは私が~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
Jamie Birch

Wamp 3(Apache 2.4)の場合、他の答えで説明したようにサーバーをオンラインにすることに加えて、仮想ホストファイルconf/extra/httpd-vhosts.conf
交換する必要があるかもしれません

Require local

Require all granted



httpd.confにあなたが

Include conf/extra/httpd-vhosts.conf
1
Alex Pandrea

私のようにこのエラーに立ち往生していて、上から助けられたことがない人のために:error.logからの問題のフォルダーが実際にあなたのサーバーに存在するかどうかチェックしてください。地雷はDjangoによって間違った場所に自動的に生成されていました(静的ルートでmanage.py collectstaticに惑わされていました)。なぜエラーを正しく命名できないのかわからない。

0
Dmitry

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

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

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

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

0
AdheneManx

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

Sudo a2enmod cgi
0
hfmanson

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

要求されたパスが/home/user-foo1bar/www/myproject/である場合、次のマッチャーは一致しません

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

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

0

この原因としては、主な設定ファイル(.htaccessではなく)にある、内部のmod_rewriteルールが、サーバーファイルシステムのルートに存在するパスに書き込むことが挙げられます。あなたのサイトに/mediaディレクトリがあり、あなたが次のように書き直すとしましょう。

RewriteRule /some_image.png /media/some_other_location.png

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

0
Nigel B. Peck

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

0

問題は、ディレクティブが<ディレクトリ>の下にないことが考えられます。

https://httpd.Apache.org/docs/2.4/mod/mod_authz_Host.html#requiredirectives

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

0
Sérgio

これが私がそうであったように周りの誰かがグーグルを助けるのであれば、私は私のサーバー上のSVGファイルにアクセスしようとしているこのエラーメッセージを持っていました。 https://example.com/images/file.svg 。他の種類のファイルでも問題ないようでした。SVGだけが失敗していました。

私は/etc/httpd confファイルを探し回り、すべてのrequire all deniedタイプの設定をチェックしましたが、どの設定がこの効果を持っているのか見つけることができませんでした。

LogHevelをVirtualHost設定でデバッグするようにして、mod_authz_coreロギングが 'Require all denied'が有効であることを指定しているのを見ることができました:

[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」フォルダでのみ失敗しました。 。これにより、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
Neek