ユーザ用ツール

サイト用ツール


nginx

文書の過去の版を表示しています。


nginx

非同期IOで動作する高速なHTTPサーバ。

コンフィギュレーション

configファイルは cong/nginx.conf である。

Basic認証

Apache の htpasswd がそのまま使える。

Ubuntu 10.04では以下のパッケージに htpasswd コマンドが含まれている(Apache本体は不要)

$ sudo aptitude install apache2-utils

/etc/nginx/conf/nginx.conf

http {
  ..
  server {
    ..
    location / {
      ..
      auth_basic "Staff Only";
      auth_basic_user_file /etc/nginx/conf/htpasswd;
    }
  }
}

最大接続数

worker_processes  2;

events {
    worker_connections  1024;
}

worker_processes と worker_connections の積、この場合は2048リクエストが最大接続数となる。想定される最大クライアント数×1ページ当たりの平均ファイル数より多少大きい値を設定すると良い。

ファイルディスクリプタの制限

Linuxではユーザが使用可能なリソース数が制限されている。Ubuntuではデフォルトでファイルを1024以上オープンできないが、nginxで同時に大量のリクエスト処理を行うと1024を上回る可能性がある。

worker_rlimit_nofile で nginx プロセスがオープンできるリソースの制限を変更できる。

worker_processes  2;
worker_rlimit_nofile 4096;

events {
    worker_connections  1024;
}

※ この設定は1 worker_processesあたりの設定? worker_connectionsと同じで良いのか? 仮にそうだとしてkeep aliveやssiを使っていると1コネクションで複数ファイルを開くので、その場合はconnectionより大きい値を指定しないといけない? 要調査。

passenger

nginx + passenger でrailsアプリを起動する。

Ubuntu 10.04では以下のライブラリをインストールする

$ sudo aptitude install build-essential
$ sudo aptitude install libcurl4-openssl-dev

rubyやgem、rails等のインストール後、gemでpassengerをインストール。ここではバージョンを明示しているが、特に指定せず最新版を入れると良い。

$ sudo gem install -v=3.0.7 passenger --no-rdoc --no-ri
$ sudo /var/lib/gems/1.8/gems/passenger-3.0.7/bin/passenger-install-nginx-module

とりあえず起動と停止

$ sudo /opt/nginx/sbin/nginx 
$ sudo /opt/nginx/sbin/nginx -s stop

Railsアプリの実行ユーザはAapche版と同じく environment.rb の所有ユーザとなる。

nginx.confに設定を追加

Rubyの設定(これはビルドすると最初から設定済み)

http {
    # ...

    passenger_root /var/lib/gems/1.8/gems/passenger-3.0.8;
    passenger_ruby /usr/bin/ruby1.8;

    # ...
}

Rails(Rack)の設定

http {
    # ...

    server {
        listen       80;
        server_name  rails.paulownia.jp;
        root         /var/www/rails.paulownia.jp/app/public;
        passenger_enabled on;
    }
}

Railsの特定のパス以下にbasic認証をかけたい場合は、basic認証をかけるフォルダでも passenger_enabled on を設定する。

http {
    # ...

    server {
        listen       80;
        server_name  rails.paulownia.jp;
        root         /var/www/rails.paulownia.jp/app/public;

	location / {
            passenger_enabled on;
	}

        location /auth/ {
            passenger_enabled on;
            auth_basic "Authentication Required";
            auth_basic_user_file "/var/www/rails.paulownia.jp/app/htpasswd";
        }
    }
}
nginx.1313590720.txt.gz · 最終更新: 2011/08/17 14:18 by nullpon