ドキュメントルートとは?Webサーバーが公開ファイルを置く基準ディレクトリ

システム開発・テクノロジー
ドキュメントルートとは?ざっくりと3行で
  • Webサーバーが外部に公開するファイル群の基点となる最上位ディレクトリのこと。WebブラウザのURLで指定したパスは、このディレクトリを起点としてサーバー内部のファイルに対応付けられる
  • ドキュメントルートが「/var/www/html」なら「https://example.com/about/index.html」へのアクセスは「/var/www/html/about/index.html」というファイルを返す仕組みで動く
  • ドキュメントルートの外にある設定ファイルや機密ファイルはブラウザからアクセスできないため、公開してはいけないファイルはドキュメントルートの外に置くことがセキュリティの基本原則だ

【深掘り】これだけ知ってればOK!

ドキュメントルートの設定はWebサーバーの設定ファイルで行う。Apacheでは「httpd.conf」に「DocumentRoot /var/www/html」と記述する。Nginxでは「nginx.conf」に「root /var/www/html;」と記述する。XAMPPのWindowsローカル環境では「C:\xampp\htdocs\」がデフォルトのドキュメントルートだ。

ドキュメントルートはセキュリティ上の境界線として機能する。例えばデータベースの接続パスワードを含む設定ファイル(config.php等)をドキュメントルート内に置いてしまうと、URLで直接アクセスされてファイルの内容がブラウザに表示されるリスクがある。このようなファイルは必ずドキュメントルートの一つ上の階層など、公開領域の外に置くべきだ。

