Skip to content

MS_IISConfig

nishi_74322014 edited this page Aug 31, 2026 · 3 revisions

IIS config

概要

IIS の *.config に限定した内容だったが、
コンフィギュレーション全般の話に変更。

詳細

GUI

「IIS マネージャ」を使用する。

CUI

IIS 7.0 から、iisxxxx.vbs が appcmd に変更された。

WebAdministration → IISAdministration cmdlets を使用できる。

補足(3 つの操作手段の使い分け): 手段が複数あるが、
用途で選ぶのが実務的である。

手段 得意 注意
IIS マネージャ(GUI) 確認、試行錯誤 手順が残らない(再現できない)
appcmd 設定の一括取得・投入。XML で出せる 引数が独特
PowerShell スクリプト化、CI からの実行 2 系統ある(下記)

PowerShell が 2 系統ある点は混乱しやすい。

モジュール 位置付け
WebAdministration 旧。IIS:\ ドライブでツリーを辿る方式。現在も同梱
IISAdministration 新。Get-IISSite 等。構成の一括変更(トランザクション的)に対応

新規に書くなら IISAdministration だが、
Web 上の情報は WebAdministration の方が圧倒的に多い
既存スクリプトの保守では両者が混在しがちなので、
どちらを使っているかを意識する必要がある。

なお、構成のエクスポートは appcmd が簡単である。

%WinDir%\System32\inetsrv\appcmd list site /config /xml > sites.xml
%WinDir%\System32\inetsrv\appcmd add site /in < sites.xml

サーバ更改時の設定移送に使える
Azureによる基盤開発法
「実環境からエクスポートされた情報」という考え方と同じ)。

configファイル

  • IIS 7.0 では XML ベースの *.config ファイルが、IIS 6.0 以前のメタベースを置き換えている。
  • この新しい構成システムは最初 ASP.NET で採用されたもので、拡張子が .config になっている。
  • IIS 7.0 の構成ファイルは %WinDir%\System32\Inetsrv\Config フォルダーに保持される。
  • 主要な config ファイルは以下になる。

ApplicationHost.config

この構成ファイルはすべての Web サイトやアプリケーションに関係する設定を保存している。

Administration.config

この構成ファイルは IIS の管理に関連する設定を保持する。
これらは IIS マネージャー用にインストールされた、
管理モジュールの一覧のほか、各管理モジュールが利用する構成設定を含む。

Redirection.config

複数の IIS サーバーを中央管理の単一の構成ファイルで管理するシステム構成をサポートする。
この構成ファイルは中央管理の構成ファイルがどこに配置されているかを指定している。

メモ

  • 各設定は Web.config に委任され、ApplicationHost.config 内で
    指定されている設定を上書きすることができるようになっている。
  • さらに、委任許可がされていない設定については Web.config に追加できない。

補足(この「委任」の仕組みが IIS 構成の要): 「メタベースを置き換えた」ことの
本質的な意味は、構成が階層化され、権限を委譲できるようになった点にある。

【上位】 ApplicationHost.config   … サーバ管理者が管理(%WinDir%\System32\inetsrv\config)
           ↓ overrideModeDefault で「委任するか」を指定
【下位】 Web.config(サイト)      … 開発者が管理(アプリのフォルダ内)
           ↓
         Web.config(サブフォルダ)… さらに個別に上書き
設定の場所 誰が触れるか
ApplicationHost.config サーバ管理者のみ
Web.config(委任された項目) 開発者(アプリと一緒に配布できる)
Web.config(委任されていない項目) 書いても無効。500 エラーになる

「開発環境では動くのに本番で HTTP 500 になる」という典型的な問題は、
委任されていない設定を Web.config に書いていることが原因である
(例: <windowsAuthentication> は既定で委任されていない)。

委任状態は IIS マネージャの
**「機能の委任」**画面、または次のコマンドで確認・変更できる。

appcmd list config /section:windowsAuthentication /commit:apphost
appcmd unlock config /section:windowsAuthentication

アプリと一緒に構成を配布したいDevOps
CI/CD パイプライン)場合、
どこまでを Web.config に書けるかを先に確認しておく必要がある。

目的別

同時実行性

同時実行性を向上させるためのパラメタについて纏める。

補足(同時実行性に効く主なパラメタ): 参照先が ASP(クラシック ASP)に
偏っているため、ASP.NET も含めた要点を挙げておく。

パラメタ 効くもの
アプリケーション プール キューの長さqueueLength、既定 1000) 超えると HTTP 503
同上 ワーカー プロセス数(Web ガーデン) 既定は 1。増やすとセッションが InProc で壊れる
同上 リサイクル設定(時間、メモリ、要求数) 定期的な再起動。セッション消失の原因にもなる
HTTP.sys MaxConnections 同時接続数
ASP.NET processModel/maxWorkerThreadsminWorkerThreads スレッド プールの枯渇
同上 system.net/connectionManagement/maxconnection 外部への同時接続数(既定 2。Web API 呼び出しで詰まる原因)

特に最後の maxconnection は、
サーバ間で HTTP を呼ぶ構成Web/APの分離
マイクロサービス)で必ず問題になる。
.NET Framework では既定が 2 接続であり、
これを上げないと同時実行数が伸びない。

なお、.NET Core / .NET 以降は HttpClient
SocketsHttpHandler が別の仕組み
MaxConnectionsPerServer)を持つ
HttpClient の使い方)。

帯域制御

Windowsの帯域制御を参照。

HTTPメソッドの制御

IIS、ASP.NETでのHTTPメソッドの制御を参照。


Tags: 移行, Windows, IIS

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally