- Webサーバーが外部に公開するファイル群の基点となる最上位ディレクトリのこと。WebブラウザのURLで指定したパスは、このディレクトリを起点としてサーバー内部のファイルに対応付けられる
- ドキュメントルートが「/var/www/html」なら「https://example.com/about/index.html」へのアクセスは「/var/www/html/about/index.html」というファイルを返す仕組みで動く
- ドキュメントルートの外にある設定ファイルや機密ファイルはブラウザからアクセスできないため、公開してはいけないファイルはドキュメントルートの外に置くことがセキュリティの基本原則だ
【深掘り】これだけ知ってればOK!
ドキュメントルートはセキュリティ上の境界線として機能する。例えばデータベースの接続パスワードを含む設定ファイル(config.php等)をドキュメントルート内に置いてしまうと、URLで直接アクセスされてファイルの内容がブラウザに表示されるリスクがある。このようなファイルは必ずドキュメントルートの一つ上の階層など、公開領域の外に置くべきだ。
WordPressをサブディレクトリ(例:https://example.com/blog/)にインストールする場合、ドキュメントルートは「/var/www/html」のまま、WordPressのファイルを「/var/www/html/blog/」に置く形になる。ディレクトリトラバーサル攻撃はドキュメントルートの境界を「../」を使って破ろうとするサイバー攻撃で、適切な設定とバリデーションで防ぐ必要がある。
Nginxでドキュメントルートを変更する場合は設定ファイルの「root」ディレクティブを変更し、「sudo nginx -t」で構文チェックを行ってから「sudo systemctl reload nginx」で設定を反映させる。設定変更後は必ず構文チェックを実施することが安全運用の基本だ。
よくある誤解
URLのパスとドキュメントルートを混同している
ドキュメントルートはサーバー上の物理的なディレクトリパス(例:/var/www/html)を指す。URLのパス(例:/about/index.html)はドキュメントルートを起点にした相対的な位置を示す。URL上に「/var/www」などのサーバー内部のパスが表示されることはない。
ドキュメントルートにファイルをどこでも置いていい
データベース接続情報・パスワード・API秘密鍵を含むファイルをドキュメントルート内に置くと、URLで直接アクセスされて情報漏洩するリスクがある。機密情報を含むファイルはドキュメントルートの外(上の階層)に配置することがセキュリティの基本だ。
会話での使われ方

本番サーバーのドキュメントルートって/var/www/html/ですよね。そこにFTPでファイルをアップロードすればサイトに反映されます。
Web制作者がクライアントにWebサイトのファイルアップロード方法を教えている場面。ドキュメントルートの場所を具体的なパスで示している。




DBの接続パスワードが書いてある設定ファイル、ドキュメントルートの中に置いちゃダメですよ。URLで直アクセスされたら見えちゃいます。一段上の階層に移してください。
シニアエンジニアが新人のセキュリティミスを指摘している場面。機密ファイルの配置場所に関するセキュリティの基本を教えている。




WordPressのドキュメントルートを変更したら403エラーが出ました。DocumentRootの記述だけじゃなくてDirectoryディレクティブも変えてください。
Webエンジニアがサーバー設定変更後のトラブルシューティングで解決策を伝えている場面。設定ファイルの2か所変更という注意点を共有している。
【まとめ】3つのポイント
- WebサーバーがURLをファイルに変換するときの基点となるディレクトリ:ドキュメントルートを起点にURLのパスがサーバー上の物理ファイルに対応付けられるため、この概念を理解することがWebサーバーの動作を理解する出発点だ
- セキュリティの境界線として機密ファイルを外に置く:ドキュメントルートの外にあるファイルはURLでアクセスできないため、データベース接続情報・APIキー・設定ファイルはドキュメントルートの外に配置することがセキュリティの基本原則だ
- DocumentRootとDirectoryディレクティブの両方を変更する:Apacheでドキュメントルートを変更する際はDocumentRootの記述とDirectoryディレクティブのパスの2か所を同時に変更しないと403エラーが発生するため、両方の変更をセットで行うことが鉄則だ
よくある質問
-
QApacheのデフォルトのドキュメントルートはどこですか?
-
A
Linux(Ubuntu/Debian系)では「/var/www/html/」がデフォルトです。Windows(XAMPP)では「C:\xampp\htdocs\」、macOS(Homebrew版Apache)では「/usr/local/var/www/」が一般的なデフォルトのドキュメントルートです。
-
QNginxでドキュメントルートを変更するにはどうすればいいですか?
-
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サーバーの設定解説


コメント