Apacheサーバー設定のトラブルシューティング

Apacheサーバー設定のトラブルシューティング
Apacheサーバー設定のトラブルシューティング

この記事では、Apacheサーバーを運用している時に起こったトラブル解決を備忘録的に紹介します。

client denied by server configurationエラー

Apache のエラーログで「client denied by server configuration:」と出た時の対処法。放っておいても問題はなさそうだが、Apacheのエラーログを見やすくしたいため細かいエラーを徹底的になくしていく。 バーチャルホストでの運営なので、バーチャルホストの設定ファイル、virtualhost.conf を開く。

「Require all granted」を記述するする。

<VirtualHost *:80>
        ServerName hogehoge.xxxxxxxxx.com
        DocumentRoot /somewhere/hogehoge
        <Directory "/somewhere/hogehoge">
            Require all granted
        </Directory>
<VirtualHost>

Apache 再起動。 /etc/rc.d/init.d/httpd restart

これで解決したと思ったが、今度は下記のエラーが出てしまった。 configuration error: couldn't perform authentication. AuthType not set!:

「Require all granted」はApache2.4系の書き方のようだ。 でApacheのバージョンを確認してみる。 httpd -v

やはり2.4以前のバージョンがインストールされていた。 この場合「Require all granted」ではなく「Order allow,deny」「Allow from all」と書くようだ。 なので、最終的な書き方は次のようになる。

<VirtualHost *:80>
        ServerName hogehoge.xxxxxxxxx.com
        DocumentRoot /somewhere/hogehoge
        <Directory "/somewhere/hogehoge">
            Order allow,deny
            Allow from all
        </Directory>
</VirtualHost>

これで解決!と思ったが、またエラーが出てしまった。 client denied by server configuration:

その後、Apacheはやめてnginxへ移行。もっと早く移行しておけばよかったと思うくらい、設定が簡単で快速に動く。 nginxで爆速サーバー構築

バーチャルホストで.htaccessが無視される?

「バーチャルホストのドメインでアクセス」した場合と「メインドメイン + フォルダを指定してアクセス」した場合の動作が、異なることを発見した。前者では.htaccessが読み込まれないようす。原因は「AllowOverride None」を追記したから。下のように「AllowOverride All」としたら.htaccessの設定が反映されるようになった。

<VirtualHost *:80>
        ServerName hoge.xxxxxxxxxxx.com
        DocumentRoot /home/xxxxxxxxxxx/hoge
        <Directory "/home/xxxxxxxxxxx/hoge">
             Options FollowSymLinks
             AllowOverride All
             Order deny,allow
             Allow from all
        </Directory>
</VirtualHost>

Directory index forbidden by Options directiveエラーとFile does not exist favicon.ico

Apacheで発生したアクセスエラーログ。

Directory index forbidden by Options directive: /xxxx/

アクセスされたフォルダに、index.htmlが置かれていないために発生するようだ。 このフォルダにはアクセスされることを想定していないため、空のindex.htmlを置いて解決する。 しかし今度は、ブラウザがfaviconをリクエストするために下記のエラーが発生してしまった。

File does not exist: /xxxx/favicon.ico, referer: http://xxxx.com/

空のfaviconを作成して、index.htmlと同じディレクトリにおけば解決する。

cat /dev/null > favicon.ico

関連記事

最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム