NginxのロゴNginxは アパッシュHTTPDのためにイゴールSysoevおよびよい取り替え書いている高性能のWebサーバおよび郵便プロキシ・サーバ主導株がである。 Nginxは急速にそれを結合する主要なウェブサイトの市場占有率を好むwordpress.comを高めている。 6月2008年Netcraftの調査ではLiteSpeedはこの調査の間にnginxは百万の場所より多くを得たが、600以上,000の場所を失った; 数で倍増するより多く。 WordPress bloggingシステムは 上流の 挽肉料理モジュールを使用してnginxに最近毎秒8-9千の 要求を機能するために 負荷つりあい機すべてを、変えた。 私達は余りにNginxに私達のウェブサイトのいくつかを動かすにはことにした。 Nginxを形成するための少数の必要な先端そして一般指標はここにある。 これはドキュメンテーション(rtfm)を読むための代理ではない。 但し読書および再読の後でさえもスタックしているときnginxドキュメンテーションはそして次読んだ。 次先端の価値をそれからだけ理解する :)

私達は一般的な構成先端に焦点を合わせる事実上に催すことのために、また。

注: 事実上で催して多数のウェブサイトのために同じIPアドレスを使用しなさい。 各ウェブサイトに多分あなたがwordpressを有する1つのウェブサイトの別の.htaccess (最初にアパッシュHTTPDのWebサーバで催された仮定する)ファイル他でMODxがあるかもしれないだれが三番目のphpBBを多分知っているが、別のルートディレクトリ等が例えばあり。 これらの異なった.htaccessの指令はすべてnginxのコンフィギュレーション・ファイルで入る必要がある。

書直しの規則のための多数の条件を課すことができないことNginxに書直しの規則で主要な限定がある。 アパッシュHTTPDはRewriteCondの多数の指令を使用して一方でよい解決を提供する。

Nginxは一方で声明なら割り当てる。 ブロックなら書直しの規則を中有することができる。 但しブロック自身が限られていれば。 単一にまたは持たないし、多数の条件を加えないためにブロックなら。 またブロックなら入り込むことができない。 他の声明がない。 但し正則表現を使用できる従って次は可能である:

($request_method! ~の^ (得なさい|頭部) $) {
    リターン501;
}

但し2つの変数を一度に点検できない。 特に事実上の催すシナリオで限定は頻繁にshowstoppersのような感知することができる。 但し私は小さい余分な物とあなたの特別な必要性に役立つために考えることが革新的な解決を都合できることが分った。 多くのwordpressを含むPHPによって基づく網ソフトウェアのための例えば非常に共通.htaccessの規則は次のとおりである:

RewriteEngine
RewriteBase/
RewriteCond % {REQUEST_FILENAME}! - f
RewriteCond % {REQUEST_FILENAME}! - d
RewriteRule。 /index.php [L]

と言うindex.phpを代りに実施しなさい要求されたファイル名がないし、また登録簿でなかったり。

但しRewriteCondがほとんどのPHPによって基づくソフトウェアのための同じの間、RewriteRuleはない。 phpBBのための書直しの規則の例えば部分は次のとおりである:

RewriteCond % {REQUEST_FILENAME}! - f
RewriteCond % {REQUEST_FILENAME}! - d
RewriteCond % {REQUEST_FILENAME}! - l
RewriteRuleの^ [a-z0-9_-] +か。(p ([0-9] +) \ .html)か。$ /viewforum.phpか。start=$2 [QSA、L、NC]

第3 RewriteCondを今のところ無視しなさい。 それはまたシンボリック・リンクがあるように確認する。 見ることができるように書直しの規則は異なっている。 単一のIPアドレス(単一サーバー)のWordPressそしてphpBBのウェブサイトを両方催す必要があるために仮定しなさい。 最初の2つの規則が共通であるので書く両方にサーバーを加える次の規則をすることができる:

