1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Apache2.4でバーチャルホストの設定中に403が出てハマった

Posted at

概要

引き継いだ案件で同一サーバー内に別サイトを仕込むとのことで、
バーチャルホストの設定をしようとしたら新しいサイトの方が403エラーが出てしまうといった内容です。

設定内容(失敗の時)

vhost.confには以下のように記載していました。

#既存サイトの設定
<VirtualHost *:80>
  ServerName hogehoge.com
  DocumentRoot /var/www/html/public
  <Directory /var/www/html/public>
    Options FollowSymlinks Includes
    AllowOverride All
  </Directory>
</VirtualHost>

#今回追加した設定
<VirtualHost *:80>
  ServerName fugafuga.com
  DocumentRoot /home/test_user/public
  <Directory /home/test_user/public>
    Options FollowSymlinks Includes
    AllowOverride All
  </Directory>
</VirtualHost>

設定内容(OKの時)

#既存サイトの設定
<VirtualHost *:80>
  ServerName hogehoge.com
  DocumentRoot /var/www/html/public
  <Directory /var/www/html/public>
    Options FollowSymlinks Includes
    AllowOverride All
  </Directory>
</VirtualHost>

#今回追加した設定
<VirtualHost *:80>
  ServerName fugafuga.com
  DocumentRoot /home/test_user/public
  <Directory /home/test_user/public>
  Options FollowSymlinks Includes
  AllowOverride All
  Require all granted       ←追加
  </Directory>
</VirtualHost>

原因

結論:デフォルトのアクセス制限に引っかかっていた。

解説

まずデフォルトの設定を見てみます。

/etc/httpd/conf/httpd.conf

#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
#
<Directory />
    AllowOverride none
    Require all denied
</Directory>

#
# Relax access to content within /var/www.
#
<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

上記を見ると
Directory/配下はデフォルトでRequire all denied。つまりアクセスを拒否しています。

次に
Directory/var/www配下はデフォルトでRequire all granted。つまりアクセスが許可されています。

ということは

以下のどちらかで対応すべきだったということです。
・ドキュメントルートを/var/www配下以外に設定する場合はRequire all grantedでアクセス許可してあげる
・新しいサイトのドキュメントルートを/var/www配下にする

余談

最初は色んな記事を漁っていると「指定しているドキュメントルートまでの権限がないのでは?」というのが多かったです。
なので/home/test_user/publicのパーミッションを全て確認しましたが、どれも許可されていたので結構時間がかかってしまいました。。

他の記事を見るとRequire all grantedがApache2.4から変わったところだそうなので、以前のバージョンの記述をしてハマっている人もいたようです。

WEBサーバーの知識ももっと取り入れたほうがいいですね。勉強させて頂きました。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?