ホームページ  >  記事  >  運用・保守  >  Nginx 逆生成データベースでフロントエンドとバックエンドの分離を実現する方法

Nginx 逆生成データベースでフロントエンドとバックエンドの分離を実現する方法

WBOY
WBOYオリジナル
2023-06-10 12:01:441542ブラウズ

インターネット技術の急速な発展に伴い、フロントエンドとバックエンドの分離という考え方が開発者によってますます広く使用されるようになりました。フロントエンドとバックエンドの分離により、フロントエンドとバックエンドの開発を分離して並行することができ、開発効率が向上し、開発の複雑さが軽減され、システムのパフォーマンスとスケーラビリティが向上します。

フロントエンドとバックエンドが分離されたアーキテクチャでは、フロントエンドはインターフェイスを介してバックエンドにデータを要求し、バックエンドは要求されたデータを処理してフロントエンドに返します。このプロセスでは、Nginx はリバース プロキシ テクノロジを通じてデータの送信と転送の役割を果たすことができます。この記事では、Nginx 逆生成データベースでフロントエンドとバックエンドの分離を実現する方法を紹介します。

1. Nginx リバース プロキシ データベース

フロントエンドとバックエンドが分離されているアーキテクチャでは、フロントエンドはインターフェイスを通じてバックエンドにデータを要求し、返されたデータを処理します。データベースがパブリック ネットワークに直接公開されると、大きなセキュリティ リスクが発生します。したがって、セキュリティを確保するために、リバース プロキシ テクノロジを使用してデータ送信プロセスをプロキシする必要があります。

Nginx では、リバース プロキシ データベースは次の構成を通じて実装できます:

location /api/ {
    proxy_pass http://localhost:8080;
}

この構成の意味は、フロントエンドがリクエストを「/api/」パスに送信するときです。 , Nginx は、リクエストはローカル ポート 8080 に転送され、バックエンドから返されたデータはフロントエンドに転送されます。このようにして、データベースのセキュリティを保証できます。

2. Nginx 逆生成負荷分散

実際のアプリケーションでは、単一のバックエンド サーバーの負荷が大きすぎると、サーバーの応答時間が遅くなったり、クラッシュしたりすることがあります。したがって、バックエンド サーバーの負荷を分散するには、Nginx 逆生成負荷分散テクノロジを使用する必要があります。

Nginx の負荷分散構成は次のとおりです:

upstream backend {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}

server {
    listen 80;
    server_name localhost;

    location /api/ {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

この構成は、サーバーの 1 つがビジー状態または問題がある場合に、バックエンド サーバー クラスターの 1 つにリクエストを転送することを意味します。 . 、自動的に別のサーバーに切り替わります。

3. Nginx 逆生成キャッシュ

フロントエンドとバックエンドが分離されているアーキテクチャでは、フロントエンドはデータを取得するためにバックエンドにリクエストを頻繁に送信する必要があります。データベースのデータを再度読み取ると、多くの時間とリソースが無駄になります。このとき、システムの応答速度とパフォーマンスを向上させるために、Nginx の逆生成キャッシュ機能を使用して、頻繁に使用されるデータをキャッシュする必要があります。

Nginx のキャッシュ構成は次のとおりです:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
server {
    listen 80;
    server_name localhost;

    location /api/ {
        proxy_pass http://backend;
        proxy_cache my_cache;
        proxy_cache_valid 200 60m;
        proxy_cache_valid 404 1m;
        proxy_cache_bypass $http_pragma;
        proxy_cache_revalidate on;
        proxy_cache_min_uses 2;
        proxy_cache_lock on;
    }
}

この構成の意味は、10M のキャッシュ領域にデータをキャッシュすることです。キャッシュされたデータが一定期間要求されなかった場合、を選択すると、キャッシュの有効期限が切れてクリアされます。同時に、proxy_cache_valid を通じてさまざまなステータス コードのキャッシュ時間を指定でき、proxy_cache_bypass を通じてキャッシュの更新を制御することもできます。

4. Nginx Reverse HTTPS

フロントエンドとバックエンドが分離されたアーキテクチャでは、データ送信のセキュリティを考慮して、HTTP を HTTPS にアップグレードする必要があります。 Nginx では、次の構成を通じてリバース プロキシ HTTPS を実装できます。

server {
    listen 443;
    server_name localhost;

    ssl on;
    ssl_certificate /etc/nginx/cert.pem;
    ssl_certificate_key /etc/nginx/key.pem;
    ssl_session_timeout 5m;

    location /api/ {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

この構成の意味は、ポート 443 をリッスンし、SSL 構成を有効にし、同時に証明書とキーを構成することです。同時に、リクエストをプロキシするときは、関連するヘッダーを設定する必要があります。

概要

フロントエンドとバックエンドの分離アーキテクチャにおいて、Nginx は非常に重要な役割を果たしており、リバース プロキシ技術、ロード バランシング、キャッシュ、HTTPS を通じて安全なデータ送信を実現します。機能を強化し、システムの拡張性を向上させます。 Nginx は、さまざまなタスクやアプリケーション シナリオを実行できる、非常に柔軟で強力なリバース プロキシ サーバーです。

以上がNginx 逆生成データベースでフロントエンドとバックエンドの分離を実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。