nginxの基本構成

5887 ワード

http://ninghao.net/blog/2087
nginxはいくつかのモジュールから構成され、異なるモジュールはそれぞれの命令(Directives)を定義し、命令はモジュールの動作を制御し、nginxのプロファイルでこれらの命令を構成することができる.主なプロファイルはnginx.confで、このプロファイルではincludeコマンドが使用され、他の場所のプロファイルをこの主なプロファイルに含めます.この方法でプロファイルをより筋道立て、メンテナンスしやすくすることができます.
nginx.confが見つかりました
異なるシステムではnginx.confの位置が異なる場合があります.検索を使用すると簡単に見つけることができます.
find / -name nginx.conf

ルートディレクトリからnginx.confファイルの場所を検索するという意味です.CentOS 7では、このファイルは次のとおりです.
/etc/nginx/nginx.conf

/etc/nginxを開くと、このディレクトリの下に他のファイルが含まれます..defaultの最後のファイルは元のファイルのバックアップであるべきです.例えば、nginx.confは本当に使用されているプロファイルです.nginx.conf.defaultはこのファイルのバックアップです.nginx.confに問題が発生した場合、nginx.conf.defaultを元のファイルの代わりにnginx.confに名前を変更することができます.
プロファイルの理解
nginx.confを開くと、nginxのプロファイルのスタイルが表示されます.いくつかの説明があります.これらの内容の前には#番号があり、これは注釈の内容であることを示しています.nginxはこれらの#で始まる内容を気にしません.実際に有効な構成は、#番号で始まるものではありません.これらの構成は一般的に命令の名前で、後ろのスペースにこの命令のパラメータ値を加えて、最後にセミコロンを使います.
main
user nginx;

userは命令の名前で、この命令はシステムがnginxを実行するときに使うユーザー名を設定することができて、ここでnginxというユーザーに設定しました.
worker_processes  1;

ウォーカーカーカープロセスコマンドは、nginxが同時に実行するプロセス数、またはnginxというインスタンスを設定します.nginxにはmasterプロセスとworkerプロセスがあります.masterプロセスの主な仕事は構成の読み取りと鑑定、workerプロセスの維持です.本当にサービスを提供しているのはworkerプロセスで、nginxは有効な方法で、要求を異なるworkerプロセスに分散して処理します.ウォーカーカーカーprocesses命令はこのwokerプロセスの数を設定し、この数はサーバのCPUコア数に基づいて設定することができ、8コアのCPUは8つのworkerプロセスに設定することができる.
error_log  /var/log/nginx/error.log;

error_logコマンドは、エラーログが格納されている場所を設定します.
pid        /run/nginx.pid;

pid命令はnginxのmasterプロセスID(PID)の書き込み位置を設定し、オペレーティングシステムはこのPIDでnginxに信号を送信するプロセスを追跡します.
これらの構成はプロファイルの下に直接配置され、nginxの構成はevents、http、server、locationなど、いくつかのコンテキストの中に配置することもできます.nginxプロファイルの下に直接配置されたコンテキストはmainで、これらの構成はサーバー全体に影響します.
events
events {
    worker_connections  1024;
}

上のこの構成は括弧のセットを使って、コンテキストはeventsで、中はworkerを使っています.connectionsコマンドは、wokerプロセスごとに同時に複数の接続にサービスを提供できるように設定します.その値はいくらに設定して、多くサーバーの上で実践する必要があって、普通はあなたはCPUのコアの数*1024を使うことができて、得た結果はworker_に設定しますconnectionsのパラメータ値.
http
http {
    ...
}

次にhttpコンテキストの構成ブロックです.一般的にサーバの設定はこのブロックに入れます.http構成ブロックにはserver構成ブロックが含まれています.複数のserverブロックを定義して、異なるサーバを構成することができます.仮想ホストです.server構成ブロックの下にはlocationブロックも含まれています.これらのブロックは、リクエストのアドレスに応じて異なるサービスを提供し、静的ファイルに直接渡すリクエストもあり、FastCGIサーバなどの他のサーバ処理に渡すリクエストもあります.
http構成ブロックの構成をいくつか見てみましょう.
include       /etc/nginx/mime.types;

ここではincludeコマンドを使用して、/etc/nginx/mime.typesというファイルの内容をロードし、このファイルにMIME typeを定義し、MIME typeはブラウザに異なるタイプのファイルをどのように処理するかを教えます.
access_log  /var/log/nginx/access.log  main;

access_log命令はアクセスするログ格納の場所を設定し,serverやlocationブロックでもこの命令を使用することができる.
index   index.html index.htm;

