IIS(Internet Information Services)は、Microsoftが開発し、Windowsに組み込まれているWebサーバーソフトウェアです。ブラウザから届いたHTTPの要求を受け取り、HTMLや画像を返したり、ASP.NETのアプリケーションを動かしたりします。別途ダウンロードするのではなく、Windowsの機能(Windows Serverでは「役割」)として有効にして使います。導入を判断できるよう、有効化手順からOS別のサポート期限、運用設定までを解説します。
まとめ:IISはWindowsとASP.NETの組み合わせで選ぶWebサーバー
IISはWindows専用のWebサーバーで、追加のライセンス費はかからずOSの費用に含まれます。現行版はIIS 10.0系で、Windows Server 2016以降のIISはどれも10.0系です。サポート期限はIIS単体ではなく、載っているWindowsのライフサイクルに従います。2026年11月時点で延長サポートの終了が最も近いのはWindows Server 2016(2027年1月12日)です。
選ぶかどうかは性能ではなく、載せるアプリと認証の前提で決まります。ASP.NET/ASP.NET Coreのアプリを動かし、Active Directoryの統合Windows認証を使い、運用チームがWindows Serverを保守しているならIISが素直な選択です。PHP・Java・Node.jsのアプリや、Linuxコンテナ前提の基盤ならnginxかApacheを選びます。
検証ならWindows 11の「Windowsの機能」から有効にし、http://localhost/ で確認できます。クライアント版は同時に処理できる要求が10件(Homeは3件)までなので、公開サーバーにはWindows Serverを使います。
IISの読み方・正式名称とWebサーバーとしての役割
IISはInternet Information Servicesの略で、「アイアイエス」と読みます。登場時はInternet Information Serverという単数形の名称で、のちにWeb・FTPなど複数のサービスを束ねた現在の名称になりました。設定画面やログに現れる「W3SVC」(World Wide Web発行サービス)や「inetsrv」といった識別子は、この時代の名残です。
IT用語としてのIISは、Webサーバーソフトウェアの製品名です。Webサーバーとは、クライアントからのHTTP要求に応えてコンテンツを返すサーバーを指し、サーバーの役割と種類の分類ではその中の一つに当たります。IISはHTTPの配信に加え、FTPサーバー、Windows認証、ASP.NETの実行環境などを役割サービスとして追加できます。URLの書き換えには、別途URL Rewriteモジュールをインストールします。
同じWebサーバーのApache HTTP Serverとnginxは、Linuxでも動くオープンソースのソフトです。IISはWindows専用なので、OSの選定がそのまま製品の選定になります。
なお、Windows Serverそのものをブラウザの画面から管理したい場合に使うのはIISではなく、Windows Admin Centerです。追加料金なしで使えるWindows Server用のリモート管理ツールで、Webサーバーとしてサイトを公開するIISとは役割が違います。
IIS 10.0のバージョンとOS別のサポート期限
IISはWindowsの「コンポーネント」として扱われ、Microsoftのライフサイクルページには「Windows オペレーティング システムのコンポーネントであり、同じライフサイクルに従います」と書かれています。IISだけを入れ替えたりOSより長く使ったりはできず、修正もWindows Updateで届きます。
| OS | IISの版 | メインストリーム終了 | 延長サポート終了 |
|---|---|---|---|
| Windows Server 2025 | IIS 10.0 | 2029年11月13日 | 2034年11月14日 |
| Windows Server 2022 | IIS 10.0 | 2026年10月13日(終了) | 2031年10月14日 |
| Windows Server 2019 | IIS 10.0 | 2024年1月9日(終了) | 2029年1月9日 |
| Windows Server 2016 | IIS 10.0 | 2022年1月11日(終了) | 2027年1月12日 |
| Windows Server 2012 R2 | IIS 8.5 | 終了 | 2023年10月10日(終了) |
日付はWindows Server 2025などOSごとのライフサイクルページによります(2026年11月時点)。IISのライフサイクルページ自体はWindows Server 2019までの行しか載せていないため、2022と2025はOS側のページで確かめます。新規に構築するなら、延長サポートが2027年1月に切れるWindows Server 2016は選ばず、2025を基準にするのが妥当です。
同じIIS 10.0でもOSの世代で使える機能は違います。たとえばHTTP/3はWindows Server 2022のHTTP.sysで対応し、レジストリの EnableHttp3 を1にして有効にする方式でした。前提のTLS 1.3もWindows Server 2022以降で既定で有効です。版番号が同じでも、2016と2025で同じことができるとは限りません。
IISを有効化して動作を確認する手順
IISは既定では無効になっています。検証用のPCで試す場合と、サーバーに導入する場合とで手順が分かれます。
Windows 11・10の「Windowsの機能」によるIISの有効化
Windows 11(Pro・Home・Enterprise)では、コントロールパネルの機能画面からIISを追加します。WindowsのどこにIISがあるのかと迷う人が多いのは、アプリ一覧ではなくこの画面に隠れているためです。
- スタートメニューで「Windows の機能の有効化または無効化」を検索して開く
- 一覧の「インターネット インフォメーション サービス」にチェックを入れる
- ASP.NETを動かすなら「World Wide Web サービス」→「アプリケーション開発機能」から「ASP.NET 4.8」などを追加でチェックする
- 「OK」を押し、ファイルの追加が終わるまで待つ
同じ操作は管理者権限のPowerShellでも実行できます。機能名の一覧は Get-WindowsOptionalFeature -Online | Where-Object FeatureName -like "IIS-*" で確認できます。
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole, IIS-WebServer, IIS-ManagementConsole, IIS-DefaultDocument, IIS-StaticContent -All
クライアント版のIISには、同時に処理できる要求数の上限があります。Microsoft Learnの解説によると、Windows 10以降ではHomeが3件、ProとEnterpriseが10件です。上限を超えた要求はエラーにならずキューで待たされ、応答が遅くなります。Windows Serverにはこの制限がありません。社内の数人で使う検証用ならクライアント版で足りますが、公開用途には向きません。
Windows ServerへのIISの役割追加
Windows Serverでは、サーバーマネージャーの「役割と機能の追加」から「Web サーバー (IIS)」を選びます。複数台に同じ構成を入れるなら、PowerShellの Install-WindowsFeature で役割サービスまで列挙しておくと、台ごとの差が出ません。
Install-WindowsFeature -Name Web-Server -IncludeManagementTools
Install-WindowsFeature -Name Web-Windows-Auth, Web-Dyn-Compression, Web-Http-Redirect, Web-Asp-Net45
1行目がIIS本体とIISマネージャー、2行目がWindows認証・動的圧縮・HTTPリダイレクト・ASP.NET 4.xの追加です。使わない役割サービスは入れないほうが、攻撃面と更新の対象が減ります。
localhostの表示とIISマネージャー・既定フォルダの場所
有効化が終わったら、ブラウザで http://localhost/ を開きます。IISの青い既定ページが表示されれば、Webサーバーとして動いています。表示されない場合は、ポート80を別のソフトが使っていないかを先に疑います。
| 確認したいもの | 場所・開き方 |
|---|---|
| IISマネージャー | inetmgr を「ファイル名を指定して実行」 |
| 既定サイトの公開フォルダ | C:\inetpub\wwwroot |
| アクセスログ | C:\inetpub\logs\LogFiles |
| サーバー全体の設定ファイル | %windir%\System32\inetsrv\config\applicationHost.config |
| HTTP.sysのエラーログ | %windir%\System32\LogFiles\HTTPERR |
C:\inetpub\wwwroot に置いたHTMLファイルは、そのまま http://localhost/ファイル名 で配信されます。静的なページの確認ならこれだけで足ります。
IISサイトの作成とホスト名・ポート・証明書の割り当て
独自のサイトは、IISマネージャーの「サイトの追加」か、IISAdministrationモジュールのコマンドで作ります。サイトごとに物理パス・ポート・ホスト名(バインド)を指定し、HTTPSなら証明書を結び付けます。以下の例では公開フォルダを事前に作成し、読み取り権限を設定してください。ホスト名の名前解決にはDNSまたは検証端末のhosts設定も必要です。1台で複数のドメインをHTTPSで公開するときはSNIを有効にします。
Import-Module IISAdministration
New-IISSite -Name "corp-app" -PhysicalPath "C:\inetpub\corp-app" -BindingInformation "*:80:app.example.co.jp"
Get-IISSite
上の例はWindows PowerShell 5.1で実行する前提です。Microsoftの互換性表ではIISAdministrationはPowerShell 7の互換レイヤーで「未検証」の扱いなので、7から使うなら実際のコマンドで動作を確かめてください。証明書の手作業更新は台数が増えると漏れるので、自動更新の仕組みも同時に用意します。
IISの仕組み:HTTP.sys・WAS・W3SVC・w3wp.exeの分担
IISは1つのプロセスで完結していません。カーネルモードのドライバと、複数のユーザーモードのサービスが分業します。IISのアーキテクチャ解説に沿って、要求がたどる順に並べると次のとおりです。
| 構成要素 | 動く場所 | 役割 |
|---|---|---|
| HTTP.sys | カーネルモード | 接続の受付・要求のキュー・応答キャッシュ |
| W3SVC | svchost.exe | HTTP.sysの設定・WASへの通知 |
| WAS | svchost.exe | 構成の読み込み・ワーカープロセスの起動と監視 |
| w3wp.exe | ワーカープロセス | モジュールを順に呼んで応答を作る |
最初に接続を受けるのはHTTP.sysです。要求を解析し、アプリケーションプールごとのキューに振り分けます。ワーカープロセスが再起動している間も要求はキューで待てるので、プロセスの入れ替えが即エラーにはなりません。W3SVC(World Wide Web発行サービス)は、HTTP.sysを設定し、キューに要求が入ったことをWASに知らせ、サイトの性能カウンターを集めます。WAS(Windows Process Activation Service)は、キューに要求が来るとアプリケーションプールの設定に従ってw3wp.exeを起動し、異常終了すれば起動し直します。
w3wp.exeの中では、認証・要求フィルタリング・圧縮・静的ファイル配信・ASP.NETなどのモジュールが順に呼ばれます。どのw3wp.exeがどのプールのものかは次のコマンドで分かり、メモリやCPUを食っているアプリを特定できます。
REM 管理者権限のコマンドプロンプトで実行
%windir%\System32\inetsrv\appcmd.exe list wp
サイトが「開始」なのに503が返るなら、ワーカープロセスが起動できずにプールが停止しているか、HTTP.sysのキューがあふれている可能性が高いです。HTTP.sysが拒否した要求はアクセスログに載らずHTTPERRログに残るため、アクセスログ・HTTPERRログ・イベントログの3つを突き合わせます。
アプリケーションプールの分離とApplicationPoolIdentityの既定値
アプリケーションプールは、ワーカープロセスを動かす単位です。プールが違えばプロセスが分かれるため、異常終了の直接的な影響を分離できます。ただし、メモリリークでサーバー全体のメモリが不足すれば、別のプールのアプリにも影響します。原則は業務システム1つにつき1プールで、同じプールに同居させてよいのは、同じチームが保守し、同時に止めてよいアプリだけです。
| 設定項目 | 既定値 | 見直す場面 |
|---|---|---|
| ID(実行アカウント) | ApplicationPoolIdentity | 共有フォルダ・SQL Serverへ統合認証で接続 |
| 定期的な間隔(リサイクル) | 1,740分(29時間) | インメモリのセッションを使うアプリ |
| アイドル タイムアウト | 20分 | 利用の少ない社内システムで初回が遅い |
| プライベートメモリ上限 | 0(無制限) | リークが疑われる既存アプリ |
ApplicationPoolIdentityは、プールごとに自動で作られる仮想アカウント(IIS AppPool\プール名)で動かす仕組みです。パスワード管理は不要で、フォルダの権限はこのアカウント名を指定して付けます。ただしワーカープロセスには共通の IIS_IUSRS グループの権限も付くので、他のプールのファイルを読ませないには、フォルダのACLをプール別に設定し、共通グループへの付与や継承も確認します。ドメインのリソースには、ApplicationPoolIdentityのままコンピューターアカウントで接続できます。アプリごとに接続元の権限を分ける必要がある場合は、専用のサービスアカウントを検討します。Administratorsに入れる運用は避けてください。
既定の1,740分ごとのリサイクルは、ログイン状態をメモリに持つアプリでは時刻に関係なく利用者のセッションを切ります。セッションをSQL ServerやRedisなどプロセス外に保存する方法を検討します。夜間の固定時刻にリサイクルする場合は、定期的な間隔を0にして時間間隔による再起動を無効にします。ただし、夜間への変更だけではセッション消失自体は防げません。
applicationHost.configとweb.configの階層
IISの設定はXMLファイルの階層で管理されます。サーバー全体の設定は applicationHost.config に、サイトやアプリケーション単位の設定は各フォルダの web.config に書かれ、下位の設定が上位を上書きします。IISマネージャーで変更した内容も、最終的にはこのどちらかに書き込まれます。
アプリのリポジトリに含めたweb.configは、そのまま本番の挙動を変えます。要求フィルタリングなど、アプリ側に触らせたくないセクションは applicationHost.config でロックし、URL書き換えのルールなどだけを委ねる分け方にします。GUIでの変更は差分がレビューに乗らないので、複数台を運用するならweb.configとPowerShellのスクリプトをリポジトリで管理し、GUIは調査時の閲覧に限るのが安全です。
ASP.NET Core・PHP・Node.jsをIISで動かす構成
ASP.NET CoreはHosting Bundleとインプロセス構成が基本
ASP.NET CoreのアプリをIISで動かすには、サーバーに「.NET Hosting Bundle」を入れます。これにASP.NET Core Module(ANCM)と.NETランタイムが含まれています。入れないまま発行物を置くと、HTTP 500.19などのエラーで止まります。ASP.NET CoreのIISホスティング解説では、ASP.NET Core 3.0以降はインプロセスホスティングが既定とされています。w3wp.exeの中でアプリが直接要求を処理するため、Kestrelへ転送するアウトオブプロセス構成より余分な中継がありません。
インプロセスでは、1つのアプリケーションプールに複数のASP.NET Coreアプリを同居させられません。プールの「.NET CLR バージョン」は「マネージド コードなし」に設定します。.NET Framework 4.x系の既存アプリと同じサーバーに載せるときは、プールを分ければ共存できます。ランタイムの保守期限は.NET 10(LTS)のサポート期限を基準に計画します。
PHPはFastCGI、Node.jsはHttpPlatformHandlerかリバースプロキシ
PHPはIISのFastCGIモジュールから php-cgi.exe を呼び出して動かします。Node.jsは、iisnodeでIISに組み込むか、HttpPlatformHandlerでNode.jsのプロセスを起動して要求を渡すか、URL Rewrite 2.1とApplication Request Routing(ARR)3.0で手前のIISから転送するリバースプロキシ構成にします。ARRはURL Rewriteに依存するので、URL Rewriteを先に入れます。
PHPやNode.jsの運用情報はLinux前提のものが大半で、Windowsで運用する事情がないならIISを選ぶ利点は小さいです。JavaのアプリにはApache Tomcatのようなサーブレットコンテナが要ります。
Apache・nginxとの違いとIISを選ぶ条件
静的ファイルの配信、リバースプロキシ、TLSの終端はどのWebサーバーでもこなせます。差が出るのは、動くOSと設定の方法、得意なアプリの種類です。
| 観点 | IIS | Apache | nginx |
|---|---|---|---|
| 動作OS | Windowsのみ | Linux中心・Windows可 | Linux中心・Windows可 |
| ライセンス | Windowsの費用に含む | Apache License 2.0 | 2条項BSD |
| 設定 | GUIとXML | テキスト(.htaccessあり) | テキスト |
| 得意なアプリ | ASP.NET系 | PHPなど | 静的配信・プロキシ |
| 統合Windows認証 | 標準 | 追加モジュール | 追加モジュール |
| コンテナ | Windowsコンテナのみ | Linuxコンテナ | Linuxコンテナ |
費用はIIS単体ではかからず、Windows Serverのライセンスに集約されます。社内の利用者がアクセスするならユーザー数かデバイス数に応じたCALが要るのが基本で、社外の利用者がアクセスする公開サイトでは、CALかExternal Connectorの要否が契約条項で決まるため、見積もりの段階でライセンス条項を確認します。
IISを選んでよいのは、次の3つがそろうときです。載せるアプリがASP.NETかASP.NET Coreであること、Active Directoryの統合Windows認証やSQL Serverへの統合認証を使うこと、運用チームがWindows Serverの更新を既に回していること。社内の基幹系Webシステムが典型です。
逆に、アプリがPHP・Java・Python・Node.jsで書かれている、Kubernetesを含むLinuxコンテナ基盤に載せる、ADの認証を使わない外部公開サイトでサーバー台数が増えていく、のどれかに当たるならIISは選びません。前段をnginx、背後の業務アプリだけIISに置く二層構成もあります。
IISとApacheを同じWindowsマシンに入れることもできますが、同じIPアドレスの同じポートを両方が待ち受けようとすると競合します。IISの既定サイトはHTTPのポート80を使い、HTTPSの443は証明書とバインドを追加して使用します。解決策は、どちらかの待ち受けポートを8080などに変えることです。同じポートを別々のIPアドレスで使い分けるなら、サイトのバインドだけでなく、HTTP.sysのIP待ち受けリスト(netsh http show iplisten)とApacheの Listen 設定も合わせる必要があります。
IISのサーバーをクラウドのVMへ移すと、インメモリのセッション、ローカルディスクへの書き込み、手作業の証明書更新が、台数を増やした時点で問題になります。Windows Serverを含むシステムの移行はインフラ構築(AWS・Google Cloud・Azure)の支援で現行構成の棚卸しから対応しています。
IISのログとエラーを切り分ける順番
500系や503が返ったら、記録を層の順に見ます。
- HTTPERRログ:HTTP.sysの段階で拒否・切断された要求(503のキューあふれ、不正な要求など)
- アクセスログ(W3C形式):サイトに届いた要求と、ステータスコード・サブステータス・処理時間
- 失敗した要求のトレース(FREB):どのモジュールで何が起きたかを要求ごとに記録
- イベントログとアプリのログ:ワーカープロセスの異常終了やアプリの例外
アクセスログの sc-status と sc-substatus の組み合わせ(500.19なら構成ファイルの読み込み失敗など)で、原因のあたりがかなり絞れます。手掛かりが無い500はFREBを有効にして再現させると、止まったモジュールまで追えます。400番台の切り分けはHTTP error 400の発生源と直し方で、nginx・Apacheと並べて扱っています。
よくある質問
IISとは何の略で、IT用語として何を指しますか?
Internet Information Servicesの略で、「アイアイエス」と読みます。Microsoftが開発し、Windowsに組み込まれているWebサーバーソフトウェアの製品名です。HTTPの要求に応えてWebページを返し、ASP.NETのアプリケーションを動かします。
WindowsのIISはどこにありますか?
既定では無効なので、アプリ一覧には出てきません。Windows 11・10は「Windows の機能の有効化または無効化」で「インターネット インフォメーション サービス」にチェックを入れて有効にします。有効化後は inetmgr でIISマネージャーが開き、公開フォルダは C:\inetpub\wwwroot です。
IISは無料で使えますか?
IIS単体の追加費用はかからず、Windowsのライセンスに含まれます。クライアント版Windowsでも利用できますが、公開用途はWindows Serverを前提に検討します。Windows Serverで社内利用する場合は、ユーザー数かデバイス数に応じたCALが別に要るのが基本です。
IIS 10.0のサポート期限はいつまでですか?
IIS 10.0のサポート期限は、載っているWindowsのサポート期限と同じです。延長サポートの終了日はWindows Server 2016が2027年1月12日、2019が2029年1月9日、2022が2031年10月14日、2025が2034年11月14日です(2026年11月時点)。
IISとApacheは同じパソコンで共存できますか?
共存できます。IISの既定サイトとApacheはどちらもポート80を使うため、どちらかを8080などに変えるのが簡単です。同じIPアドレス・同じポートが重なったままだと、後から起動した方が待ち受けに失敗します。