「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。研究trusterdはHTTP/2クライアントとサーバ両方の機能を持っており、それらの機能は全てモジュールとして取り外し可能な設計にしています。そのため、HTTP/2クライアント・サーバ機能をmrubyモジュールとして取り外して、他のアプリケーションにmruby経由で組み込めば、簡単にtrusterdのHTTP/2機能を利用することができます。今回は、遊びとちょっとの真面目さで、ngx_mruby経由でnginxにtrusterdのHTTP/2サーバ機能を組込み、nginx起動時にnginxの内部情報HTTP/2サーバをforkして起動し、HTTP/2クライアントからnginxのバージョン情報を取り出してみました。何いってるの?という感じですが、最後までお付き合い下さい。ngx_mrubyにmruby-http2を組込みtrusterdのHTTP/2機能はmruby-http2として利用可能です。以下のようにngx_mrubyのbuild_conig.rbにモジュールを組み込む設定を書きましょう。いつも通りngx_mrubyをビルドしてngx_mrubyを組み込んだnginxを作成します。nginx内部用HTTP/2サーバを起動する設定をnginx.confに書く続いて、nginx.confに設定を書きます。今回はworker起動時のフックであるmruby_init_worker_codeに以下のように書きました。関連箇所だけ書きます。Webサーバもforkして同時に起動することができそうです。HTTP/2リクエストを送ると、Nginx.nginx_versionというngx_mrubyのクラス・メソッドによってnginxのバージョン情報を得られそうですね。起動させてレスポンスを確認するでは起動させてみましょう。以下のようなプロセスの状態になりました。./build/nginx/sbin/nginxHTTP/2サーバがforkされて、今回はworker数を適当にautoにしたのでCPUコアの数だけ起動していますね。外部からこのHTTP/2サーバにアクセスしてみましょう。https://127.0.0.1:8080/1.7.7起動中のnginxのバージョンを裏からHTTP/2経由で取得できました。nginx_internal_http2serverヘッダもnginx_internal_http2になっています。まとめということで、今回はtrusterdのHTTP/2機能を取り外した上で、別のアプリに組み込んでHTTP/2機能を試す事に成功しました。アプリの内部の情報をHTTP/2で裏から取ることもできました。今回はほぼ遊びですが、なんとなくもっとうまくやれば面白い事ができるんじゃないかという実感を得ました(得た気がしました)。この機能を応用すると、ミドルウェア間での通信やデバイス間での通信などにHTTP/2を使って協調して動くような処理が可能かもしれませんね。はてなブログPro研究者と技術者をやっています。詳しくはリンクの「研究・開発業績ページ」を御覧ください。さくらインターネットに入社して1年が経ちました非厳密計算で確率的に解釈するコンピューティングへの流れラストオーサーとしての国際会議投稿やジャーナル執筆のサポートについてviを:wqや:q!、あるいはZZで終了するのとではどちらが効率的か自分の研究開発に自信を持つためには月別アーカイブリンク研究・開発業績ページ旧ブログ検索はてなブログをはじめよう!matsumoto_rさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。