〜知識ゼロから始める、堅牢なWebサーバーの作り方〜
インターネットサービスを支える様々なサーバーのなかでも、Webサーバーは役割が明確で、基本構造も比較的シンプルです。そのため、初期構築自体はそれほど難くはありません。しかし、インターネット上に公開するサービスである以上、本番運用に向けたセキュリティや運用管理において注意すべき点は多岐にわたります。
本記事では、Webサーバーの基礎、シェア上位のApacheとnginxの構築手順、そしてトラブルの起こりにくい堅牢なWebサーバー構築のためのセキュリティ対策を含む運用・保守のポイントを解説します。
1. Webサーバー構築前に知っておきたいサービス提供の基礎知識
Webサーバーとは、コンテンツ(文書、画像、動画など)をHTTP/HTTPSを通じてクライアント(Webブラウザ)に配信するシステムです。その実体は、コンピューター上やクラウド環境で動作するWebサーバーソフトウェアであり、代表的なものにApache、nginx、IISがあります。
Webサーバーを構築するとは、
- 環境を用意し
- Webサーバーソフトウェアをインストールして設定を行い
- ネットワークやセキュリティを含めた配信環境を整える
という一連の作業を指します。
Webサーバーの機能や役割など、詳しくは以下の記事を参照ください。
関連記事:Webサーバーとは?機能や構成、種類、運用上の注意点など徹底解説
2. Webサーバー構築前の情報整理と準備
構築作業に入る前に、必要な準備事項を確認しておきましょう。
利用目的と要件の確認
Webサーバーの利用目的により、必要な要件は異なります。構築の前にしっかりと確認しておくことが大切です。
静的サイト
企業サイトをインターネット上で公開するなど、コンテンツの変更が比較的少ないサイトの場合、安定稼動や高速なレスポンス、セキュリティ対策が重要となります。
動的サイト
ECサイトなど、アプリケーションサーバーやデータベースと連携するサイトの場合、静的サイトの要件に加え、アクセス増加に対応できるスケーラビリティ、データの整合性を保つ信頼性が求められます。
データ共有サイト
イントラネット上の情報共有サイトなどでは、大容量のストレージやアクセス制御が必要です。
Webサーバーソフトウェアの選定
代表的なWebサーバーには以下の3つがあります。利用目的に合ったWebサーバーソフトウェアを選定することが重要です。
- Apache:豊富なモジュールで拡張性が高く、柔軟な設定が可能です。動的コンテンツの処理に適しています。
- nginx:少ないリソースで多数の同時接続を効率的に処理できるため、静的コンテンツの配信や大量アクセスに強みがあります。
- IIS:Windows環境での利用が前提となります。GUIによる直感的な操作が可能です。
サーバー稼働環境の選定
サーバーの稼働環境は、オンプレミス、ホスティング、クラウドに分けられ、それぞれに長所と短所があります。
- オンプレミス:自由度が高い反面、多額の初期費用や運用コスト、専門知識が必要です。
- ホスティング:運用負荷は軽減されますが、複数の利用者で環境を共有する共用型では、設定やカスタマイズに制限があります。
- クラウド:スケーラビリティが高く初期費用も抑えられますが、従量課金により利用状況次第で料金が変動します。
ユーザーの責任範囲の違いも重要な選定基準となります。自社でどこまで運用責任を持てるかを考慮しましょう。

3. Webサーバーの構築手順 その①(オンプレミス Apache)
Apacheを用いてオンプレミス上のマシンにWebサーバーを構築する手順を解説します。OSはUbuntu Linuxを例とし、OSのインストールと初期設定は済んでいるものとします。
※参考:Install Ubuntu Server
Webサーバー(Apache)のインストール
Ubuntuのパッケージ管理システムを使用して、Apache HTTP Serverをインストールします。CUIの場合のコマンド例は以下です。
sudo apt install apache2Webサーバー(Apache)の設定
Apacheのメイン設定ファイルであるapache2.confや、仮想ホスト設定ファイルなどを編集して、必要なディレクティブを定義します。ディレクティブとは、Apache設定ファイル内でサーバーの動作や環境を指示する指示文のことです。
設定項目 | 設定内容 |
---|---|
ホスト名 | ServerNameディレクティブでWebサイトのホスト名を指定する。 |
コンテンツディレクトリ | DocumentRootディレクティブでコンテンツのルートディレクトリを指定する。DocumentRootはURLパスの基点となり、サーバー上のディレクトリ構造はURLパスと基本的に対応する。 |
複数サイトの運用 | <VirtualHost>ディレクティブを使用する。 |
SSL/TLS通信 | SSLEngine、SSLCertificateFile、SSLCertificateKeyFileなどのディレクティブを設定する。 |

