初心者でも安心!Webサーバーの設定ファイル完全ガイド

目次

はじめに

目的

本書はWebサーバーの設定ファイルの読み方と書き方をやさしく解説します。ApacheとNginxを中心に、ファイルの構成、よく使う設定項目、具体的な設定例、設定の確認方法まで順を追って説明します。

対象読者

初めてWebサーバー設定に触れる方から、日常的に運用するエンジニアまで役立ちます。専門用語は最小限にし、具体例を多く示します。

本書の使い方

章ごとに設定の背景と具体例を示します。設定を変更する前は必ず元のファイルのバックアップを取り、テスト環境で動作確認してください。例: cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

注意点

構成はOSや配布パッケージで異なります。ここでは一般的な配置や代表的な設定を紹介します。実際の運用では必ず動作確認を行ってください。

Webサーバー設定ファイルの基礎知識

概要

Webサーバーは設定ファイルで動作を決めます。Apacheは主にhttpd.confや複数の分割ファイルで構成し、一般に/etc/httpd/や/etc/apache2/に配置されます。Nginxはnginx.confを中心に、ディレクティブとコンテキスト(http→server→location)で設定します。

設定ファイルの場所と種類

  • Apache: /etc/httpd/conf/httpd.conf や /etc/httpd/conf.d/*.conf など。ユーザーごとの設定は.htaccessで行えます。
  • Nginx: /etc/nginx/nginx.conf と /etc/nginx/conf.d/*.conf。仮想ホストはserverブロックで定義します。

基本的な構成要素(具体例で説明)

  • ディレクティブ: 動作を指示する1行の命令です。例: Apacheでは「Listen 80」、Nginxでは「listen 80;」と書きます。
  • コンテキスト: 指令の適用範囲です。Nginxはhttp, server, locationの階層が分かりやすいです。Apacheはグローバル、VirtualHost、Directoryなどのスコープがあります。

読み込み順と優先度

一般により細かいスコープの設定が優先されます。たとえばApacheのVirtualHost内やNginxのserver内で定義した設定は、グローバル設定を上書きします。includeで読み込む順番も影響するため、設定ファイル名やフォルダ構成に注意してください。

編集時の注意点

  • 編集前に必ずバックアップを取ってください。
  • 設定変更後は構文チェックを行います(Apache: apachectl configtest、Nginx: nginx -t)。
  • 再起動ではなくリロードで反映することが多いです(サービスの中断を抑えます)。
  • ファイルの権限や文字コードはUTF-8が無難です。

よく使う簡単な例(説明)

  • Apacheの例: Listen 80、DocumentRoot “/var/www/html” を設定し、VirtualHostでドメイン別に割り当てます。
  • Nginxの例: httpブロック内に server { listen 80; server_name example.com; root /usr/share/nginx/html; location / { try_files $uri $uri/ =404; } }

以上が設定ファイルの基礎知識です。次章では各サーバーの主要な設定項目を詳しく見ていきます。

Apache設定ファイルの主要な設定項目

概要

Apacheは「ディレクティブ」と呼ばれる設定で動作を制御します。ここではよく使う主要項目を、具体例を交えてやさしく説明します。

基本のディレクティブ

  • Listen
  • サーバーが待ち受けるポートを指定します。例: Listen 80
  • ServerName
  • サイトのホスト名を指定します。例: ServerName www.example.com:80
  • DocumentRoot
  • 公開するファイルが置かれるディレクトリです。例: DocumentRoot “/var/www/html”
  • DirectoryIndex
  • 既定のファイル名を指定します。例: DirectoryIndex index.html index.php
  • ErrorLog / CustomLog
  • エラーログとアクセスログの出力先を指定します。

仮想ホスト (VirtualHost)

複数サイトを同じサーバーで動かすときに使います。name-based仮想ホストが一般的です。
例:

<VirtualHost *:80>
  ServerName site.example.com
  DocumentRoot "/var/www/site"
</VirtualHost>

SSL/TLS の基本

HTTPS用の設定はポート443で行います。代表的な設定:
– SSLEngine on
– SSLCertificateFile /path/to/cert.pem
– SSLCertificateKeyFile /path/to/privkey.pem

ディレクトリ単位の制御

で細かい権限やオプションを設定します。例: Options, AllowOverride, Require
例:

<Directory "/var/www/html">
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
</Directory>

リライトやモジュール

URLの書き換えにはmod_rewriteを使います。RewriteEngine on の後にRewriteRuleを記述します。必要なモジュールはLoadModuleやa2enmodで有効化します。

簡単な設定例 (httpd.conf抜粋)

Listen 80
ServerName localhost
DocumentRoot "/var/www/html"
ErrorLog "/var/log/httpd/error.log"

注意点

設定変更後は必ず構成テスト(apachectl configtest)を行い、問題なければ再起動します。ファイルやディレクトリの権限も確認してください。

Nginx設定ファイルの主要な設定項目

基本の構造

Nginxはブロックで設定します。上位にeventshttp、その中にserver、さらにlocationが入ります。見通しが良いので用途別に分割して管理します。

主要ディレクティブ(例付き)

  • worker_processes:並列処理数です。例: worker_processes auto;(CPUコア数に合わせます)。
  • worker_connections:1プロセスあたりの接続数。例: worker_connections 1024;
  • server_name:ホスト名を指定します。例: server_name example.com www.example.com;
  • listen:待ち受けポートやアドレス。例: listen 80;
  • root / index:コンテンツの場所と優先ファイル。例: root /var/www/html; index index.html index.php;
  • location:URLごとの振り分け。例: location /images/ {}。正規表現も使えます。
  • try_files:ファイル存在時の振る舞い。例: try_files $uri $uri/ =404;
  • proxy_pass:リバースプロキシ設定。例: proxy_pass http://backend;
  • upstream:バックエンドのグループ化に使います。
  • client_max_body_size:アップロード上限。例: client_max_body_size 10M;
  • access_log / error_log:ログの出力先とレベル。
  • gzip / keepalive_timeout:通信の最適化に関する設定。
  • include:別ファイルを読み込むと運用が楽になります。

具体的な値は用途と負荷で変わります。まずは最低限の設定から始め、順に調整してください。

実践的な設定例

概要

静的ファイル(画像・CSS・JS)を短期間キャッシュさせる設定例を示します。ここではApacheのFilesMatchを使い、対象拡張子に対してCache-ControlとExpiresを86400秒(1日)に設定します。

設定例(VirtualHostや.htaccessに追記)

<IfModule mod_expires.c>
  <FilesMatch "\.(jpg|jpeg|png|gif|css|js)$">
    ExpiresActive On
    ExpiresDefault "access plus 1 day"
  </FilesMatch>
</IfModule>
<IfModule mod_headers.c>
  <FilesMatch "\.(jpg|jpeg|png|gif|css|js)$">
    Header set Cache-Control "public, max-age=86400"
  </FilesMatch>
</IfModule>

置き場所と注意点

  • サイト全体ならVirtualHost設定に入れると効率的です。小規模なら.htaccessでも動きます。
  • mod_expiresとmod_headersを有効にしてください。
  • 長期間キャッシュすると更新が反映されにくくなるため、ファイル名にバージョン(ハッシュ)を付けて運用すると安全です。

確認方法

curl -I https://example.com/path/file.js でCache-ControlとExpiresヘッダを確認します。

設定ファイルの確認とテスト

概要

設定変更後は必ず確認とテストを行います。ここでは構文チェック、動作確認、接続試験、ログ確認までの流れを分かりやすく説明します。

1. 構文チェック(まず行うこと)

  • Apache: httpd -t または apachectl -t で構文を確認します。エラーが出れば修正します。httpd -S はListenポートやバーチャルホストの読み込み状況を一覧表示します。
  • Nginx: nginx -t を実行して設定ファイルの整合性を確認します。

2. ポートとバーチャルホストの確認

  • ポート確認例: ss -ltnp(または netstat -tlnp)でサーバーがどのポートを聴いているかを見ます。
  • バーチャルホスト確認: httpd -S はどのファイルがどのホストを定義しているかを教えてくれます。

3. 接続テスト(実際に動くか確かめる)

  • ローカルから: curl -I http://localhost で応答ヘッダを確認します。
  • ホスト名指定のテスト: curl -I -H "Host: example.com" http://127.0.0.1 で仮想ホストの応答を確かめます。

4. サービス再起動と確認

  • 設定を反映するには systemctl restart httpdsystemctl restart nginx を使います。短時間で戻らない場合はログを確認します。

5. ログとトラブルシュート

  • エラーログ(/var/log/httpd/error_log や /var/log/nginx/error.log)を tail -f で監視します。パーミッションやSELinux、ファイアウォール設定も原因になることが多いです。

この順で確認すれば、設定ミスを早く見つけて安全に反映できます。必要なら個別のコマンド例をさらに詳しく説明します。

まとめ

本書で扱った内容を分かりやすく振り返ります。

  • 設定ファイルの役割
    設定ファイルはサーバーの動作を決める設計図です。起動するポートや公開するフォルダ、ログ出力、アクセス制御などは設定で制御します。

  • ApacheとNginxの違い
    Apacheは複数ファイルで柔軟に管理します(例:httpd.conf、sites-available、.htaccess)。Nginxはnginx.confを中心にインクルードで一元管理します。構成方法の違いで運用手順が変わります。

  • 重要な設定項目と実践
    バーチャルホスト/serverブロック、ドキュメントルート、ポート、SSL、ログ、アクセス制御、パフォーマンス設定(ワーカ数やタイムアウト)を押さえてください。設定を変更したら構文チェックとリロードで確かめます。

  • 運用の基本方針
    小さな変更を段階的に行い、バックアップとステージング環境で検証します。コメントを残し、権限は最小にすることで安全性を高めます。

最後に一言:設定ファイルは単なるテキストですが、適切に管理すれば安定性と性能を大きく向上させます。日頃から確認とテストを習慣にしてください。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次