ホームページ >運用・保守 >Nginx >nginxの主な機能の紹介

nginxの主な機能の紹介

王林
王林転載
2020-09-14 11:42:374599ブラウズ

nginxの主な機能の紹介

nginx の主な機能の紹介:

(推奨チュートリアル: nginx チュートリアル)

1. リバース プロキシ

リバース プロキシは、Nginx が行う最も一般的なものであるはずです。リバース プロキシとは何ですか? 百度百科事典には次のように記載されています: リバース プロキシ (リバース プロキシ) 方式とは、プロキシ サーバーを使用してインターネット トラフィックを受け入れることを指します。接続要求は内部ネットワーク上のサーバーに転送され、サーバーから得られた結果はインターネット上の接続を要求したクライアントに返されますが、このときプロキシ サーバーは外部からはリバース プロキシ サーバーとして見えます。

簡単に言えば、実サーバーは外部ネットワークから直接アクセスできないため、プロキシサーバーが必要ですプロキシサーバーは外部ネットワークからアクセスでき、実サーバーと同じネットワーク環境にあります。もちろん、ポートが異なるだけで同じサーバーを使用することも可能です。

リバース プロキシを実装するための簡単なコードを以下に貼り付けます:

server {  
      listen      80;                                                        
      server_name  localhost;                                              
      client_max_body_size 1024M;

      location / {
          proxy_pass http://localhost:8080;
          proxy_set_header Host $host:$server_port;
      }
  }

構成ファイルを保存して Nginx を起動します。これにより、localhost にアクセスすると、localhost:8080 にアクセスするのと同じになります。

2. 負荷分散

負荷分散も Nginx の一般的に使用される機能です。負荷分散とは、Web サーバー、FTP サーバー、エンタープライズ キー アプリケーションなどの複数のオペレーティング ユニットに実行を割り当てることを意味します。サーバーやその他のミッションクリティカルなサーバーなどを統合して、一緒に作業タスクを完了します。

簡単に説明すると、サーバーが2台以上ある場合、指定されたサーバーにリクエストをルールに従ってランダムに振り分けて処理するというもので、ロードバランシングの設定では一般にリバースプロキシの設定も同時に必要になりますが、リバース プロキシはリバース プロキシを経由してロード バランシングに進みます。 Nginx は現在、3 つの組み込みの負荷分散戦略と、一般的に使用される 2 つのサードパーティ戦略をサポートしています。

1. RR (デフォルト)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
简单配置
  upstream test {
      server localhost:8080;
      server localhost:8081;
  }
  server {
      listen      81;                                                        
      server_name  localhost;                                              
      client_max_body_size 1024M;

      location / {
          proxy_pass http://test;
          proxy_set_header Host $host:$server_port;
      }
  }

2 つのサーバーを構成しました。もちろん実際には 1 つですが、ポートが異なり、8081 サーバーは存在しません。 http://localhostにアクセスするとデフォルトでhttp://localhost:8080にジャンプしますが、これはNginxがサーバーの状態を自動的に判断するためです。

サーバーにアクセスできない(サーバーがダウンしている)場合、このサーバーにジャンプしないため、サーバーがダウンして使用に影響を与える状況も回避されます。Nginx はデフォルトで RR ポリシーになっているため、追加の設定は必要ありません。

2. 重み

ポーリング確率を指定します。重みはアクセス率に比例し、バックエンド サーバーのパフォーマンスが不均一な場合に使用されます。

例:

upstream test {
     server localhost:8080 weight=9;
     server localhost:8081 weight=1;
 }

通常、8081 にアクセスするのは 10 回に 1 回だけで、8080 にアクセスするのは 9 回です。

3. ip_hash

上記 2 つの方法には問題があり、次のリクエストが来たときにリクエストが別のサーバーに分散される可能性があります。データを保存するためのセッション)ですが、現時点で大きな問題があります。例えば、セッションにログイン情報が保存されている場合、別のサーバーにジャンプするときに再度ログインする必要があり、クライアントの場合は何度もログインする必要があります。 1 つのサーバーのみにアクセスする場合は、iphash を使用する必要があります。

iphash の各リクエストはアクセス IP のハッシュ結果に従って割り当てられるため、各訪問者はバックエンド サーバーに固定的にアクセスできるため、セッションの問題を解決できます。

upstream test {
     ip_hash;
     server localhost:8080;
     server localhost:8081;
 }