indexコマンドは、要求されたアドレスに特定のファイルが含まれていない場合にデフォルトで開くファイルを設定します.ここではindex.html index.htmlに設定されており、ディレクトリの下にindex.htmlがあれば開き、なければindex.htmlを探しに行き、まだ404エラーを返していません.
include /etc/nginx/conf.d/*.conf;

includeコマンドは、他のファイルを含めることができ、プロファイルを清潔に保つことができます.ここには/etc/nginx/conf.d/.conf,.confは.conf接尾辞付きのすべてのファイルを表します.つまり、/etc/nginx/conf.dというディレクトリの下に自分の構成を置くことができます.ファイルの接尾辞が.confであれば、これらの構成ファイルは機能します.
server
server {
    ...
}

これはまた1つの構成ブロックで、コンテキストはserverで、このようなタイプの構成ブロックの中で異なるサーバーを構成することができます.サーバブロックごとに仮想ホストを定義できます.1つのサーバで複数のWebサイトを実行したい場合は、このような構成ブロックを使用するはずです.一般的に、各serverブロックの構成は、1つのファイルに個別に配置できます.
listen       80 default_server;

Listenコマンドは、サーバが傍受するポート番号、IPアドレスまたはホスト名を設定できます.ここでは80ポートが傍受されています.これはhttpプロトコルのデフォルトのポート番号です.default_サーバは、80ポートでの要求が、他の場所で構成された仮想ホストと一致しない場合、デフォルトでこのサーバ(default_server)を使用することを意味します.傍受ポートの前にIPアドレスやローカルのホスト名を付けることができます.このように:127.0.0.1:80、localhost:80、42.120.40.68:80...
server_name  localhost;

server_name、このコマンドはホスト名に基づく仮想ホストを作成することができます.例えば、私のドメイン名はninghao.netです.私はまたこのドメイン名にホスト名を追加しました.www.ninghao.net、blog.ninghao.net、talk.ninghao.net...ユーザーにこれらのホスト名にアクセスするときに、異なるサイトを開きたいと思っています.これにより、複数のserver構成ブロックを作成し、各ブロックにserver_を使用することができます.nameはこの仮想ホストのホスト名を命令し,ユーザがこのホスト名にアクセスするとnginxは要求されたヘッダ上の情報に基づいてどの仮想ホストでユーザにサービスを提供するかを決定する.以下に、いくつかの参考例を示します.
server_name  ninghao.net;

nginxはninghao.netに対するユーザの要求を処理します.
server_name  ninghao.net www.ninghao.net;

nginxはninghao.netとwww.ninghao.netに対するリクエストを処理します.
server_name  *.ninghao.net;

nginxはninghao.netサブドメイン名に対するすべての要求を処理します.引き続きnginx.confのserver構成ブロックを見てみましょう.
root         /usr/share/nginx/html;

rootコマンドは、この仮想ホストのルートディレクトリを構成します.前にnginxをインストールして、ブラウザでサーバーのIPアドレスを開いて、見たテストページは、このディレクトリの下にあります.
location
location / {
}

location構成ブロックはserver構成ブロックに定義されます.nginxがリクエストにどのように応答するかのリソースを構成できます.server_nameコマンドはnginxにドメイン名のリクエストをどのように処理するかを教え、locationコマンドは特定のファイルとディレクトリのリクエストを設定します.上には/,要求がルートディレクトリであれば,この構成ブロックには他のものがないことを示し,ルートディレクトリを要求するとserverブロック,root命令設定のルートディレクトリに用いられ,ユーザにファイルを提供する.各serverブロックには、複数のlocationブロックを定義し、異なるディレクトリまたはファイルのリクエストにどのように応答するかを構成できます.次に、locationの構成例をいくつか見てみましょう.
location ~ \.(gif|jpg|png)$ { ... }

上のlocationの後ろには~号があり、その後ろに正則表現式があることを示しています.ここでは、サーバの.gif、.jpg、または.png形式のファイルを要求することを意味します.具体的にどのように処理するかは、その後ろの括弧に入れることができます.このマッチングは大文字と小文字を区別することに注意してください.リクエストが.GIFの場合、このリクエストはこのlocationの構成に一致しません.大文字と小文字を区別しない場合は、~の後ろに*番号を付けます.
location ~* \.(gif|jpg|png)$ { ... }

locationはマッチングを定義し、より具体的にはそれが勝つ.例えば、1つは/、もう1つは/blogであり、このように/blogというlocationを使用する.^~を使用して、nginxにより具体的なマッチングを検索することを停止させることができます.つまり、このlocationのマッチングを要求された場合は、その中の構成を直接使用して、他のlocation設定のマッチングを検索しないでください.
location ^~ /blog/ { ... }

正確な一致は、=番号で使用できます.
location = / { ... }