== はじめとインストール ==
nginxのは、無料、オープンソース、軽量かつ高性能なHTTPサーバおよびリバースプロキシサーバーです
その性能およびIMAP / POP3プロキシサーバーではなく。Nginxはその高いパフォーマンス、安定性、豊富な機能を備えた、設定が簡単で知られている以下のシステムリソース。
NginxはApacheの性能と安定性を越えて、Webサーバーのサイトとして国内で使用Nginxは、より多くの。
*基底関数
静的ファイル、インデックスファイル、および自動インデックス。
アクセラリバースプロキシ(キャッシュなし)、簡単な負荷分散とフォールトトレランス。
FastCGIの、簡単な負荷分散とフォールトトレランス。
モジュラー構造。フィルターはgzipping、バイト範囲が、応答、およびSSI-フィルタをチャンク備えます。SSIフィルタにおいて、同一またはサブのFastCGIプロキシ要求並行処理の複数の、
SSLとTLS SNIサポート。
*メリット
パフォーマンスの最適化と開発のために設計されたnginxの、パフォーマンスは非常に達成し、効率に焦点を当て、最も重要な考慮事項です。これは、50,000の同時接続をサポートすることができ、それが報告されている高負荷のテストに耐えることができるカーネルポーリングモデルをサポートしています。
nginxのは、負荷分散サーバとして:nginxのは、直接外国のサービスで内部RailsとPHPのプログラムをサポート、また外国のサービスでHTTPプロキシサーバとしてサポートすることができます。
高い安定性とnginxの。他のHTTPサーバピークアクセスに直面し、または誰かが悪意を持って低速接続を開始したときに、それだけで、サーバーを再起動し、応答の物理メモリが頻繁為替損失のうち、実行するには、サーバーを引き起こす可能性があります。
例えば、200以上に、現在のApacheのプロセスと、ウェブの応答速度は明らかに非常に遅いです。nginxのは、そのCPUとメモリ使用率が非常に低い作り、段階的な資源配分の技術を取りました。
nginxの職員が10,000の接続を維持するためには活性を言わなかった、それはlighthttpdよりnginxのが良く、安定性の点で、唯一の2.5Mメモリの占めています。
nginxのは、ホットデプロイをサポートしています。これは、起動することは特に簡単だし、再起動を必要としなくても数ヶ月を実行している、ほとんど7 * 24中断のない操作を行うことができます。また、中断のないサービスの場合には、ソフトウェアのバージョンをアップグレードすることができます。
それはPerlbalよりもシステムリソースのオーバーヘッドやCPU効率はるかに良好であるかどうか、書くためにCを使用してnginxの。
* nginxのインストール
安定版の開発:nginxの0.8.X
現在の安定版:nginxの0.7.X
歴史の安定版:nginxの0.6.X
- 1)PCREのインストール、正規表現のサポート
http://www.pcre.org/
# tar zxvf pcre-7.9.tar.gz
# cd pcre-7.9
#./configure
# make && make install
- 2)のopensslサイトのインストール(オプション)、セキュリティプロトコルのサポート
http://www.openssl.org/
# tar zxvf openssl-0.9.8l.tar.gz
# cd openssl-0.9.8l
#./config
# make && make install
- 3)nginxの実装
# tar zxvf nginx-0.7.64.tar.gz
# cd nginx-0.7.64
インストールと取り付けアセンブリ構成ではありません。 - または--without-MODULE_NAME-MODULE_NAMEで
# ./configure --prefix=/usr/local/nginx/nginx8011 --with-openssl=/usr/include/openssl --with-http_stub_status_module
# make && make install
ディレクトリ構造:
- confに設定ファイル
- htmlの静的なページ
- ログは、ログファイル
- sbinにメインプログラム
- 4)スタート
# /usr/local/nginx/nginx8011/sbin/nginx //启动
スタートアップパラメータ:
-c </パス/に/ config>のデフォルトの代わりに、nginxのためのプロファイルを指定します。
-tが実行されていないが、唯一のプロファイルをテストします。nginxのは、設定ファイルの構文の正しさを確認し、を基準プロファイルにファイルを開こうとします。
-v表示nginxのバージョン。
-V表示nginxのバージョン、コンパイラのバージョンや設定パラメータ。
/ usr / binに/ nginxの-t -c〜/ mynginx.conf:、唯一のテストコンフィギュレーションファイルを起動しません
- 5)起動設定以来
== 概要 ==
#-----------------------------------基本モジュール
# 使用的用户和组
user www www;
# 指定工作进程数
worker_processes 1;
# 可以使用 [ debug | info | notice | warn | error | crit ] 参数
#error_log logs/error.log;
#error_log logs/error.log notice;
# 指定 pid 存放的路径
#pid logs/nginx.pid;
#-----------------------------------イベントモジュール
events {
#每个worker的最大连接数
worker_connections 1024;
}
#----------------------------------- HTTPモジュール
http {
#包含一个文件描述了:不同文件后缀对应的MIME,见案例分析
include mime.types;
#制定默认MIME类型为二进制字节流
default_type application/octet-stream;
#指令 access_log 指派路径、格式和缓存大小。
#access_log off;
#开启调用Linux的sendfile(),提供文件传输效率
sendfile on;
#是否允许使用socket的TCP_NOPUSH或TCP_CORK选项
#tcp_nopush on;
#指定客户端连接保持活动的超时时间,在这个时间之后,服务器会关掉连接。
keepalive_timeout 65;
#设置gzip,压缩文件
#gzip on;
#为后端服务器提供简单的负载均衡
upstream apaches {
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
#配置一台虚拟机
server {
listen 8012;
server_name localhost;
location / {
proxy_pass http://apaches;
}
}
}
== モジュール説明 ==
モジュール部門:
- #Coreコアモジュール
- #Eventsイベントモジュール
- #HTTPのHTTPモジュール
- #Mailメールモジュール
*共通のコンポーネントのコアモジュール
ユーザー
構文:ユーザーのユーザー[グループ]
デフォルト値:誰も誰も
指定されたユーザー・プロセスが実行さnginxの労働者は、デフォルトは誰もアカウント。
エラーログ
语法:のerror_logファイル[デバッグ| 情報| 予告| 警告| エラー| クリティカル]
デフォルト:$ {接頭辞} /logs/error.log
格納位置とエラーログのレベルを開発します。
含める
構文:| *ファイルを含めます
デフォルト値:なし
以下の設定手順はまた、バーチャルホスト/ * confに:などがあります。ファイルの終わり「の.conf」すべてのディレクトリを含ん例えば、グローバル前記と同じ方法をサポートして含めます。
PID
構文:PIDファイル
プロセスIDファイルストレージ。あなたはnginxの設定ファイルを再ロードする/var/log/nginx.pid/ -HUP猫を殺す使用することができます。
worker_processes
構文:番号をworker_processes
デフォルト:1
プロセスの作業の数を指定します。nginxのは、複数のワーカープロセスを使用することができます。
共通のコンポーネントの*イベントモジュール
[パイソン]ビュー無地コピー印刷?
worker_connections
语法:worker_connections数
worker_connectionsのMaxClientsのとworker_procesesて計算することができます。max_clients = worker_processes * worker_connections
ブラウザの訪問には、接続プールを介して複数の接続を確立するようmax_clients = worker_processes * worker_connections / 4:リバースプロキシとしてmax_clientsとして。
つかいます
语法:| [kqueueの使用 rtsig | epollを| / dev /世論調査| 選択| 世論調査| eventport]
複数のイベントモデルは./configureをする時に指定されている場合は、モデルが使用するnginxのイベントを伝えるために1を設定することができます。デフォルトでは、nginxのは、ときに./configure最も適したイベントモデルシステムを識別します。
nginxのイベントモデルは、接続を処理する方法です。
*コアコンポーネントと変数HTTPモジュール
3つのスコープ:HTTP、サーバー、場所
サーバ
構文:サーバー{...}
スコープ:HTTP
仮想マシンの設定。
ロケーション
構文:場所[= |〜|〜* | ^〜] / / URI {...}
適用範囲:サーバー
アクセスパス設定処理方法。
聴く
语法:リスンアドレス:ポート[デフォルトの[バックログ= NUM | rcvbuf =サイズ| sndbuf =サイズ| accept_filter =フィルタ| 繰延| バインド| SSL]
デフォルト値:80を聞きます
適用範囲:サーバー
現在の仮想マシンのリスニングポートを指定します。
エイリアス
構文:エイリアスファイル・パス|ディレクトリ・パス。
スコープ:場所
命令セットは、それがルートと同様である。経路指定された場所のために使用されるが、唯一のファイルシステムパスを使用して、ルート・ファイルを変更しません
ルート
構文:ルートパス
デフォルト値:ルートHTML
スコープ:HTTP、サーバー、場所
エイリアス指定されたディレクトリは、ルートディレクトリを指定した名前を含む同じ名前のディレクトリの場所に親ディレクトリと親ディレクトリに指定され、正確です。
違い:
location /abc/ {
alias /home/html/abc/;
}
この構成では、http:指定が/home/html/abc/a.htmlある//test/abc/a.html。この設定も変更することができます
location /abc/ {
root /home/html/;
}
したがって、あなたは/ホーム/ HTML /ディレクトリの下にnginxのabcのディレクトリを見つけるでしょう、結果は同じです。
HTTPモジュールの他の基本的な構成要素は、ケースと併せて紹介します。
変数:
内部の特定のHTTPヘッダのヘッダ値は、例えば$ HTTP_USER_AGENT、$ HTTP_REFERER ...ヘッダ情報としてケース変数、低下させる、「YOUR-STRANGE-ヘッダー:値」$ http_your_strange_headerを得ることができます。
$ arg_PARAMETER
$ HTTP_HEADER
$ QUERY_STRING = $ argsを
*共通コンポーネントメールモジュール(やや)
== 一般的なシナリオ設定 ==
1.マルチサーバ構成のロードバランシング
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream allserver {
#ip_hash;
server 127.0.0.1:8083 down;
server 127.0.0.1:8084 weight=3;
server 127.0.0.1:8001;
server 127.0.0.1:8002 backup;
}
server {
listen 8012;
server_name localhost;
location / {
proxy_pass http://allserver;
}
}
}
ip_hash、IPを要求することができ、当ip_hash nginxのは、同じバックエンドに向けられ、この方法では、クライアントはIPとセッションの後端部は、固体を確立することができるようになります
- 1.downフロント単一のサーバが一時的に負荷に参加していません
- 2.weightのデフォルトは重量の負荷も大きく、大きい1.weight。
- 3.backup:他のすべてのバックアップマシンダウンまたは非忙しい時間は、バックアップ・マシンを要求します。だから、このマシンは軽い圧力になります。
2.電話またはクライアントのリクエストパラメータによってディレクトリ情報なしでヘッドに転送しました
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream apaches {
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
upstream tomcats {
server 127.0.0.1:8083;
server 127.0.0.1:8084;
}
server {
listen 8012;
server_name localhost;
location / {
set $ismob 0;
# 注意if后的空格
if ( $http_chip ~* "(NOKIA3500)|(NOKIA3200)" ) {
set $ismob 1;
proxy_pass http://apaches;
}
if ( $http_chip ~* "(NOKIA3500)|(NOKIA3200)" ) {
set $ismob 1;
proxy_pass http://tomcats;
}
if ( $ismob = 0 ){
root /usr/local/nginx/nginx8012/html;
}
}
location ~* /rewrite/testXID.jsp {
if ( $arg_XID = "13800138000"){
rewrite ^(.*)$ http://192.168.0.190:8084/testSID.jsp break;
}
}
}
}
- 1、正規表現マッチング:
=完全に等しいです。
〜大文字と小文字を区別試合です。
〜*大文字と小文字を区別しないマッチです。
!〜と!〜*、そしてミスマッチは、大文字と小文字を区別しないマッチは大文字と小文字を区別しませんです。
- 2、一致するファイルとディレクトリは、含みます:
!-F -fとファイルがあるかどうかを決定するために使用します。
!-D -dを使用して、ディレクトリかどうか。
!-E -eファイルやディレクトリが存在するかどうかを決定するために使用します。
実行ファイルかどうかを決定するために使用される-x!-xと。
{...}(-d $ REQUEST_FILENAME)の場合
どのような場所正規表現は以下となります。
1.location〜* /(GIF | JPG | PNG | SWF | FLV)。$ {...}
(。*)2.rewrite ^ $ / nginxの-IE / $ 1ブレーク。
正規表現の例:
abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2パラメータに変換1.複数のディレクトリ
if ($host ~* (.*)/.domain/.com) {
set $sub_name $1;
rewrite ^/sort//(/d+)//?$ /index.php?act=sort&cid=$sub_name&id=$1 last;
}
> / XXXXのID = 123456 - 為替/ 123456 / XXXXの2内容?
rewrite ^/(/d+)/(.+)/ /$2?id=$1 last;
3.抗ホットリンク
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8012;
server_name localhost;
location / {
root html;
}
location ~* ^.+/.(gif|jpg|png|swf|flv|rar|zip)$ {
valid_referers none blocked server_names http://localhost baidu.com;
if ($invalid_referer) {
rewrite ^/ html/50x.html;
}
}
}
}
4.アクセス制御:認証、IP制限
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream tomcats {
server 127.0.0.1:8083;
server 127.0.0.1:8084;
}
server {
listen 8012;
server_name localhost;
location / {
allow 192.168.4.8;
deny all;
auth_basic "index";
auth_basic_user_file ../htpasswd;
proxy_pass http://tomcats;
}
}
}
CPは/ usr / local / apacheの/ apache8001 / binに/ htpasswdのは/ usr / local / binに/
/ usr / local / bin / htpasswdは-c htpasswdのルート
5. nginxのの動作状態を確認します
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream apaches {
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
upstream tomcats {
server 127.0.0.1:8083;
server 127.0.0.1:8084;
}
server {
listen 8012;
server_name localhost;
location / {
proxy_pass http://tomcats;
}
location /NginxStatus {
stub_status on;
access_log off;
auth_basic "NginxStatus";
auth_basic_user_file ../htpasswd;
}
}
}
== 高度なコンテンツ ==
1. nginxのの動作状況を確認します
アクティブな接続:364
サーバーが処理要求を受け付け、
5477919 5477919 17515830
読書:10ライティング:26待機中:328
次のように意味:
アクティブな接続 - nginxのは、現在処理されているアクティブな接続の数。
serveracceptsが要求を扱う - 5477919の接続の合計を扱う、成功(失敗の証拠と)5477919ハンドシェイクを作成し、それは17515830のリクエスト(3.2の平均的なデータ要求を持つ各ハンドシェイク取引)の合計を扱います。
読書 - nginxのは、クライアントの数のヘッダー情報を読み取ります。
書き込み - nginxのは、クライアントのためのカウント情報をヘッダーに戻りました。
待っている - オープンケース生き-維持し、この値が有効に等しい - (読み取り+書き込み)、処理はnginxのを完了したことを意味は、次の待機接続時間要求コマンドを常駐します。
2.ケーススタディ:
Apache Webサーバは、nginxのあるによる変更後、予期しない問題をもたらしています。ディスプレイモジュール複数ページのXSLファイルの解析を表示する「...読み込んでいる」とし、停止している、Firebugのデバッガのフロントエンドを使用しますが、ロードされませんでしたHTTP通常の状態200。
Firebugのデバッグを使用し続けたところ、ときXSLファイルのダウンロードHTTPレスポンスヘッダ、
コンテンツタイプは、10月/ストリームですが、text / xmlでの元のApacheで、その後、/etc/nginx/mime.typesファイルを変更します。XSLの拡張子がxmlのグループの問題解決を追加しました。
信号nginxのを介して制御システム
新しいコンフィギュレーションをロードするために信号を使用します
新しいバイナリコードへのスムーズなアップグレード
4. nginxのレートと同時ダウンロード数を制限
limit_zone limit_conn limit_rate
nginxのため5.転送アドレス
リライト
http://blog.sina.com.cn/s/blog_4b01279a0100hd4c.html:の最後とnginxの書き換えを破るとの違い
6.Nginxの内部:内部機構のnginxのソースコード解析
http://blog.zhuzhaoyuan.com/2009/09/nginx-internals-slides-video/
== 参照 ==
nginxの中国のドキュメント:
http://wiki.nginx.org/NginxChs
サーバログ解析システムアーキテクチャ:
http://www.sudone.com/
nginxの増加サイトのアクセス速度を使用します。
http://www.ibm.com/developerworks/cn/web/wa-lo-nginx/