Help us understand the problem. What is going on with this article?

IISのhttp2サポートについてちょっとだけ

More than 1 year has passed since last update.

この記事はhttp2 Advent Calendar 2015の15日目の記事です。

Disclaimer: Windowsの記事です。

WindowsとHTTP/2

WindowsがHTTP2をサポートすることが明らかになったのは2014年10月でした。Windows 10とWindows Server 2016のTechnical Previewが公開された時点で、IE11とIISにHTTP2が試験実装されていました。その後、Windows 10は製品版がリリースされましたが、Windows Server 2016はまだリリース日を迎えていません。2015年12月時点の、HTTP/2をサポートするWindowsはこちらです。

HTTP.sys

実際にはIISがHTTP/2に対応したというより、HTTPカーネルモードドライバ(HTTP.sys)がHTTP/2に対応したというのが正しいです。HTTP.sysについては説明記事をちょっとだけ書きました。独自のサーバーアプリケーションからHTTP.sysを利用するには、HTTP Server APIを呼び出します。HTTP Server APIについてはMSDNの以下のページを起点に見ていくといいでしょう。

Windows 10で試す

IISのHTTP2をWindows 10で試してみたい場合は、以下のようにします。(参考:David So's Blog - HTTP/2 on IIS

「コントロールパネル」から「Windowsの機能の有効化または無効化」を選び、「インターネット インフォメーション サービス」を有効にします。

step1

インストールが完了したら「インターネット インフォメーション サービス(IIS) マネージャ」を起動し、機能ビューで「サーバー証明書」を選びます。

step2

操作ウィンドウで「自己署名入り証明書の作成」をクリックします(Let's Encryptなどでもいいのですが手作業が多く発生するので、ここはIISの自己署名証明書でいいでしょう)。

step3

「Default Web Site」で「サイトの編集」→「バインド…」をクリックして、新しくTLSバインディングを追加します。証明書には、先ほど作成した自己署名証明書を指定します。

step4

この状態で、https://localhost/ にアクセスすれば、HTTP/2が使われます。

WebアプリケーションのフロントWebサーバーとしてIISを使う

HTTP/2には依存しない話ですが……

クラシックASPやASP.NETを動かす場合の話は省略します。

PHPを動かす場合はFastCGIを使います。(ISAPI拡張+スレッドセーフPHPの組み合わせはオワコンです。)

それ以外のプラットフォーム(Java, Ruby, Python, Perl, Goなどなど)の場合は、HttpPlatformHandlerを構成します。

詳しくは

shibayanが日本語の記事をいくつか書いています(2014年のTechnical Previewの頃から不定期に書かれています)のでそちらも参照するとよいでしょう。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away