title_parttitle_parttitle_part
静岡県浜松市であれこれソフトを開発している A.K.I Software のブログです。日々の開発日記やサーバー・セキュリティ関連の話題なども掲載。
<< 2024/04 >>123456789101112131415161718192021222324252627282930
《《《 ネットワーク機器の購入は Amazon で! 》》》
Powered by BLOM 小型Webサーバ開発中 その5
小さくも大きくも閉じたりもしません
14/08/10 02:08 / pHTTPServer

なんだかんだ言って、徐々に形になってきました。

photo


まず、全体設定で行っていた設定を各ドメイン単位で設定できるようにしました。
MIME やログの設定などは全体で設定を行いますが、個別に MIME 設定が必要な程、細かく設定が必要なケースはそもそも、これは使わないだろうってことで。

SSLv3 or TLSv1 の設定も追加されます。
SSL/TLS 設定はフレンドリ名と、証明書の保存場所(ちょっとスクリーンショットが古いので画面には無いですが)くらいです。
http の証明書は原則として、そのドメインに対して発行されますので、FQDN での設定などはありません。

しかし毎回毎回毎回毎回思うのですが、SSL/TLS の証明書と通信の暗号化は分離してくれませんかねぇ。

確かに、XSS などで対象のドメインが信頼できるサーバなのかどうかをチェックするのは重要なんですが、それとサーバクライアント間の暗号化は別の問題だと思うのですが。

あと認証は全体にも掛けられますが、ディレクティブでも行えるようにする予定です。
そっちができるようになったら、ルートに認証かければ全体で認証が必要ってできますので、この設定は消えるかもしれません。

https の設定は、もう1個選択肢が必要ですね。
http or https or http/https(both) みたいな。

photo


この辺りは変わっていません。

photo


ちょっとお気に入りの機能です。

対象ドメインのディレクトリの一覧を確認することができます。
実フォルダなのか、仮想フォルダなのかとか、どのメソッドが許可されているかなどを一元で確認することができます。
CGI で Execute を許可しているフォルダはどこだっけ?とか見れますね。


あと見た目は余り変わっていませんが、マルチコア・マルチスレッドになりました。

マルチコアというと CPU のコアっぽいんですが、この場合1プロセスで複数の http エンジン(コア)を動かせるようになりました。

なんでこんなのが必要かと言いますと、マルチドメインで http/https に対応すると、こんなケースが出てきます。

1) HTTP(80) - example.com
2) HTTPS(443) - example.com
3) HTTP(80) - example.org

単純に考えれば、3プロセス起動して、それぞれで待てばOK!になりそうなんですが、TCP/IP の仕様で基本的に1つのポートを複数で使いまわすことはできない。という制限があります。
(例外的に IP アドレスとポートを紐付けて、1つのサーバー機上に複数の IP アドレスを割り当て、この IP アドレスに対して、同じポート番号を指定する。ということは可能です。あんまりやりませんが。)

その為、上記の例の場合は、下記ようなことをする必要が出てきます。

1) Port80 で example.com / example.org の処理を行う、http コアA
2) Port443 で example.com の処理を行う http コアB

Unix系では、inetd / xinetd などがこの役目をしてくれるんですが、そういうスーパーサーバは Windows には基本的に無いので、これをメインスレッドで請け負って、Port80 にアクセスしてきたら、処理を httpコアA に渡す。Port443 にアクセスしてきたら、処理を httpコアB に渡す。というように処理するわけです。

これだけなら「じゃーコア2つあればいいよね」で終わるんですが、http は接続先のポートを指定して接続を行うことができる仕様がありますので、下記のような場合は・・・

1) HTTP(80) - example.com
2) HTTPS(443) - example.com
3) HTTP(80) - example.org
4) HTTP(8080) - example.jp

3コア必要になる訳です。
ここらはマルチドメインで http/https 対応での最低ラインです。(スーパーサーバでもない限り他の方法では処理できない。)

そして各コアがマルチスレッド対応になっており、同時に複数の接続を受け持ちます。
これでマルチコア・マルチスレッド対応ってことになります。

ちなみに、Apache は、更に負荷を分散する為の高級な処理を行っていて、ハイブリッド型(マルチプロセス・マルチスレッド)という処理を行っているようです。

実際にソースを読んだ訳じゃないのですが、おそらく

1)1プロセスに割り当てられる最大スレッド数を指定

2)通常はこのプロセス内で処理を行う。

3)上記の最大スレッド数の上限に達した場合「別のプロセスを起動して、上限を超えた分は、そちらで処理を行う」

4)メインスレッドは、各プロセスの負荷状況をチェックして必要になったら更にプロセスを増やすし、必要なくなったら停止する(多分)

最大接続数(スレッド数)が100だった場合、100まではプロセス1が担当、101から200まではプロセス2が担当、201から300まではプロセス3が担当と、どんどん増やしていく訳です。
ソフトウェアロードバランサを自前で持っているようなもんですね。

うわーメンドクサイ処理・・・

でも、高負荷状況でも安定して動作させるには必要な処理になってきます。
まぁ、pHTTPServer は簡単Webサーバですので、ここまでやる気力は余りないのですが(^-^;

[更新日付:2014/08/23 00:29:53]
トラックバックを見る(0)
Log Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+sl+256fb2dda6cafc904ed1440ec2ae96298d9cf0aa]
TB Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+tb+256fb2dda6cafc904ed1440ec2ae96298d9cf0aa]

記事へのコメント

コメントはありません

名前
コメントキー
 
コメントする時はキーを正確に入力して下さい
コメント
アドレスを含んだコメントはできません
© 2008-10 A.K.I Software all rights reserved.