はじめに
目的
本書は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はブロックで設定します。上位にeventsやhttp、その中に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 httpdやsystemctl 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、ログ、アクセス制御、パフォーマンス設定(ワーカ数やタイムアウト)を押さえてください。設定を変更したら構文チェックとリロードで確かめます。 -
運用の基本方針
小さな変更を段階的に行い、バックアップとステージング環境で検証します。コメントを残し、権限は最小にすることで安全性を高めます。
最後に一言:設定ファイルは単なるテキストですが、適切に管理すれば安定性と性能を大きく向上させます。日頃から確認とテストを習慣にしてください。












