0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Webサーバーソフトウェアとは

0
Last updated at Posted at 2026-07-23

はじめに

Web開発をしてると nginxApache という単語が出てきます。これらが何なのか、そしてRailwayやHerokuみたいな「ホスティングサービス」とはどう違うのかを、自分用の備忘録として整理しておきます。

Webサーバーソフトウェアとは

Webサーバーソフトウェアっていうのは、ブラウザなどから送られてくるHTTP通信を受け取るプログラムのことです。受け取ったあと、リクエストの内容によって処理を振り分けます。

  • 画像やHTMLなどの静的ファイルであれば、そのまま返す
  • PHPなど動的な処理が必要な場合は、その言語の実行環境に処理を渡して、返ってきた結果をレスポンスとして返す

というのが基本的な役割です。つまり、Webアプリ本体(PHPなどで書かれたコード)の手前に立って、通信の窓口になっているプログラム、というイメージです。

実際の通信の流れ(CRUDの例)

たとえば「ユーザーを新規作成する」というCRUD処理(Create)を例に、実際の通信の流れを追ってみます。

  1. ブラウザが POST /users のようなHTTPリクエストを送信する
  2. Webサーバーソフトウェア(Nginx/Apache)がそのリクエストを受け取る
  3. /users へのリクエストは動的処理が必要なので、PHPの実行環境(PHP-FPMなど)に処理を渡す
  4. PHP側でリクエストの中身を見て、DBにユーザーを登録する処理を実行する
  5. 処理結果(作成したユーザー情報など)をPHPがWebサーバーソフトウェアに返す
  6. Webサーバーソフトウェアが、その結果をHTTPレスポンスとしてブラウザに返す

図にするとこんな感じです。

そもそもNginxやApacheって何なのか

NginxApache は、その「窓口」の代表格です。どっちも「Webサーバーソフトウェア」というジャンルの、具体的な製品名(実装)です。

  • Apache: 歴史が長くて実績も豊富
  • Nginx: 大量アクセスを軽量に捌けるのが売りで、最近よく使われている
  • Caddy: HTTPS周りの設定が簡単

細かい特徴の違いはありますが、「HTTPリクエストを受け取って処理するプログラム」という点はどれも共通しています。設定ファイルで「このURLに来たリクエストはこう処理する」みたいなルールを定義して使います。

Node.js(JS/TS)の場合はどう違うのか

PHPは、自分自身ではHTTPリクエストを直接受け取れません。なので上の流れのように、Nginx/Apacheが窓口になって処理を渡してあげる必要があります。

一方Node.jsは、標準のhttpモジュールを使って自分自身でHTTPリクエストを直接受け取れます。Express などのフレームワークもこの仕組みの上に乗っているので、理論上はNginxやApacheがなくても動きます。TypeScriptもコンパイルすればただのJSなので同じです。

とはいえ実務では、Node.jsの前段にもNginxを置くことが多いです。理由は、

  • HTTPS(SSL証明書)まわりの処理をまとめる
  • 複数のNodeプロセスへの振り分け(ロードバランシング)
  • 静的ファイル配信をNode本体にやらせず軽量なNginxに任せる

といったことをやらせたいからで、「必須ではないけど、あると便利だから置く」というのがPHPとの違いです。

「Webサーバーのホスティング」と「Webサーバーソフトウェア」の違い

Railway, Heroku, Render, Vercelとかも、なんとなく「Webサーバー」って呼ばれがちですが、これらはNginxやApacheそのものではありません。

  • Webサーバーソフトウェア(Nginx, Apacheとか): リクエストを処理する「プログラム」そのもの。自分で機械に入れて、自分で設定する
  • ホスティングサービス(Railway, Heroku, Render, Vercelとか): 機械の用意やWebサーバーソフトウェアの設定を、自分で意識しなくていいように肩代わりしてくれる「サービス」

具体的には、

  • 機械を借りる契約をしなくていい
  • NginxやApacheの設定ファイルを自分で書かなくていい
  • git push するだけで裏側をよしなに用意してくれる

というのが、ホスティングサービスの役割です。内部では裏側でNginxのようなソフトウェアが動いていますが、そこはユーザーからは隠されています。

ホスティングの種類(IaaSとPaaS)

ホスティングサービスの中にも、「どこまで肩代わりしてくれるか」で種類が分かれます。

  • IaaS(Infrastructure as a Service): 機械(インフラ)だけ貸してくれるタイプ。NginxやApacheのインストール・設定は自分でやる必要がある
    • 例: AWS EC2, GCP Compute Engine, さくらのVPSとか
  • PaaS(Platform as a Service): コードを置くだけで動かしてくれるタイプ。Webサーバーソフトウェアの設定はサービス側にお任せできる
    • 例: Heroku, Railway, Render

Vercelはこの中だとPaaSに近く、フロントエンドやサーバーレス関数寄りの立ち位置です。

余談(S3やR2、SESとの違い)

似たような文脈でよく出てくるサービスとして、S3やR2、SESもあります。これらはIaaS/PaaSとは少し違うカテゴリです。

  • S3(AWS)/ R2(Cloudflare): オブジェクトストレージ。ファイルの保存・配信が役割で、HTML/CSS/JSだけの静的サイトなら配信先として使える。ただし、PHPやNode.jsのようにサーバー側でコードを実行する機能は持っていない
  • SES(AWS): メール送信専用のサービスで、Webサイトのホスティングとは無関係

目的ごとに整理すると、こんな感じです。

  • 動的な処理を含むWebアプリを動かす → IaaS / PaaS
  • 静的ファイルだけ配信したい → S3, R2などのオブジェクトストレージ
  • メール送信だけしたい → SESなど

全体像のまとめ

全体像を図にすると、こんな感じです。

普段PaaS系のホスティングサービスを使ってると、Webサーバーソフトウェアの存在自体を意識する機会はあまりありませんが、裏では確かに動いています。IaaSを使う場合は、そこを自分で用意する必要がある、というのが違いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?