Nginx入門
Nginxとは
Nginxは高性能なhttpおよびリバースプロキシサーバで、小さなメモリフットプリントと高い並行処理能力を特徴としています。Nginxはパフォーマンスを最も重要視し、パフォーマンスの最適化のために特別に開発されました。
リバースプロキシ
フォワードプロキシ: ブラウザにプロキシサーバを設定し、プロキシサーバ経由でインターネットにアクセスします。
リバースプロキシ:リバースプロキシサーバに要求を送信し、リバースプロキシサーバは、データを取得するターゲットサーバを選択し、クライアントに戻り、この時点で、リバースプロキシサーバとターゲットサーバは、外の世界にサーバーであり、露出は、プロキシサーバのアドレスです。
ロードバランシング
リクエストの数が多すぎて1台のサーバーで解決できない場合、サーバーの数を増やし、様々なサーバーにリクエストを分散させ、元の1台のサーバーへのリクエストを複数のサーバーに分散されたリクエストに変更することが負荷分散です。
移動の分離
サーバーの解決速度を速めるために、動的ページと静的ページは解決するために異なるサーバーに与えることができ、解決速度を速め、元の単一のサーバーの圧力を軽減します。
Nginxのインストール
Nginxはいくつかの依存関係を必要とし、それぞれ、pcre、openssl、zlib、nginxのインストールでは、これらの依存関係をインストールする必要があります。
pcre依存関係のインストール
- 次のコマンドでpcreパッケージをダウンロードします。
wget http://..////./-...gz
- zipファイルを解凍
tar -xvf pcre-8.37.tar.gz
- 解凍したディレクトリに移動し、以下のコマンドを実行します。
- 以下のコマンドを使用してコンパイルし、インストールします。
./configure
- インストールされたpcreのバージョン番号を確認します。
make && make install
openssl、zlib、その他の依存関係のインストール
pcre-config --version
nginxのインストール
- nginxの公式サイトnginx.org/download/nginxをダウンロードします;
- zipアーカイブをサーバにドラッグします。
- 使用命令
tar -xvf nginx-1.12.2.tar.gz
解压压缩包; - コマンド./configure
- 使用命令
make && make isntall
编译安装;
インストールに成功すると、nginxのsbinフォルダにスタートアップスクリプトが入ったフォルダがusr, local/nginxに追加されます。
nginxの起動
フォルダ内で、次のコマンドを使用してnginxを起動します。
./nginxnginxのデフォルトポートは80で、以下のようなページが表示されます;
Nginxの一般的なコマンド
/usr/local/nginx/sbin
これらのコマンドを使用するには、フォルダに入る必要があります。
- nginxのバージョン番号を表示するには
- nginx
- nginx
- リロードnginx
Nginx設定ファイル
./nginx
nginxの設定ファイルはnginx.confです。 nginx.confからコメントを削除します。
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
nginx設定ファイルには3つのセクションがあります。
1.グローバルブロック
コンフィギュレーションファイルの先頭からイベントブロックまでの内容は、主にnginxサーバの全体的な動作のためのいくつかのコンフィギュレーションディレクティブを設定します。
worker_processes 1.これはnginxが並行処理を行うための重要な設定を表し、値が大きいほど並行処理能力が高くなります。ただし、ハードウェアやソフトウェアなどの制約を受けます。
2.イベントブロック
eventsブロックは主にnginxサーバとユーザのネットワーク間の接続に影響を与えるコマンドを含みます。
worker_connections 1024.これは nginx がサポートする最大接続数を表します。
3. http グローバルブロック
nginxサーバで最も頻繁に設定される部分はhttpグローバルブロックで、httpブロックとサーバブロックで構成されます。
Nginx 設定 リバースプロキシ
ngixプロキシプロセス
ローカルブラウザからnginxサーバにアクセスする場合、nginxサーバのリバースプロキシであるtomcatサーバに、nginxからtomcatへの直接アクセスを要求します。 tomcatのインストールはここでは行わず、tomcatとnginxを同じサーバにインストールします。
IPとドメイン名のバインディング関係の設定
nginxはドメイン名を持っていないので、デモのために、nginxサーバのipとドメイン名のバインディングをローカルのホスト・ファイルに設定しました。tar -xvf nginx-1.12.2.tar.gz
このホストファイルは .ホストファイルに新しい行を追加します:
./nginx
前のipはサーバのipアドレスで、後ろのドメイン名はipをバインドするために使用したランダムなドメイン名です。設定後、ドメイン名を使って tomcat にアクセスし、tomcat のデフォルト・ページを要求できれば、設定は成功です。
nginx でのリクエスト転送の設定
./nginx -v
上記のデフォルト設定ファイルを変更します:
./nginx
この設定は、47.104.xxx.xxx:80のリクエストが47.104.xxx.xxx:8080に転送されることを意味します。
これで、ブラウザから www.javatrip.com にアクセスすると、tomcat に直接転送されることがわかり、単純なリバースプロキシが完成します。
サフィックスに従って要求を分散
新しいdevとprodディレクトリの下にある2つのtomcat下のwebappsディレクトリで、それぞれ8081にポート番号を設定し、別のtomcatを解凍し、ディレクトリにファイルを書き込みます。
/usr/local/nginx/sbin
リクエストはtomcat8080に、リクエストはtomcat8081に転送してください。 nginxがリッスンするポート番号は7001になります。 nginxの設定ファイルを開き、以下のように新しいサーバを作成してください:
./nginx -s stop
次に、`www.javatrip.com:7001/dev/a.html和www.javatrip.com:7001/prod/a.html' にそれぞれアクセスしてみてください:
このうち、~はフォワーディングを設定するときに使うもので、意味は次の通りです:
- = 厳密一致。このクエリがマッチした場合、検索は中止され、リクエストは直ちに処理されます。
- ~ は大文字と小文字を区別します。
- !~ は大文字小文字を区別しないマッチです。
- ~* は大文字小文字を区別しないマッチ
- !~* は大文字小文字を区別しません。
- ^~ この接頭辞が正規文字列に使われると、パスがマッチしても正規表現を テストしないように nginx に指示します。
Nginxの設定 ロードバランシング
ロードバランシングとは
ロードバランシングとは、複数のオペレーションユニット間で負荷を分散し、バランスをとることを意味します。高パフォーマンス、単一障害点、スケーラビリティのための究極のソリューションです。
今、私はwww.javatrip.com:7001/prod/a.html、要求は、上記の2つのtomcat、まず第一に、tomcat8080で、新しいprodフォルダにa.htmlファイルを置くに分散される訪問することです効果を達成したいと思います。このようにして、tomcat8081とtomcat8080は、prodファイルとa.htmlファイルを持つことになります。
nginx.confの設定
まず、http ブロックで 2 つの tomcat サービス・リストを構成します。
./nginx -s reload
次に、サーバ・ブロックでルールを構成します:
#user nobody;
worker_processes 1;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}
テスト結果
www.javatrip.com:7001/prod/a.html にアクセスし、さらに数回更新します。一部のリクエストは tomcat8080 に、一部のリクエストは tomcat8081 に送信されることがわかります。
nginx がサポートするいくつかのロードポリシー
- ポーリング: 各リクエストは時系列で1つずつ異なるサーバに割り当てられ、サーバがダウンしている場合は自動的にカリングされます。
worker_processes 1;
- weight: デフォルトは 1 で、weight が高いほど多くのリクエストが割り当てられます。
worker_connections 1024;
- ip ハッシュ: 各リクエストはアクセスした ip のハッシュ結果に従って割り当てられます。
.xxx.xxx www.javatrip.com
- fair: バックエンドの応答時間に従って割り当てられ、応答時間が短いほど、より多くのリクエストが割り当てられます。
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
動きの分離は実際の開発ではあまり使われないため、書かなくなりました。この記事はnginxの入門編として、基本的なところをここまで。