ホームページ  >  記事  >  運用・保守  >  Nginx の主なアプリケーション シナリオは何ですか?

Nginx の主なアプリケーション シナリオは何ですか?

PHPz
PHPz転載
2023-05-16 14:55:171490ブラウズ

    Nginx の主なアプリケーション シナリオ

    静的 Web サイトの展開

    nginx は、サーバー上に静的ファイルを保存できる http Web サーバーです。 (html、css、画像) は、HTTP プロトコルを通じてブラウザ クライアントに返されます。

    例: 静的リソースのindex.htmlをサーバーにデプロイします

    Nginx の主なアプリケーション シナリオは何ですか?

    index.htmlをLinux /opt/www/test

    にアップロードします

    Nginx の主なアプリケーション シナリオは何ですか?

    #nginx.conf を変更し、/test のリクエストをインターセプトする場所を追加します。root に対応する /opt/www パスは、/test の前の /slash であるルート パスを表します。

    location /test {
                root   /opt/www;
                index  index.html;
            }

    nginx を開始するか、nginx をリロードします

    Nginx の主なアプリケーション シナリオは何ですか?

    アクセスしてみましょう: http://192.168.253.130/test/

    Nginx の主なアプリケーション シナリオは何ですか?

    ロード バランシング

    ロード バランシングは、ハードウェア ロード バランシングとソフトウェア ロード バランシングに分類できます

    F5、Sangfor、Array などのハードウェア ロード バランシングには利点があります。メーカーの専門チームによるサポートを受けられる 安定したパフォーマンス; 欠点は高価であることです

    #Nginx、LVS、HAProxy などのソフトウェア負荷分散。利点は、無料でオープンソースであることです。低コスト

    ポーリング方式: リクエストを順番に割り当てます。バックエンド サーバーでは、サーバーへの実際の接続数や現在のシステム負荷に関係なく、各バックエンド サーバーが平等に扱われます。

    http {
        upstream test{
        ##后端实际服务器 nginx在轮询访问以下几台服务器
            server 10.100.30.1:8080;
            server 10.100.30.2:8080;
            server 10.100.30.3:8080;
            server 10.100.30.4:8080;
        }
        server {
        ##前端拦截入口
            listen 80;
            server_name www.test.com;
            location / { 
                proxy_pass http://test;
            }
        }
    }

    加重ポーリング方式: バックエンド サーバーが異なればマシン構成や現在のシステム負荷も異なる可能性があるため、耐圧性も異なります。

    高構成かつ低負荷のマシンにはより多くのリクエストを処理できるように高い重みを割り当て、低構成かつ高負荷のマシンには低い重みを割り当ててシステム負荷を軽減します。この問題は非常にうまく解決され、リクエストを順番に、重みに従ってバックエンドに分散します。

    http {
        upstream test{
        ##后端实际服务器 nginx在轮询访问以下几台服务器
            server 10.100.30.1:8080 weight=1;
            server 10.100.30.2:8080 weight=3;
            server 10.100.30.3:8080 weight=1;
            server 10.100.30.4:8080 weight=1;
        }
        server {
        ##前端拦截入口
            listen 80;
            server_name www.test.com;
            location / { 
                proxy_pass http://test;
            }
        }
    }

    ソース アドレス ハッシュ方式: クライアントの IP アドレスに従って、ハッシュ関数を通じて値が計算され、その値を使用してサーバー リストのサイズのモジュロ演算が実行されます。取得されるのはクライアント要求であり、サーバーにアクセスするためのシリアル番号です。

    負荷分散にソース アドレス ハッシュ方式を使用すると、バックエンド サーバーのリストが変更されない限り、同じ IP アドレスを持つクライアントは毎回同じバックエンド サーバーにマッピングされてアクセスします。

    upstream test{
            ip_hash;
            server 10.100.30.1:8080 weight=1;
            server 10.100.30.2:8080 weight=3;
            server 10.100.30.3:8080 weight=1;
            server 10.100.30.4:8080 weight=1;
        }

    最小接続数の方法: バックエンド サーバーの構成が異なるため、リクエストの処理が速くなったり、遅くなったりする可能性があります。最小接続数の方法では、現在のバックログに基づいて現在のバックログが動的に選択されます。バックエンド サーバーの接続ステータス。接続数が最も少ないサーバーが現在のリクエストを処理し、バックエンド サービスの利用効率を可能な限り向上させ、各サーバーへの責任を合理的に分散します。

    upstream test{
            least_conn;
            server 10.100.30.1:8080;
            server 10.100.30.2:8080;
            server 10.100.30.3:8080;
            server 10.100.30.4:8080;
        }

    down: 特定のサービスの停止を示します

    upstream test{
            server 10.100.30.1:8080 down;
            server 10.100.30.2:8080;
            server 10.100.30.3:8080;
            server 10.100.30.4:8080;
        }

    backup: バックアップサーバーを指定します 通常、他のサーバーが正常にアクセスできる限り、バックアップサーバーにはアクセスされません。他のサーバーのみ。スタンバイ サーバーは、すべてがダウンしている場合にのみ使用されるため、この方法は通常、ホット デプロイメントの実装に使用されます。コードは最初にスタンバイ サーバーに更新され、その後、通常のサーバーが停止されます。通常のサーバーのデプロイメント後完了、スタンバイ サーバーが再び待機中というステータスの場合、展開プロセス全体でユーザーはダウンタイムを経験することはありません。

    upstream test{
            server 10.100.30.1:8080 backup;
            server 10.100.30.2:8080 backup;
            server 10.100.30.3:8080;
            server 10.100.30.4:8080;
        }

    • 静的プロキシ

    • ##動的と静的の分離
    • #仮想ホスト
    • Nginx の使用シナリオと例
    Nginx は、高性能、高同時実行性の HTTP サーバーであり、その逆も可能です。プロキシサーバーは、静的リソースサーバー、ロードバランサー、リバースプロキシ、キャッシュサーバー、Webサーバーなど、さまざまなシーンで利用できます。

    以下はいくつかの使用シナリオと例です:

    1. 静的リソース サーバー

    Nginx を静的リソース サーバーとして使用する場合、Nginx は要求されたファイルを直接返します。 Webサーバーの負荷を軽減します。このシナリオは通常、静的ファイルのダウンロードやビデオなどの大きなファイルへのアクセスを提供するために使用されます。

    以下は Nginx 構成の例です:

    server {
        listen       80;
        server_name  example.com;
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
        location /images/ {
            alias /var/www/images/;
        }
        location /downloads/ {
            alias /var/www/downloads/;
        }
    }

    上記の構成では、Nginx はルート ディレクトリ (/) にアクセスするリクエストを /usr/share/nginx/html ディレクトリにマップします。要求されたファイルが /images/ ディレクトリ内のファイルである場合、Nginx はそれを /var/www/images/ ディレクトリにマッピングします。要求されたファイルが /downloads/ ディレクトリ内のファイルである場合、Nginx はそれをマッピングします。 /var/www/downloads/ ディレクトリに移動します。

    2. リバースプロキシ

    Nginx をリバース プロキシ サーバーとして使用する場合、Nginx はリクエストを Web サーバーに転送して処理し、処理結果をクライアントに返します。

    このシナリオは通常、負荷分散の実現、Web サーバーのセキュリティの向上、Web サーバーの実際の IP の隠蔽などに使用されます。

    以下は Nginx 構成のサンプルです:

    upstream backend {
        server backend1.example.com:8080 weight=3;
        server backend2.example.com:8080;
    }
    server {
        listen 80;
        server_name example.com;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

    上述配置中,Nginx会将访问根目录(/)的请求转发给后端的Web服务器(backend1.example.com和backend2.example.com),其中backend1.example.com的权重为3,backend2.example.com的权重为1,表示backend1.example.com的处理能力更强。

    在转发请求时,Nginx还会设置HTTP头信息中的Host和X-Real-IP字段,从而隐藏Web服务器的真实IP。

    3.负载均衡器

    在使用Nginx作为负载均衡器时,Nginx会将请求均衡地分发到多个Web服务器上,从而实现高并发、高可用的服务。这种场景通常用于Web应用程序的集群部署、分布式系统的部署等。下面是一个示例Nginx配置:

    upstream backend {
        server backend1.example.com:8080;
        server backend2.example.com:8080;
        server backend3.example.com:8080;
    }
    server {
        listen 80;
        server_name example.com;
        location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        }
    }

    上述配置中,Nginx会将请求均衡地分发到三个Web服务器(backend1.example.com、backend2.example.com和backend3.example.com)上,从而实现负载均衡。

    在转发请求时,Nginx还会设置HTTP头信息中的Host和X-Real-IP字段,从而隐藏Web服务器的真实IP。

    4.缓存服务器

    在使用Nginx作为缓存服务器时,Nginx会缓存Web服务器返回的响应,从而减少对Web服务器的请求。这种场景通常用于提高Web应用程序的性能、降低Web服务器的负载等。下面是一个示例Nginx配置:

    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
    server {
    listen 80;
    server_name example.com;
        location / {
            proxy_cache my_cache;
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

    上述配置中,Nginx会将Web服务器返回的响应缓存到/var/cache/nginx/my_cache目录下,并设置缓存有效期为60分钟。在缓存命中时,Nginx会直接返回缓存的响应,从而减少对Web服务器的请求。

    总之,Nginx具有很强的可扩展性和灵活性,可以根据不同的需求配置不同的使用场景。以上仅是一些示例,实际应用中还有很多其他的使用场景。

    5.反向代理服务器

    在使用Nginx作为反向代理服务器时,Nginx会将客户端请求转发到后端的Web服务器上,并将后端服务器返回的响应转发给客户端。这种场景通常用于隐藏后端服务器的真实IP、提高Web应用程序的可用性等。下面是一个示例Nginx配置:

    server {
        listen 80;
        server_name example.com;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

    上述配置中,Nginx会将客户端请求转发到http://backend上,并设置HTTP头信息中的Host和X-Real-IP字段,从而隐藏后端服务器的真实IP。

    6.WebSocket服务器

    在使用Nginx作为WebSocket服务器时,Nginx会将客户端请求转发到后端的WebSocket服务器上,并实现WebSocket协议的连接管理。这种场景通常用于实时通信、游戏等应用程序。

    下面是一个示例Nginx配置:

    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }
    server {
        listen 80;
        server_name example.com;
        location / {
            proxy_pass http://backend;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

    上述配置中,Nginx会将WebSocket请求转发到http://backend上,并设置HTTP头信息中的Upgrade、Connection、Host和X-Real-IP字段,从而实现WebSocket协议的连接管理。

    总之,Nginx具有很多的使用场景,可以根据不同的需求配置不同的服务器功能。以上仅是一些示例,实际应用中还有很多其他的使用场景。

    以上がNginx の主なアプリケーション シナリオは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。