WordPressをサブディレクトリ(例:https://example.com/blog/)にインストールする場合、ドキュメントルートは「/var/www/html」のまま、WordPressのファイルを「/var/www/html/blog/」に置く形になる。ディレクトリトラバーサル攻撃はドキュメントルートの境界を「../」を使って破ろうとするサイバー攻撃で、適切な設定とバリデーションで防ぐ必要がある。

ドキュメントルートを変更するときはApacheの設定ファイルで2か所の変更が必要だ。「DocumentRoot」の記述だけでなく、「Directory」ディレクティブのパスも同じ新しいパスに変更しないと、Apacheがそのディレクトリへのアクセスを拒否する。この点を忘れると「403 Forbidden」エラーが発生する。

Nginxでドキュメントルートを変更する場合は設定ファイルの「root」ディレクティブを変更し、「sudo nginx -t」で構文チェックを行ってから「sudo systemctl reload nginx」で設定を反映させる。設定変更後は必ず構文チェックを実施することが安全運用の基本だ。

よくある誤解

URLのパスとドキュメントルートを混同している

ドキュメントルートはサーバー上の物理的なディレクトリパス(例:/var/www/html)を指す。URLのパス(例:/about/index.html)はドキュメントルートを起点にした相対的な位置を示す。URL上に「/var/www」などのサーバー内部のパスが表示されることはない。

ドキュメントルートにファイルをどこでも置いていい

データベース接続情報・パスワード・API秘密鍵を含むファイルをドキュメントルート内に置くと、URLで直接アクセスされて情報漏洩するリスクがある。機密情報を含むファイルはドキュメントルートの外(上の階層)に配置することがセキュリティの基本だ。

会話での使われ方

ITKAGYO運営者デプロイ太郎のアイコン画像

本番サーバーのドキュメントルートって/var/www/html/ですよね。そこにFTPでファイルをアップロードすればサイトに反映されます。

Web制作者がクライアントにWebサイトのファイルアップロード方法を教えている場面。ドキュメントルートの場所を具体的なパスで示している。

ITKAGYO運営者デプロイ太郎のアイコン画像

DBの接続パスワードが書いてある設定ファイル、ドキュメントルートの中に置いちゃダメですよ。URLで直アクセスされたら見えちゃいます。一段上の階層に移してください。

シニアエンジニアが新人のセキュリティミスを指摘している場面。機密ファイルの配置場所に関するセキュリティの基本を教えている。

ITKAGYO運営者デプロイ太郎のアイコン画像

WordPressのドキュメントルートを変更したら403エラーが出ました。DocumentRootの記述だけじゃなくてDirectoryディレクティブも変えてください。

Webエンジニアがサーバー設定変更後のトラブルシューティングで解決策を伝えている場面。設定ファイルの2か所変更という注意点を共有している。

【まとめ】3つのポイント

  • WebサーバーがURLをファイルに変換するときの基点となるディレクトリ:ドキュメントルートを起点にURLのパスがサーバー上の物理ファイルに対応付けられるため、この概念を理解することがWebサーバーの動作を理解する出発点だ
  • セキュリティの境界線として機密ファイルを外に置く:ドキュメントルートの外にあるファイルはURLでアクセスできないため、データベース接続情報・APIキー・設定ファイルはドキュメントルートの外に配置することがセキュリティの基本原則だ
  • DocumentRootとDirectoryディレクティブの両方を変更する:Apacheでドキュメントルートを変更する際はDocumentRootの記述とDirectoryディレクティブのパスの2か所を同時に変更しないと403エラーが発生するため、両方の変更をセットで行うことが鉄則だ

よくある質問

Q
Apacheのデフォルトのドキュメントルートはどこですか?
A

Linux(Ubuntu/Debian系)では「/var/www/html/」がデフォルトです。Windows(XAMPP)では「C:\xampp\htdocs\」、macOS(Homebrew版Apache)では「/usr/local/var/www/」が一般的なデフォルトのドキュメントルートです。

Q
Nginxでドキュメントルートを変更するにはどうすればいいですか?
A

Nginxの設定ファイルのserverブロック内にある「root」ディレクティブのパスを変更します。設定変更後は「sudo nginx -t」で構文チェックを行い、「sudo systemctl reload nginx」で設定を反映させます。

Q
ドキュメントルートの変更後に403エラーが出るのはなぜですか?
A

Apacheの場合、DocumentRootの変更に加えてDirectoryディレクティブのパスも同じ新しいパスに変更しないと、Apacheがそのディレクトリへのアクセスを拒否します。また新しいディレクトリのパーミッションがWebサーバーのユーザーから読み取れない設定になっている場合も発生します。

Q
ドキュメントルートとドキュメントベースはどう違いますか?
A

「ドキュメントルート」はWebサーバーの設定用語で、公開ファイルの物理的な基点ディレクトリを指します。「ドキュメントベース」はHTMLのbaseタグで指定する、相対URLの解決起点となるURLを指します。似た言葉ですが用途と文脈が異なります。

この用語と一緒に知っておきたい用語

用語 この記事との関連
サーバー サーバーを押さえると本記事の理解がさらに深まります。ネットワークを通じて情報やサービスを提供する側のコンピューターのこと。レストランで料理を運んでくれる給仕係(server)をイメージするとわかりやすいよ
Webサーバ 本記事のテーマと実務上セットで使われることが多い用語です。見たいページを求められると、そのデータを取り出して送り届ける役割を担うコンピュータ、それがWebサーバだ
sudo 次のステップとしてsudoを学ぶと知識が広がります。sudoの主要な特徴と用途を理解することで、関連する技術・制度・概念を正確に把握できるようになる
ブラウザ ブラウザとの関係を知ると全体像がつかみやすくなります。ブラウザというのは、インターネット上のWebページを閲覧するために使うソフトウェアのことだよ。
データベース データベースは関連分野でよく登場する重要キーワードです。データを効率よく蓄積・検索・更新・削除できるよう構造化して管理する仕組みの総称。専用エンジンを持ち大量データを高速操作できる

【出典】参考URL

https://e-words.jp/w/%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%83%AB%E3%83%BC%E3%83%88.html :IT用語辞典 e-Words「ドキュメントルート」
https://www.adminweb.jp/apache/docroot/index1.html :ApacheのDocumentRootディレクティブの使い方
https://10-5.jp/blog-tenfive/3947/ :ドキュメントルートの意味とWebサーバーの設定解説

コメント

「IT用語、難しすぎて心が折れそう……」という方のための、ハードル低めな用語辞典です。

情報レベルは「基礎中の基礎」。会話を止めないためのエッセンスだけを抽出しています。分かりやすさを追求するあまり、時々例え話が暴走しているかもしれませんが、そこは「ほどよく」聞き流していただけると幸いです。
ほどよくIT用語辞典システム開発・テクノロジー
デプロイ太郎のSNSを見てみる!!
タイトルとURLをコピーしました