nginx
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
nginx [2011/09/10 07:25] – nullpon | nginx [2020/05/29 09:30] (現在) – nullpon | ||
---|---|---|---|
行 1: | 行 1: | ||
====== nginx ====== | ====== nginx ====== | ||
- | 非同期IOで動作する高速なHTTPサーバ。 | + | 非同期IOで動作する高速なHTTPサーバ。読み方は「えんじんえっくす」 |
行 58: | 行 58: | ||
※ この設定は1 worker_processesあたりの設定? worker_connectionsと同じで良いのか? 仮にそうだとしてkeep aliveやssiを使っていると1コネクションで複数ファイルを開くので、その場合はconnectionより大きい値を指定しないといけない? 要調査。 | ※ この設定は1 worker_processesあたりの設定? worker_connectionsと同じで良いのか? 仮にそうだとしてkeep aliveやssiを使っていると1コネクションで複数ファイルを開くので、その場合はconnectionより大きい値を指定しないといけない? 要調査。 | ||
- | ===== passenger | + | ===== ログローテーション |
- | nginx + passenger でrailsアプリを起動する。 | + | Ubuntuのログローテーションの例(月単位でローテーション) |
- | + | ||
- | Ubuntu | + | |
< | < | ||
- | $ sudo aptitude install build-essential | + | / |
- | $ sudo aptitude install libcurl4-openssl-dev | + | |
+ | missingok | ||
+ | rotate 12 | ||
+ | compress | ||
+ | delaycompress | ||
+ | notifempty | ||
+ | create 640 root adm | ||
+ | sharedscripts | ||
+ | postrotate | ||
+ | test -f / | ||
+ | endscript | ||
+ | } | ||
</ | </ | ||
- | rubyやgem、rails等のインストール後、gemでpassengerをインストール。ここではバージョンを明示しているが、特に指定せず最新版を入れると良い。 | + | nginxはUSR1シグナルでログファイルを開き直す。 |
- | < | ||
- | $ sudo gem install -v=3.0.7 passenger --no-rdoc --no-ri | ||
- | $ sudo / | ||
- | </ | ||
- | |||
- | とりあえず起動と停止 | ||
- | |||
- | < | ||
- | $ sudo / | ||
- | $ sudo / | ||
- | </ | ||
- | Railsアプリの実行ユーザはAapche版と同じく environment.rb の所有ユーザとなる。 | ||
==== nginx.confに設定を追加 ==== | ==== nginx.confに設定を追加 ==== | ||
行 138: | 行 135: | ||
===== PHP ===== | ===== PHP ===== | ||
- | FastCGIでphpを動作させる。php-fpmまたはspawn-fcgiを使う。 | + | Apacheにおけるmod_phpのようなモジュールは無いので、FastCGIでphpを動作させる。php-fpmまたはspawn-fcgiを使う。 |
==== php-fpm ==== | ==== php-fpm ==== | ||
PHP-FPM(PHP FastCGI Process Manager)はPHP5.3から導入されたFCGIのプロセス管理ツール。 | PHP-FPM(PHP FastCGI Process Manager)はPHP5.3から導入されたFCGIのプロセス管理ツール。 | ||
- | Ubuntu 10.04の標準aptリポジトリには無い。nginxチームが作成したリポジトリにパッケージがある。 | + | Ubuntu 10.04標準のaptリポジトリにはパッケージが無い。nginxチームが作成したリポジトリにあるので、そのリポジトリを追加する。ただし標準のリポジトリではないので、次のLTS(12.04)リリース後はサポートされない可能性もあるので注意。 |
< | < | ||
$ sudo aptitude install python-software-properties | $ sudo aptitude install python-software-properties | ||
$ sudo add-apt-repository ppa: | $ sudo add-apt-repository ppa: | ||
$ sudo aptitude update | $ sudo aptitude update | ||
- | $ sudo aptitude install php5-fpm | ||
</ | </ | ||
- | 起動スクリプトも作成される。デフォルトでは9000番ポートでFCGIが起動する。 | + | インストール。起動スクリプトやconfigも作成される。デフォルトではport 9000でFCGIを起動する。 |
+ | < | ||
+ | $ sudo aptitude install php5-fpm | ||
+ | </ | ||
起動と停止 | 起動と停止 | ||
行 160: | 行 158: | ||
$ sudo service php5-fpm stop | $ sudo service php5-fpm stop | ||
</ | </ | ||
+ | |||
+ | なお、PHPをFCGIプロセスとして起動するためには、FCGIを有効にしてPHPをビルドする必要がある。aptのPHPは有効になっているので気にしなくていいが独自ビルドする場合は注意する。 | ||
==== spawn-fcgi ==== | ==== spawn-fcgi ==== | ||
行 242: | 行 242: | ||
</ | </ | ||
+ | ===== x-accel-redirect ===== | ||
+ | |||
+ | nginx をバックエンドアプリケーションのプロキシとして使っている場合に、アプリにproxyした後にnginxがファイルを返すようにする仕組み。 | ||
+ | |||
+ | 主な用途は認証つきの静的ファイルダウンロード。nginxがファイルを返すためバックエンドアプリケーションに転送負荷をかけずに認証つきのファイルダウンロードを実装できる | ||
+ | |||
+ | アプリ側は権限などのチェックを行い、問題なければ200レスポンスに以下のようなレスポンスヘッダをつける | ||
+ | |||
+ | < | ||
+ | X-Accel-Redirect: | ||
+ | </ | ||
+ | |||
+ | nginx側 | ||
+ | |||
+ | < | ||
+ | // アプリへのプロキシ | ||
+ | location / { | ||
+ | proxy_pass: http:// | ||
+ | } | ||
+ | |||
+ | // x-accel-redirectを受け取る部分 | ||
+ | location /download { | ||
+ | internal; | ||
+ | root / | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ダウンロードさせるファイルは ''/ |
nginx.1315639513.txt.gz · 最終更新: 2011/09/10 07:25 by nullpon