基本概念
nginx の最も一般的な用途は、リバース プロキシ サービスを提供することです。では、リバース プロキシとは何でしょうか?この魔法の国では、本土の多くの同胞がフォワード プロキシを使用したことがあると思いますが、その原理は大まかに次のとおりです:
プロキシ サーバーは、クライアント側の仲介者としてリクエストを受け取ります。 、実際のクライアントを非表示にし、サーバーからリソースを取得します。プロキシ サーバーが万里の長城の外にある場合、万里の長城を越えるという目的を達成するのにも役立ちます。リバースプロキシとはその名のとおり、プロキシサーバーを逆にサーバーの仲介として利用し、実際にサービスを提供するサーバーを隠蔽するもので、原理は大まかに以下のとおりです。もちろんこれは万里の長城を迂回するためではなく、セキュリティや負荷分散などの一連の機能を実現するために行われます。いわゆるセキュリティとは、クライアントのリクエストがイントラネット サーバーに直接送信されるのではなく、プロキシを介して転送されることを意味し、この層ではセキュリティ フィルタリング、フロー制御、DDoS 防止などの一連の戦略を実装できます。負荷分散とは、バックエンドで実際にサービスを提供するサーバーの数を水平方向に拡張し、エージェントがルールに従ってリクエストを各サーバーに転送することで、各サーバーの負荷がほぼ均衡するようにすることを意味します。
そして、nginx は非常に人気のあるリバース プロキシ サービスです。
ubuntu では、コンパイルとインストールのプロセスをスキップして、直接 apt-getコードをコピーします。コードは次のとおりです。
sudo apt-get install nginx
コードをコピーします。 コードは次のとおりです。
sudo service nginx start
初期設定
nginx のデフォルト設定ファイルは、にあります。コードをコピーします。コードは次のとおりです。
/etc/nginx /nginx.conf
コードをコピーします コードは次のとおりです:
include /etc/nginx/sites-enabled/*;
server {
server_name localhost;listen 80default_server;
listen [::]:80default_server ipv6only=on;
root /usr/share/nginx/html;
indexindex.htmlindex.htm;
location/ {
}
}
大規模な Web サイトには通常、多くの下位サイトがあり、それぞれに対応するサービスを提供する独自のサーバーがあります。これらの異なるサービス構成は、上記の構成におけるサーバーの意味である仮想ホストと呼ばれる概念を通じて分離できます。たとえば、Google には翻訳とアカデミックの 2 つの製品があります。nginx 構成ファイルで 2 つのサーバーを構成できます。サーバー名はそれぞれ、translate.google.com とAcademic.google.com です。このようにして、異なる URL リクエストが対応します。 nginx の対応する設定に転送し、別のバックエンド サーバーに転送します。ここでのサーバー名は、クライアントの http リクエストのホスト行と一致します。
この例では、server_name は localhost であるため、ブラウザーで localhost を介してページ設定にアクセスできます。次の 2 つの listen は、それぞれ ipv4 および ipv6 の listen ポートに対応します。8080 に設定すると、localhost:8080 経由でのみデフォルト ページにアクセスできます。
ここでは、/ に一致する場所、つまりローカルホストの /xxx または /yyy で始まるすべてのリクエストは、次の構成を通過する必要があります。この単純かつ大雑把な一致に加えて、nginx は通常の完全な等価性やその他の細かい一致もサポートしています。マッチング方法。また、tryfiles は、nginx が次の順序でファイルにアクセスし、最初に一致したファイルを返すことを意味します。たとえば、localhost/test をリクエストすると、/test ファイルが検索され、見つからない場合は /test/ が検索され、見つからない場合は 404 が返されます。さらに、ロケーション設定で proxypass を使用してリバース プロキシと負荷分散を実装することもできますが、この最も単純な設定には
が含まれていません。ここで、root はローカル フォルダをすべての URL リクエスト パスのルートとして参照します。たとえば、ユーザーが localhost/test をリクエストした場合、nginx は /usr/share/nginx/html フォルダーでテスト ファイルを検索して返します。
index はデフォルトのアクセスページで、localhost にアクセスすると、ルートファイルパスにあるindex.htmlとindex.htmを順に自動的に検索し、最初に見つかった結果を返します。
場所高度な構成
上記の構成は、ユーザーの URL をローカル ファイルにマップするだけであり、伝説的なリバース プロキシと負荷分散は実装しません (もちろん、nginx は静的ディストリビューションを実行します)。ファイルの数も非常に印象的です)、さらに場所を設定して、それを実現する方法を見てみましょう。
設定は非常に簡単です。たとえば、実際にサービスを提供するマシンのポート 8080 にすべてのリクエストを転送したい場合は、次のようにするだけです:
コードをコピーします。コードは次のとおりです。
location / {
proxy_pass 123.34.56.67:8080;
}
このようにして、すべてのリクエストは 123.34.56.67 へのリバース プロキシになります。このようにして、リバース プロキシ機能が実装されましたが、サーバーにプロキシできる場合、どのように負荷分散を行うことができるでしょうか?これには、nginx のアップストリーム モジュールが必要です。
コードをコピーします。コードは次のとおりです:
アップストリーム バックエンド {
ip_hash;
サーバー バックエンド 1.example.com;
サーバー バックエンド 2。 example.com ;
サーバー backend3.example.com;
サーバー backend4.example.com;
}
location / {
proxy_pass http://backend;
}
上流のマシンのグループを指定し、このグループに backend という名前を付けました。このように、proxypass では、リクエストが上流のバックエンドに転送される限り、リバース プロキシと 4 台の負荷分散を実現できます。機械。 iphash は、ユーザーの IP アドレスに従って割り当てを行うバランスのとれた方法であることを示します。
設定を有効にするには、nginx を再起動する必要はなく、設定をリロードするだけで済みます。
コードをコピーします。コードは次のとおりです。
sudo service nginx reload
以上がNginxの初期設定方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。