それがファイル、登録簿またはシンボリック・リンクなら#
(- e $request_filename) {
    壊れ目;
}

これは前のRewriteCondによってがサーバーのすべてのウェブサイトに適当しのと、である同じ事をする(仮定することはサーバーの内のそれを置いた)。

今度はあなたの個々のサーバーのための別の書直しの規則を有することができる。 例えばWordPressのあなたのブログのためにこの規則を使用できる:

#書直しはblog.example.comのために支配する
($hostの~*の^blog \ .example \ .com$) {
    書直しの^ (。*) $ /index.phpか。q=$1は持続する;
    壊れ目;
}

壊れ目は条件が実行されたらそれ以上の規則がのすべての前の記述の後で処理されないことを保障することである。

最後は書直しの規則が一致するときそれ以上の書直しの規則が実行されないことを保障する。

私は事実上に催すことに重点を置いて3つの記事を最近書いてしまった:

  1. 事実上に催さないでのphpBBをNginxのとの/動かす方法
  2. Nginx: 方法内部と同様、登録簿の決断問題を固定する事実上に催すことで方向を変える
  3. 事実上に催すことのためのNginxを形成する方法

少数のより多くの先端を章を完了するために加えよう私達はか。

ファイルをにはじまって防ぐ方法。 (.htaccessのように) Nginxで見られることからか。

上の近くであなたのサーバーブロックの内のこれを加えなさい:

位置の~の/\。 {
    すべてを否定しなさい;
}

これは名前のファイルのためのすべての外的な要求をにはじまって拒絶する (点)。

非WWWの変形にWWW URLの方向を変える方法か。

例えばここにhttp://example.com/yourpageにhttp://www.example.com/yourpageのようなすべての要求のいかにが方向を変えることができるかある:

($hostの~*の^www \。(。*)) {
    $host_without_www $1を置きなさい;
    ^を書直しなさい(。*) $ http://$host_without_www$1のパーマ; # $1は「/yourpage」を、ない「www.example.net/yourpage'含んでいる
}

注: この例はウェブサイトからある

NginxにアパッシュHTTPDの書直しの規則を変える方法規則を書直しなさいか。

私は記事の上のそしてのあるニュアンスを論議した。 私が与えてもいい単一の最も大きい先端はNginxで始めにスラッシュの要求uriと一致するが、RewriteRuleの正則表現がaなしで/始めに要求URIと一致するアパッシュHTTPDのそれある。 これのようなそう例えばアパッシュHTTPDの書直しの規則:

RewriteRule ^ [a-z0-9_-] *-f ([0-9] +)/か。(p ([0-9] +) \ .html)か。$ /viewforum.phpか。f=$1&start=$3 [QSA、L、NC]

nginxのこれはなる:

書直し^/[a-z0-9_-] *-f ([0-9] +)/か。(p ([0-9] +) \ .html)か。$ /viewforum.phpか。f=$1&start=$3は持続する;

簡単、そうですね?

注: RewriteCondは上で説明されるようにを使用して指令なら実行される必要がある。

イメージ/静的なファイルを記録することを止める方法か。
イメージ/静的なファイルのために満期日を指定する方法か。

#直接サーブの静的なファイル
位置の~* ^.+。(JPG|jpeg|gif|css|png|js|ico|html) $ {
    access_log        を離れて;
    切れる           30d;
}

私達のフォーラムでこの記事について論議すること自由に 感じなさい

PS. ソフトウェアを壊すか、または悪意のある目的のために使用することについて切り刻むことをなければ疑問に思えば(割れることはある)。 切り刻むことは親密な細部の主題を知っていることについてある。 残念ながら印刷媒体のジャーナリストは頻繁に切り刻み、割れることの間で混同し、悪名を切り刻むことを与えたあることが。

PPS. 私がまだ探検していない何をnginxとアパッシュHTTPDの性能の違いである。 私はそれで後で更新する。