ラベル Nginx の投稿を表示しています。 すべての投稿を表示
ラベル Nginx の投稿を表示しています。 すべての投稿を表示

月曜日, 3月 24, 2008

[Linux] nginxのServerヘッダとか

nginxのデフォルトなHTTPレスポンスヘッダには、"Server"ヘッダがバージョン付きで表示されているので、セキュリティホールになりかねない。
HTTP/1.1 200 OK
Server: nginx/0.5.35
・・以下略・・

これはしかし、ソースを変えなくともngx_http_headers_moduleのディレクティブ指定で消すことができる(正確には"nginix"とだけ出してバージョンを消す)。
server {
listen 8090;
server_tokens off;
server_name divershigh;

#charset koi8-r;
charset utf-8;
・・以下略・・

ちなみに、404ページでもデフォルト(404ページの指定無し)だとバージョンが表示されてしまうのでキチンと自分用のページを指定して置くことが必要。

木曜日, 2月 21, 2008

[Linux] ngnixの処理指定

ぜんぜん良く分かっていないが、RTSIGというのはlibrtを使った非同期IO機構であり、これとEPOLLは並列な様子(ngnixのソース内の分岐がそうなっているように見えるので)。
ngx_event_init_conf(ngx_cycle_t *cycle, void *conf)
{
ngx_event_conf_t *ecf = conf;

#if (NGX_HAVE_EPOLL) && !(NGX_TEST_BUILD_EPOLL)
int fd;
#endif
#if (NGX_HAVE_RTSIG)
ngx_uint_t rtsig;
ngx_core_conf_t *ccf;
#endif
ngx_int_t i, connections;
ngx_module_t *module;
ngx_event_module_t *event_module;
~snip~

というか、事実実験している環境ではobjs/Makefileの中でもrtsig、epoll、sendfileをリンクする指定になっていた。
~snip~
objs/src/event/modules/ngx_rtsig_module.o \
objs/src/event/modules/ngx_epoll_module.o \
objs/src/os/unix/ngx_linux_sendfile_chain.o \
~snip~

librtを使った非同期処理であればコンテキストスイッチが少なくなり(IO多重であるepollよりも)速い、とKLabさんの資料で読んだのだけど、どういう関係で実際のところどうなんだろう。

月曜日, 2月 18, 2008

[Linux] nginxとapache

ちまたで話題のNginxとapacheのパフォーマンスレポートを見つけました。面白いのはレスポンスタイム。

ブラウザ体感的にこんな効果があるなら、これだけで使ってみたいです。さらに、変わったところではmod_perlみたいにPerlを組み込みで使うことも出来るそうです。

ちなみに、lighttpdとの比較ではCPU負荷観点でnginxのほうが優れているとのことでした。

日曜日, 2月 17, 2008

[Linux] nginxのstatus

Nginxは運用者にとってちょっと制御してる感が持ちづらい(ワーカプロセス1つで1024コネクションって言われても。。)。コレを少しでも改善するためには./configure時に"--with-http_stub_status_module"をつけると良い。
http://wiki.codemongers.com/NginxHttpStubStatusModule

via kwout


あと、これを見られるようにlocationを指定すれば、apacheのmod_statusっぽい情報が得られるようになり少し安心できる気がする。

金曜日, 2月 15, 2008

[Linux] nginxの感想

この手のスレッドモデルなhttpdはどうも動作を掌握できている感が無くて困る。apacheのpreforkなんかだとプロセスがセッションに張り付いているのね、ふんふん、みたいに分かり易いが、スレッドモデルの場合はどう理解するのか。
まぁたとえば、なんとなくマニュアルには以下のようにある。
max_clients = worker_processes * worker_connections

ので、唯一、同時接続数が上限に来ちゃうときのロジックはなんとなくわかった。

水曜日, 2月 13, 2008

[Linux] nginx

nginxの実験をするためにコンパイル。
よくわからないエラーが出たら、それはpcre-develが入っていないからかもしれません。

[tf0054@divers-high nginx-0.5.35]$ ./configure --prefix=/mnt/nginx-0.5.35 \
--with-http_stub_status_module \
--without-http_proxy_module \
--without-http_geo_module
~省略~
[tf0054@divers-high nginx-0.5.35]$ make
make -f objs/Makefile
make[1]: ディレクトリ `/home/tf0054/nginx-0.5.35' に入ります
cd /lib64 \
&& if [ -f Makefile ]; then make distclean; fi \
&& CC="gcc" CFLAGS="" \
./configure --disable-shared
/bin/sh: line 2: ./configure: そのようなファイルやディレクトリはありません
make[1]: *** [/lib64/Makefile] エラー 127
make[1]: ディレクトリ `/home/tf0054/nginx-0.5.35' から出ます
make: *** [build] エラー 2
[tf0054@divers-high nginx-0.5.35]$

バイナリが642kbって、、apacheとは比較にならないほど小さくてよいです。