4. 公正 (サードパーティ)

リクエストはバックエンド サーバーの応答時間に応じて割り当てられ、応答時間の短いリクエストが最初に割り当てられます。

upstream backend { 
    fair; 
    server localhost:8080;
    server localhost:8081;
}

5. url_hash (サードパーティ)

アクセスした URL のハッシュ結果に応じてリクエストを振り分け、各 URL が同じバックエンドサーバーに振り分けられるようにするとより効果的ですバックエンドサーバーがキャッシュされている場合。アップストリームにハッシュ ステートメントを追加します。重みなどの他のパラメータはサーバー ステートメントに記述できません。Hash_method は使用されるハッシュ アルゴリズムです。

upstream backend { 
    hash $request_uri; 
    hash_method crc32; 
    server localhost:8080;
    server localhost:8081;
}

上記の 5 種類の負荷分散は、さまざまな状況での使用に適しているため、実際の状況に応じて使用する戦略モードを選択できます。ただし、fair と url_hash は、サードパーティのモジュールをインストールする必要があります。この記事では主に Nginx でできることを紹介するため、サードパーティ モジュールの Nginx のインストールについてはこの記事では紹介しません。

3. HTTP サーバー

Nginx 自体も静的リソース サーバーであり、静的リソースしかない場合は Nginx をサーバーとして使用できます。 Nginx を介して実装するには、まず Nginx を静的リソース サーバーとして検討します。

  server {
      listen      80;                                                        
      server_name  localhost;                                              
      client_max_body_size 1024M;

      location / {
              root  e:\wwwroot;
              index  index.html;
          }
  }

このように、http://localhost にアクセスすると、デフォルトでは E ドライブの wwwroot ディレクトリにあるindex.html にアクセスします。Web サイトが静的ページのみの場合は、このように展開されます。

動的と静的の分離

動的と静的を分離すると、動的 Web サイト内の動的 Web ページで、特定のルールに従って、一定のリソースと頻繁に変化するリソースを区別できるようになります。動的リソースと静的リソースが分割された後、静的リソースをその特性に応じてキャッシュできる、これがWebサイトの静的処理の核となる考え方です。

upstream test{  
      server localhost:8080;  
      server localhost:8081;  
  } 

  server {  
      listen      80;  
      server_name  localhost; 

      location / {  
          root  e:\wwwroot;  
          index  index.html;  
      } 

      # 所有静态请求都由nginx处理,存放目录为html  
      location ~ \.(gif|jpg|jpeg|png|bmp|swf|css|js)$ {  
          root    e:\wwwroot;  
      } 

      # 所有动态请求都转发给tomcat处理  
      location ~ \.(jsp|do)$ {  
          proxy_pass  http://test; 
      } 

      error_page  500 502 503 504  /50x.html;  
      location = /50x.html {  
          root  e:\wwwroot;  
      }  
  }

这样我们就可以把HTML以及图片和css以及js放到wwwroot目录下,而tomcat只负责处理jsp和请求,
例如当我们后缀为gif的时候,Nginx默认会从wwwroot获取到当前请求的动态图文件返回,当然这里的静态文件跟Nginx是同一台服务器。

我们也可以在另外一台服务器,然后通过反向代理和负载均衡配置过去就好了,只要搞清楚了最基本的流程,很多配置就很简单了,另外localtion后面其实是一个正则表达式,所以非常灵活。

四、正向代理

正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

当你需要把你的服务器作为代理服务器的时候,可以用Nginx来实现正向代理,但是目前Nginx有一个问题,那么就是不支持HTTPS,虽然我百度到过配置HTTPS的正向代理,但是到最后发现还是代理不了,当然可能是我配置的不对。

  resolver 114.114.114.114 8.8.8.8;
  server {

      resolver_timeout 5s;

      listen 81;

      access_log  e:\wwwroot\proxy.access.log;
      error_log  e:\wwwroot\proxy.error.log;

      location / {
          proxy_pass http://$host$request_uri;
      }
  }

resolver是配置正向代理的DNS服务器,listen 是正向代理的端口,配置好了就可以在ie上面或者其他代理插件上面使用服务器ip+端口号进行代理了。

注意:Nginx是支持热启动的,也就是说当我们修改配置文件后,不用关闭Nginx,就可以实现让配置生效。Nginx从新读取配置的命令是:nginx -s reload。

以上がnginxの主な機能の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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