Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Apache2.4で、アクセス制限の記述方法が変更されていた

More than 3 years have passed since last update.

事象

Apache2.2をyumインストールしていた環境から、Apache2.4環境に移行するために、2.4をソースビルドでインストールしました。

その際に、必要な設定とあわせてバーチャルホストも設定。2.2の設定内容を、そのままconf/extra/httpd-vhosts.confに記述しました。

conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
  ServerName sandbox
  ServerAdmin test@example.com
  DocumentRoot /home/sandbox/htdocs/
  ErrorLog /home/sandbox/logs/error_log
  CustomLog /home/sandbox/logs/access_log combined

  <Directory /home/sandbox/htdocs>
    Options FollowSymlinks Includes
    AllowOverride All
    AddType text/html .html
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

Apacheを再起動してブラウザで開いたところ、無情にもForbiddenが・・・。

Forbidden

You don't have permission to access /test.html on this server.

ちなみに、error_logには以下の内容が出力されていました。

AH01630: client denied by server configuration: /home/sandbox/htdocs/index.html

原因

ファイル・ディレクトリのパーミッションを疑う

問題ありませんでした。

Apacheの設定ファイルの記述ミスを疑う

どうやら、2.2から2.4では、アクセス許可設定の方法が変わっているらしい・・・。以下、変更内容。

2.2系
<Directory "/home/sandbox/htdocs">
    Order allow,deny
    Allow from all
</Directory>
2.4系
<Directory "/home/sandbox/htdocs">
    Require all granted
</Directory>

ここを古い記述にしていることで、今回と同様のエラーが出ている人がたくさんいる様子。なるほど、そうだったのか・・・。

ちなみにhttpd.confを見ると、ルートディレクトリのアクセス制限の記述は、以下のとおり。

conf/httpd.conf
<Directory />
    AllowOverride none
    Require all denied
</Directory>

デフォルトではアクセス制限がかかるようになっています。それじゃ、アクセスできませんね・・・。

対応

ということで、httpd-vhosts.confRequire all grantedを追記します。

conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
  ServerName sandbox
  ServerAdmin test@example.com
  DocumentRoot /home/sandbox/htdocs/
  ErrorLog /home/sandbox/logs/error_log
  CustomLog /home/sandbox/logs/access_log combined

  <Directory /home/sandbox/htdocs>
    Options FollowSymlinks Includes
    AllowOverride All
    AddType text/html .html

    # ここを変更
    Require all granted
  </Directory>
</VirtualHost>

Apacheを再起動して、再度ブラウザでアクセス。無事に表示されました。

nwsoyogi
フリーのシステムエンジニア。 どこどこJPを作ったり、ネクストエンジンの開発に携わったり、セルフアンケートシステムのSmile Survey(スマイルサーベイ)を育てたり、Twic(ツイック)の立ち上げをしたりしてきました。 今は、フリーランスのエンジニアとして仕事をしつつ、採用メトリクスを企業に導入する適性検査クラウドJobgram(ジョブグラム)の開発にも携わっています。
https://twitter.com/nwsoyogi
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away