ホームページ  >  記事  >  運用・保守  >  Nginxの基本機能例分析

Nginxの基本機能例分析

王林
王林転載
2023-05-11 23:31:041440ブラウズ

1. 静的 http サーバー

まず、nginx はサーバー上の静的ファイル (html や画像など) を http 経由でクライアントに表示できる http サーバーです。プロトコル。構成:

server {

  listen 80; # 端口号

  location / {

    root /usr/share/nginx/html; # 静态文件路径

  }

}

2. リバース プロキシ サーバー

リバース プロキシとは何ですか?

クライアントは http プロトコルを通じて Web サイトのアプリケーション サーバーに直接アクセスできます。Web サイト管理者は途中に nginx を追加できます。クライアントは nginx を要求し、nginx はアプリケーション サーバーに要求し、その結果をクライアントに返します。 . このnginxはリバースプロキシサーバーです。

Nginxの基本機能例分析

Configuration:

server {

  listen 80;

  location / {

    proxy_pass http://192.168.20.1:8080; # 应用服务器http地址

  }

}

http経由でサーバーに直接アクセスできるのに、なぜ途中にリバースプロキシを追加する必要があるのでしょうか?不要ではないでしょうか? ?リバースプロキシは何をするのですか?

さらに下に見てみると、以下のロードバランシングや仮想ホストなどはすべてリバースプロキシをベースにしていますが、もちろんリバースプロキシの機能はこれだけではありません。

3. 負荷分散

Web サイトのトラフィックが非常に大きい場合、Web マスターは喜んでお金を稼ぎますが、同時に問題にも直面します。 Web サイトの速度がどんどん遅くなっているため、1 つのサーバーではもはや十分ではありません。

つまり、同じアプリケーションが複数のサーバーにデプロイされ、多数のユーザーからのリクエストが複数のマシンに分散されて処理されます。同時に、サーバーの 1 つがクラッシュしても、他のサーバーが正常に動作している限り、ユーザーの使用に影響を与えないという利点もあります。 nginx は、リバース プロキシを通じて負荷分散を実現できます。

Nginxの基本機能例分析

構成:

upstream myapp {

  server 192.168.20.1:8080; # 应用服务器1

  server 192.168.20.2:8080; # 应用服务器2

}

server {

  listen 80;

  location / {

    proxy_pass http://myapp;

  }

}

上記の構成は、リクエスト ポーリングをアプリケーション サーバーに割り当てます。つまり、クライアントからの複数のリクエストは、複数の処理済みサーバーによって処理される可能性があります。異なるサーバーによって。 ip-hash を使用すると、クライアントの IP アドレスのハッシュ値に基づいて処理するリクエストを固定サーバーに割り当てることができます。

構成:

upstream myapp {

  ip_hash; # 根据客户端ip地址hash值将请求分配给固定的一个服务器处理

  server 192.168.20.1:8080;

  server 192.168.20.2:8080;

}

server {

  listen 80;

  location / {

    proxy_pass http://myapp;

  }

}

また、サーバーのハードウェア構成が良いか悪いかによって、ほとんどのリクエストを良好なサーバーに割り当て、少数のリクエストを不良サーバーに割り当てたい場合は、体重を使ってコントロールすることができます。

設定:

upstream myapp {

  server 192.168.20.1:8080 weight=3; # 该服务器处理3/4请求

  server 192.168.20.2:8080; # weight默认为1,该服务器处理1/4请求

}

server {

  listen 80;

  location / {

    proxy_pass http://myapp;

  }

}

4. 仮想ホスト

一部の Web サイトには大量のアクセスがあり、負荷分散が必要です。ただし、すべての Web サイトが優れているわけではなく、アクセス数が少ないため、同じサーバー上に複数の Web サイトを配置してコストを節約する必要がある Web サイトもあります。

たとえば、2 つの Web サイト www.aaa.com と www.bbb.com が同じサーバー上に展開されている場合、2 つのドメイン名は同じ IP アドレスに解決されますが、ユーザーは 2 つの Web サイトを通じて両方を開くことができます。ドメイン名: まったく異なる Web サイトは、2 つのサーバーにアクセスするのと同じように、互いに影響を与えないため、2 つの仮想ホストと呼ばれます。

構成:

server {

  listen 80 default_server;

  server_name _;

  return 444; # 过滤其他域名的请求,返回444状态码

}

server {

  listen 80;

  server_name www.aaa.com; # www.aaa.com域名

  location / {

    proxy_pass http://localhost:8080; # 对应端口号8080

  }

}

server {

  listen 80;

  server_name www.bbb.com; # www.bbb.com域名

  location / {

    proxy_pass http://localhost:8081; # 对应端口号8081

  }

}

サーバー 8080 と 8081 でそれぞれアプリケーションを開きます。クライアントは、異なるドメイン名を介してアクセスし、server_name に従って、対応するアプリケーション サーバーにリバース プロキシできます。

仮想ホストの原理は、http リクエスト ヘッダーのホストが server_name と一致するかどうかによって実現されます。興味のある学生は、http プロトコルを学習できます。

さらに、server_name 構成では、悪意を持って特定のドメイン名をホスト サーバーにポイントするユーザーを除外することもできます。

5、fastcgi

nginx 自体は php などの言語をサポートしていませんが、nginx を通じて特定の言語またはフレームワークにリクエストをスローできます。 fastcgi (php、python、perl など)。

server {

  listen 80;

  location ~ \.php$ {

    include fastcgi_params;

    fastcgi_param script_filename /php文件路径$fastcgi_script_name; # php文件路径

    fastcgi_pass 127.0.0.1:9000; # php-fpm地址和端口号

    # 另一种方式:fastcgi_pass unix:/var/run/php5-fpm.sock;

  }

}

この設定では、.php で終わるリクエストは php-fpm に渡され、fashcgi を通じて処理されます。php-fpm は PHP の fastcgi マネージャーです。この記事では紹介しなかった、fashcgi に関するその他の情報も確認できます。

fastcgi_pass と proxy_pass の違いは何ですか?次の図は理解に役立ちます:

Nginxの基本機能例分析

以上がNginxの基本機能例分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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