設定後に、Apacheの自動起動設定を行います。コマンド例は以下です。
sudo systemctl enable apache2※参考:Apache HTTP Serverドキュメント – 設定ファイル
ネットワークとセキュリティの設定
インターネットにWebサーバーを公開する際、インターネット上で一意に識別されるグローバルIPアドレスをWebサーバーに割り当て、DNSを設定してホスト名と紐づけます。
また、サーバーのOSやルーターに付属するファイアウォールを設定し、必要なポート(HTTP:80番、HTTPS:443番など)以外は外部からのアクセスを遮断しておきましょう。
Webコンテンツの配置と動作確認
SCPやSFTPなどのファイル転送方法を用いてWebサーバーに接続し、コンテンツファイルをアップロードします。アップロード先はDocumentRootで指定したディレクトリであり、URLパスではない点に注意しましょう。
コンテンツ配置後、Webサーバーが置かれているオンプレミス環境とは異なるネットワーク(スマートフォンのモバイル環境など)からWebサーバーにアクセスして動作確認しましょう。
接続できない場合、下記を確認します。
- ファイアウォールの設定がHTTP/HTTPSを許可しているか?
- コンテンツの配置場所は正しいか?
- コンテンツファイルにWebサーバーが使用するユーザーの読み取り権限はあるか?
- Webサーバーのエラーログにエラーが記録されていないか?
4. Webサーバーの構築手順 その②(AWS EC2+nginx)
nginxを用いてAWSのEC2上にWebサーバーを構築する手順を解説します。OSはAmazon Linux 2023を例とし、EC2インスタンスの起動と接続、OSの初期設定は済んでいるものとします。
※参考:AWSでの AL2023 の使用
Webサーバー(nginx)のインストール
Amazon Linux 2023のパッケージ管理システムを使用して、nginxをインストールします。
CUIの場合のコマンド例は以下です。
sudo dnf install nginxWebサーバー(nginx)の設定
nginxのメイン設定ファイルであるnginx.confを編集して設定を行います。
設定項目 | 設定内容 |
---|---|
ホスト名 | server_nameディレクティブでWebサイトのホスト名を指定する。 |
コンテンツディレクトリ | rootディレクティブでコンテンツのルートディレクトリを指定する。 |
複数サイトの運用 | serverディレクティブを使用する。 |
SSL/TLS通信 | ssl、ssl_certificate、ssl_certificate_keyなどを設定する。 |
設定後、nginxの自動起動設定を行います。コマンド例は以下です。
sudo systemctl enable nginx※参考:Configuring NGINX and NGINX Plus as a Web Server
ネットワークとセキュリティの設定
グローバルIPアドレスやDNSの設定はApacheの例と同様です。
ルーターのファイアウォール設定と近い存在に、AWSのセキュリティグループ設定があります。ここで必要なポートのみを開放する設定が可能です。
※参考:セキュリティグループを使用して AWS リソースへのトラフィックを制御する
Webコンテンツの配置と動作確認
コンテンツの配置と動作確認はApacheの例と同様です。
5. Webサーバー構築後の運用と保守
構築したWebサーバーを安全に、そして安定して稼働させるためには、運用と保守が欠かせません。
ログ監視
ログ監視は、Webサーバーの状況をリアルタイムに把握できる手段であり、以下の目的に活用できます。
- 障害の早期発見:エラーログからサーバーダウンやレスポンス遅延の原因を特定する。
- セキュリティ脅威の検知:アクセスログから不正アクセスやサイバー攻撃の兆候を検知する。
- パフォーマンスの改善:アクセス状況を分析し、サーバーやコンテンツを最適化する。
バックアップ
災害やサイバー攻撃、人的ミスなどの予期せぬ事態からWebサイトを守るため、バックアップは不可欠です。
バックアップすべきデータはWebコンテンツだけではなく、Webサーバーの設定ファイルやログファイル、動的サイトであればデータベースなど多岐にわたります。バックアップが必要なデータ範囲を明確にしておきましょう。
頻繁に更新されるサイトでは数時間おきやそれ以上の頻度でのバックアップが必要になるなど、サイトやデータの性質に応じてバックアップの頻度を計画することも重要です。
セキュリティ対策
構築したWebサーバーのセキュリティを維持するため、以下の対策を継続的に実施しましょう。
- OSとソフトウェアの最新化:脆弱性対策のセキュリティパッチは迅速に適用する。
- 定期的な設定確認:ファイアウォールやアクセス制御設定が意図通りに機能しているか、定期的に確認する。
- セキュリティ診断の実施:脆弱性診断ツールを用いて、設定ミスや脆弱性がないか客観的にチェックする。
パフォーマンスチューニング
ログ監視の結果、パフォーマンス改善が必要な場合は以下のチューニングを行います。
同時接続数の調整
想定されるアクセス数に合わせて、サーバーが同時に処理できる接続数を調整します。
設定項目には以下があります。サーバーのメモリ容量やCPUコア数による制限に注意しましょう。
- Apache:StartServers、MinSpareServers、MaxSpareServers、MaxRequestWorkersなど
- nginx: worker_processes、worker_connectionsなど
キャッシュ設定
HTMLや画像、CSSなどの静的コンテンツをキャッシュし、サーバーへのリクエスト数を減らして応答速度を向上させられます。
設定項目には以下があります。キャッシュされている間はコンテンツの更新が反映されないため、キャッシュ対象や期間の設定に注意が必要です。
- Apache: mod_expiresモジュール、ExpiresActive On、ExpiresByType
- nginx: expires
Keep-Alive設定
接続確立のオーバーヘッドを削減し、レスポンスの向上が可能です。
設定項目には以下があります。メモリ容量や同時接続数の制限に注意しましょう。
- Apache: KeepAliveTimeout、MaxKeepAliveRequests
- nginx: keepalive_timeout
まとめ
Webサーバーの基礎知識から、Apacheとnginxを用いた構築手順、運用・保守のポイントまでを解説しました。
Webサーバーの構築自体はそれほど難しくありませんが、セキュリティや運用管理には専門的な知識と継続的な対応が必要です。本記事が、トラブルの起こりにくい堅牢なWebサーバー構築に役立てば幸いです。
ハートビーツはインフラに関する深い知見をもとに、MSPサービスやセキュリティ導入・運用代行といった各種サービスを提供しています。Webサーバー構築の際には、ぜひお気軽にご相談ください。