an optimised HTTP server / library implementation with support for HTTP/1, HTTP/2, websocket
かなり今更感の漂う内容ではありますが、意外と情報が分散していたり、Apache2.4系を考慮した場合に足りていない内容があったのでこのエントリで一度まとめてみようと思います。 CGIを使うようなシステムでそれなりにアクセスが集中するサーバ、例えば日々のピーク時のApacheのbusyワーカー数が1000になるようなサーバで、かつ、それを処理可能なマシンスペックのサーバであることを前提にしています。 ApacheのMPMとCGI実行アーキテクチャの復習 ApacheでCGIを使う場合には、MPMとCGI実行アーキテクチャの組み合わせは大きく分けて以下の2つに分ける事ができます。 worker(event) + mod_cgid prefork + mod_cgi Apacheの2.4系から特にworker(event) + mod_cgidのモデルが推奨されているようです。また、2.4系では
HTTPレスポンスヘッダにサーバのバージョンの表示を消す なぜ必要? 潜在攻撃者への情報提供になることも。 もし使用中バージョンの脆弱性が明らかになった時、恰好の標的になるとか。 対応 nginx.confのhttpディレクティブに server_tokens off; を追加。
メモ。nginxのリバースプロキシでファイルをキャッシュする方法。 設定したページはこれ。バックエンドはGoogleAppEngine。 http://www.nullpobug.com/ 試したnginxのバージョンは0.7。Ubuntu10.04のなので古い。 nginxの設定 nginx.confの中でconf.dやsites-enabledがincludeされるようになってることが前提。 /etc/nginx/conf.d/proxy_cache.conf proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=my-key:16m max_size=100m inactive=120m; proxy_temp_path /var/cache/nginx/tmp;httpディレクティブにproxy_cache_pat
はじめに nginxは頻繁に保守されていてどんどんバージョンが上がっていく一方で、UbuntuやWindows以外ではソースコードからビルドする方法が一般的だと思います。 nginxのバージョンアップ頻度 2011/05/10 1.0.2 2011/05/03 1.0.1 2011/04/12 1.0.0 2011/04/04 0.9.7 2011/03/21 0.9.6 nginx CHANGESより LinuxやBSDの多くのディストリビューションではNginxがパッケージリポジトリに含まれており、通常のソフトウェアインストール手法でインストールする事ができます。(Debianにおけるapt-getや、Gentooにおけるemerge、FreeBSDにおけるports、Fedora の yum、Vine Linux の apt-get など) たまにこれらのパッケージは古いものであった
Apacheモジュール作成は以前のエントリの通り手軽に出来ます。 Apacheモジュールの作成とgdbとloggerでのデバッグ方法 - よねのはてな 今回は、Nginxでモジュール作成してみたいという人向けです。 Nginxにおける処理の流れと押さえておきたい構造体、モジュール作成方法をのせておきます。 Nginx http://nginx.net/ そもそもNginxってなんだ?という人は軽量超高速なHTTPサーバという理解でOKです。 実際にはReverse Proxy、Mail Proxyとしても使用可能で、ライセンスはNSD系。 Nginxについては以下を参照下さい。 パフォーマンス比較 http://www.joeandmotorboat.com/2008/02/28/apache-vs-nginx-web-server-performance-deathmatch/ Ngin
Linuxにjenkinsを入れてみたが、jenkinsコンソールにapacheからリバースプロキシでつなごうとして、ちょっとハマったのでメモ。 jenkins: 1.410 apache : 2.2 jenkinsをrpmでインストールしてデーモン起動すると、コンソールのデフォルトのアドレスは、 http://myserver:8080 となる。 このアドレスの後ろのポートがカッコ悪いので、apacheとつなげたくなり、ここのドキュメントを参考に設定を試みた。しかし、ドキュメントには、 ProxyPass /jenkins http://localhost:8081/jenkins ProxyPassReverse /jenkins http://localhost:8081/jenkins とある。 ・・・ポートの後ろの「/jenkins」はどこから来たんじゃい! さらにドキュメントを
前回のopensslでRSA暗号と遊ぶでRSA暗号や秘密鍵について中身を色々といじってみた。続いて今回は、Apacheで使うオレオレ証明書を作ってみる。 細かいことはいいから、オレオレ証明書を作るコマンドだけ知りたい お急ぎの方は、以下3つだけやれば良い。これで10年間(3650日)有効なオレオレ証明書ができあがる。 $ openssl genrsa 2048 > server.key $ openssl req -new -key server.key > server.csr $ openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crtできあがったserver.crtとserver.keyを、例えば/etc/httpd/conf/ 配下のssl.crt/ と ssl.key/ ディレクトリに設置
Starlet-0.21がリリースされました。 Starlet-0.21 - a simple, high-performance PSGI/Plack HTTP server - metacpan.org - Perl programming language このバージョンからServer::Staterとの組み合わせでUNIX domain socketをListenすることができるようになりました。 $ start_server --path /tmp/app.sock -- plackup -s Starlet app.psgiServer::Stater は以前からUNIX domain socketをサポートしていたのですが、Starlet側でうまくハンドリングできていなかったのを修正したのが今回のリリースです。 ベンチマーク #plackconでの発表にもある通り、UNIX
G-WAN better uses CPU Cores to make the Internet of Things fly thousand times higher ! Leverage legacy servers and low-consumption CPUs to do more with less! With 1GHz in 2000 and 3GHz in 2002 10GHz CPUs were expected in 2005. Today, we should run much faster CPUs but: We're not going to have faster processors. Instead, making software run faster in the future will mean using parallel-programming
Starlet が HTTP/1.1 に対応しました。これによりでnginxのupstream keepaliveなどが捗ると思われます https://metacpan.org/release/Starlet https://github.com/kazuho/Starlet ながらくStarletはHTTP/1.0 + keepaliveなサーバでしたが、version 0.20にてHTTP/1.1に対応しました。具体的に対応したスペックは以下。 HTTP/1.1 keepalive Transfer-Encoding: chunked (Request & Response) Expect HTTP Pipelining StarmanやMonocerosとだいたい同じ動きをするようになっていると思われます。 なお、導入にあたっては、リバースプロキシ等と組み合わせた場合の動作パターン
C10K対応Prefork型高速PSGI/Plackサーバの Monoceros をHTTP/1.1に対応させました。 https://metacpan.org/release/Monoceros https://github.com/kazeburo/Monoceros MonocerosではHTTPのKeepAliveに対応して、大量の接続を捌く事ができますが、リリース時点ではHTTP/1.0 KeepAliveにしか対応していませんでした。しかし、nginxのupsream などでは、keepaliveを有効にしてHTTPセッションを使い回したい場合にHTTP/1.1が求められます。 以前このあたりの事をしらべてblog書いています nginx-1.1.x で httpなupstreamにもkeepaliveができるようになったので検証してみた https://blog.nomads
Monoceros というPSGI/Plackサーバ書きました https://metacpan.org/release/Monoceros https://github.com/kazeburo/Monoceros StarmanやStarletのようなPreforkなアプリケーションサーバでは、コネクションの維持イコールプロセスの占有なので、HTTPのKeepAliveは無効にするのが一般的ですが、負荷の高いサービスではTIME_WAIT状態のソケットが溜まったり、SYN-ACKの再送問題などあり、KeepAliveを使いたいという欲求があったりなかったりします。 Monoceros はリクエストを処理するworkerの他に、イベントドリブンで動くコネクション管理プロセスを立てて、クライアントからの接続ソケットをunix domain socketを使いプロセス間でやりとりします。待機
3/8に開発バージョンの0.17_1が出ましたが、このバージョンはひとつ前の0.16に比べて少し高速になっています。 local $SIG{...} = sub {}が使われていた部分を最適化してリクエストの前後でsystem callを減らしました。straceでみると before 23:02:27.213488 accept(4, {sa_family=AF_INET, sin_port=htons(32851), sin_addr=inet_addr("127.0.0.1")}, [16]) = 5 23:02:28.500636 ioctl(5, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff0140fd80) = -1 EINVAL (Invalid argument) 23:02:28.500710 lseek(5, 0, SEEK_CUR) =
.zshrcにstatic_httpdって関数つくってる。 dotfiles/.zshrc at master · kamipo/dotfiles · GitHub function static_httpd { if type plackup > /dev/null; then plackup -MPlack::App::Directory -e 'Plack::App::Directory->new(root => ".")->to_app' elif type ruby > /dev/null; then if ruby -v | grep -qm1 'ruby 2\.'; then ruby -run -e httpd -- --port=5000 . else ruby -rwebrick -e 'WEBrick::HTTPServer.new(:Port => 5000, :D
(※)このページで紹介している事項は記事初出時点の情報に基づいたものです。本ページはアーカイブとして掲載しています。 ツイート 2012年5月29日 IIJ-II技術研究所では、2009年の秋からMighttpd(mightyと読む)というWebサーバの開発を始め、オープンソースとして公開しています。この実装を通じて、マルチコアの性能を引き出しつつ、コードの簡潔性を保てるアーキテクチャにたどり着きました。ここでは、各アーキテクチャについて順を追って説明します。 ネイティブ・スレッド 伝統的なサーバは、スレッド・プログラミングという手法を用いています。このアーキテクチャでは、1つのコネクションを1つのプロセスかネイティブ・スレッドが処理します。 このアーキテクチャは、プロセスやネイティブ・スレッドを生成する方法で細分化できます。「プール」方式では、あらかじめ複数を起動しておきます。例としては
オープンソースのWebサーバーnginx開発チームは4月23日、最新安定版「nginx 1.2」をリリースした。2011年4月にリリースされたnginx 1.0系に続く安定版で、40以上の新機能が加わっている。 nginxはロシアの開発者Igor Sysoev氏が2002年に開始したオープンソースのHTTPサーバープロジェクトで、リバースプロキシやIMAP/POP3プロキシ、キャッシュ、負荷分散、圧縮などの機能も持つ。高速、軽量、柔軟性、安全性などを特徴とし、米Facebook、米Dropbox、米TechCrunch(米AOL)、WordPressなど多数の導入事例を持つ。 nginxは安定版の1.0系と、開発版の1.1系がリリースされていたが、1.2系は1.1系をベースにした新たな安定版となる。HTTPプロキシ関連ではアップストリームサーバーへのKeepalive接続の再利用やアップス
■ [ruby] 大規模Railsサイトのための新しいHTTPサーバ、Unicorn githubの中の人が、ブログで「Unicorn使い始めて一ヶ月くらい経つけどいい感じだよ」と書いています。 適当に要点だけ拾ってみました。 Unicornって何よ? UnicornはRubyのためのHTTPサーバ。MongrelやThinのようなものだけど、全く違う設計と思想を持っている ありがちな構成 [mongrel] [mongrel] .. [nginx] -> [haproxy] -> [mongrel] [mongrel] .. [mongrel] [mongrel] .. 問題点: あるactionの処理に60秒以上かかったとき、Mongrelが当該スレッドをkillしようとして固まることがある メモリが一定量を超えたときMongrelを再起動するのが遅い。 デプロイ時に9個のmongre
バージョン 1.42n およびそれ以前のすべてのバージョンのサンプルスクリプトに重大セキュリティホールがあります。 scripts フォルダの cmdIS.dll を削除してください。(2005/4/7) AN HTTPD は Windows95/98/Me/NT/2000/XP用の HTTP サーバ(Webサーバ)です。 LANにつながっているWindows マシンからホームページを提供できるほか、 SSI/CGIをローカルでテストすることができます。 また、ダイアルアップ接続でもホームページの発信が可能です。 フリーソフトウェアです。 ネットにつながっていないPCでも、http://127.0.0.1/ あるいは http://localhost/ とすることで 機能の確認やSSI/CGIの動作テストはできますので ご利用下さい。 Win32(Windows95, Windows
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く