分析と回答
nginxのパフォーマンスデータ
- 高い同時接続: 公式には、単一ノードは 50,000 の同時接続をサポートしており、実際の運用環境は 20,000 ~ 30,000 の同時接続に耐えることができます。
- 低メモリ消費量: 30,000 の同時接続の下で、10 個の nginx プロセスを開始しても、150M のメモリのみを消費します (15M×10=150M)
1. フォワードプロキシとリバースプロキシ
いわゆる「プロキシ」とは、内部ネットワークのエッジでハードウェア/ソフトウェア転送リクエストを設定することを指します。「転送」または「逆方向」は、転送が「アウトバウンド要求」であるか「インバウンド要求」であるかによって異なります。
- フォワード プロキシ: クライアントからのアウトバウンド要求を処理し、それらをインターネットに転送し、結果の応答をクライアントに返します。
- リバース プロキシ: インターネットからの受信リクエストを処理し、それらをバックエンド ワーカーに転送し、応答をインターネットに返します。
- フォワード プロキシとリバース プロキシはプロキシの方向が異なりますが、どちらのプロキシも HTTP リクエスト/応答を処理します。
- プロキシサーバーの存在目的:
- 要塞ホスト/隔離されたイントラネット: イントラネット クライアントは外部ネットワークにアクセスできないため、要塞ホストをセットアップし、イントラネットの動作サーバーを非表示にする必要があります。
- プロキシ サーバー アドオン: トラフィックに作用し、キャッシュまたは圧縮を使用してパフォーマンスを向上させ、攻撃から防御し、情報をフィルタリングします。
2. 負荷分散
通常、ロード バランシングにはリバース プロキシが伴います。リバース プロキシには、トラフィックの分散、透過的プロキシ、およびフォールト トレランスの強化という効果があります。
http {
upstream myapp1 {
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
}
}
}
复制代码
負荷分散戦略
- ラウンドロビン 名前が示すように、ポーリング
- 最小接続: 次のリクエストは、アクティブな接続が最も少ないサーバーに送信されます。
- ip-hash: クライアントの IP アドレスとハッシュ関数に従って、リクエストを送信するサーバーを決定します。
3. 動と静の分離
動的と静的の分離は、フロントエンドとバックエンドの分離という一般的な概念に関連しています。
フロントエンドは、nginx を使用して静的リソース サーバーを形成することで、単独で開発およびテストできます。バックエンド サービスは、追加のリソースとしてのみ使用されます。
次の例は、静的リソースが /usr/share/nginx/html にあり、動的リソース パスに API または Swagger が含まれていることを示しています。
upstream eap_website {
server eapwebsite;
}
server {
listen 80;
location / { # 静态资源
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri /index.html;
}
location ^~ /api/ { # 动态资源
proxy_pass http://eap_website/api/;
}
location ^~ /swagger/ { # 动态资源
proxy_pass http://eap_website/swagger/;
}
}
Meow Interview Assistant:面接の質問に対するワンストップ ソリューション WeChat アプレット[Meow Interview Assistant]を検索するか、 [Meow Interview Assistant] -> Interview Assistant を たどって 質問に無料で回答できます。面接に関する優れた知識やスキルをお持ちの方は、ぜひ共有してください。