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 サイトの他の関連記事を参照してください。