内容へ移動
Cat Paw Software
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
•
sastruts
nginx
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== nginx ====== 非同期IOで動作する高速なHTTPサーバ。読み方は「えんじんえっくす」 ===== コンフィギュレーション ===== configファイルは cong/nginx.conf である。 ==== Basic認証 ==== Apache の htpasswd がそのまま使える。 Ubuntu 10.04では以下のパッケージに htpasswd コマンドが含まれている(Apache本体は不要) <code> $ sudo aptitude install apache2-utils </code> /etc/nginx/conf/nginx.conf <code> http { .. server { .. location / { .. auth_basic "Staff Only"; auth_basic_user_file /etc/nginx/conf/htpasswd; } } } </code> ==== 最大接続数 ==== <code> worker_processes 2; events { worker_connections 1024; } </code> worker_processes と worker_connections の積、この場合は2048リクエストが最大接続数となる。想定される最大クライアント数×1ページ当たりの平均ファイル数より多少大きい値を設定すると良い。 ==== ファイルディスクリプタの制限 ==== Linuxではユーザが使用可能なリソース数が制限されている。Ubuntuではデフォルトでファイルを1024以上オープンできないが、nginxで同時に大量のリクエスト処理を行うと1024を上回る可能性がある。 worker_rlimit_nofile で nginx プロセスがオープンできるリソースの制限を変更できる。 <code> worker_processes 2; worker_rlimit_nofile 4096; events { worker_connections 1024; } </code> ※ この設定は1 worker_processesあたりの設定? worker_connectionsと同じで良いのか? 仮にそうだとしてkeep aliveやssiを使っていると1コネクションで複数ファイルを開くので、その場合はconnectionより大きい値を指定しないといけない? 要調査。 ===== ログローテーション ===== Ubuntuのログローテーションの例(月単位でローテーション) <code> /var/log/nginx/*.log { monthly missingok rotate 12 compress delaycompress notifempty create 640 root adm sharedscripts postrotate test -f /var/run/nginx.pid && kill -USR1 `cat /var/run/nginx.pid` endscript } </code> nginxはUSR1シグナルでログファイルを開き直す。 ==== nginx.confに設定を追加 ==== Rubyの設定(これはビルドすると最初から設定済み) <code> http { # ... passenger_root /var/lib/gems/1.8/gems/passenger-3.0.8; passenger_ruby /usr/bin/ruby1.8; # ... } </code> Rails(Rack)の設定 <code> http { # ... server { listen 80; server_name rails.paulownia.jp; root /var/www/rails.paulownia.jp/app/public; passenger_enabled on; } } </code> Railsの特定のパス以下にbasic認証をかけたい場合は、basic認証をかけるフォルダでも passenger_enabled on を設定する。 <code> 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"; } } } </code> ===== PHP ===== Apacheにおけるmod_phpのようなモジュールは無いので、FastCGIでphpを動作させる。php-fpmまたはspawn-fcgiを使う。 ==== php-fpm ==== PHP-FPM(PHP FastCGI Process Manager)はPHP5.3から導入されたFCGIのプロセス管理ツール。 Ubuntu 10.04標準のaptリポジトリにはパッケージが無い。nginxチームが作成したリポジトリにあるので、そのリポジトリを追加する。ただし標準のリポジトリではないので、次のLTS(12.04)リリース後はサポートされない可能性もあるので注意。 <code> $ sudo aptitude install python-software-properties $ sudo add-apt-repository ppa:nginx/php5 $ sudo aptitude update </code> インストール。起動スクリプトやconfigも作成される。デフォルトではport 9000でFCGIを起動する。 <code> $ sudo aptitude install php5-fpm </code> 起動と停止 <code> $ sudo service php5-fpm start $ sudo service php5-fpm stop </code> なお、PHPをFCGIプロセスとして起動するためには、FCGIを有効にしてPHPをビルドする必要がある。aptのPHPは有効になっているので気にしなくていいが独自ビルドする場合は注意する。 ==== spawn-fcgi ==== <code> $ sudo aptitude install php5-cgi $ sudo aptitude install spawn-fcgi </code> 起動スクリプトが無いので自分で作る。/etc/init.d/php5-fastcgi ファイルを作成 <code bash> #!/bin/bash PID_FILE="/var/run/php5-fcgi.pid" FCGI_EXEC="/usr/bin/spawn-fcgi" FCGI_OPTS="-a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -C 3 -P $PID_FILE" RETVAL=0 start_fcgi() { $FCGI_EXEC $FCGI_OPTS } stop_fcgi() { kill $(cat $PID_FILE) } case "$1" in start) start_fcgi RETVAL=$? ;; stop) stop_fcgi RETVAL=$? ;; restart) stop_fcgi start_fcgi RETVAL=$? ;; *) echo "Usage: php5-fastcgi {start|stop|restart}" exit 1 ;; esac exit $RETVAL </code> デーモンとして設定 <code> $ sudo update-rc.d php5-fastcgi defaults </code> 起動と停止 <code> $ sudo service php5-fastcgi start $ sudo service php5-fastcgi stop </code> ==== nginx.conf ==== spawn-fcgiでもphp-fpmでも同じ <code> server { listen 80; server_name sample.paulownia.jp root /var/www/sites/sample.paulownia.jp/htdocs; index index.html index.php location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } </code> ===== x-accel-redirect ===== nginx をバックエンドアプリケーションのプロキシとして使っている場合に、アプリにproxyした後にnginxがファイルを返すようにする仕組み。 主な用途は認証つきの静的ファイルダウンロード。nginxがファイルを返すためバックエンドアプリケーションに転送負荷をかけずに認証つきのファイルダウンロードを実装できる アプリ側は権限などのチェックを行い、問題なければ200レスポンスに以下のようなレスポンスヘッダをつける <code> X-Accel-Redirect: /download/fifename1.png </code> nginx側 <code> // アプリへのプロキシ location / { proxy_pass: http://127.0.0.1:8080 } // x-accel-redirectを受け取る部分 location /download { internal; // これを忘れると直接パス指定でダウンロードし放題になるので注意 root /var/www/download; } </code> ダウンロードさせるファイルは ''/var/www/download/'' 以下に設置する
nginx.txt
· 最終更新: 2020/05/29 09:30 by
nullpon
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