ホームページ  >  記事  >  バックエンド開発  >  nginx がリクエストを処理する方法の詳細な例

nginx がリクエストを処理する方法の詳細な例

无忌哥哥
无忌哥哥オリジナル
2018-07-12 13:51:571532ブラウズ

1. まず、2 つのサーバー ブロックは次のように構成されます

server {
       listen   80;
       server_name  hanmk.com;
       location / {
       root /tmp/data/;
       autoindex on;
      }
   }
    server {
        listen    80 default_server;
        server_name demo.com ;
        location / {   # tomcat首页
        proxy_pass http://localhost:8080;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       location /jenkins {                #tomcat部署jenkins
              proxy_pass  http://127.0.0.1:8080;
              proxy_set_header        Host $host;
              proxy_set_header        X-Real-IP $remote_addr;  #获取真实ip
              proxy_connect_timeout   90;
              proxy_send_timeout      90;
              proxy_read_timeout      90;
              proxy_buffer_size       4k;
              proxy_buffers           4 32k;
              proxy_busy_buffers_size 64k;
              proxy_temp_file_write_size 64k;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#获取代理者的真实ip
              proxy_redirect          off;
       }
       location /ApprPhD {                #nodeJs服务器
              proxy_pass http://192.168.XXX.XXX:3030;
              proxy_set_header        Host $host;
              proxy_set_header        X-Real-IP $remote_addr;  #获取真实ip
              proxy_set_header REMOTE-HOST $remote_addr;
              proxy_connect_timeout   90;
              proxy_send_timeout      90;
              proxy_read_timeout      90;
              proxy_buffer_size       4k;
              proxy_buffers           4 32k;
              proxy_busy_buffers_size 64k;
              proxy_temp_file_write_size 64k;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#获取代理者的真实ip
              proxy_redirect          off;
       }
    }

説明:

最初のサーバーでは、サービスは、server/tmp/data/ の下にある静的ファイルを指します。 path;

2 番目のサーバーでは、サービスは 3 つのルーティング仮想マシンを指します (1 つのルートは仮想マシン上にローカルにデプロイされた Tomcat ホームページを指し、1 つは Tomcat の下にデプロイされた Jenkins を指し、もう 1 つはアプリケーションは別の仮想マシンにデプロイされます。)

両方のサーバーで構成されたリスニング ポートは 80 です (テスト結果を見やすくするためでもあります)

server_name は (仮想ホスト) サーバー名を指定します。ドメイン名を構成します (例: org、www.example.org は、正確な名前、ワイルドカード名、または正規表現を使用して定義できます。外部ネットワーク上のリクエスト リンクにアクセスすると、nginx はそれが server1 に転送されるか、server1 に転送されるかどうかを照合します)。入力したホスト名に基づいて、server2)

また、テスト結果を見やすくするために、仮想マシンの実際の IP またはローカルホストを入力する代わりに、server_name にドメイン名を入力しました ( IP アドレスはすべて仮想マシンの IP です。IP アドレスを入力すると、nginx のリクエストの転送方法が表示されません)(また、サーバーが 1 つしかない場合は、server_name を入力する必要はありません。最終的にはサーバー配下のサーバーに転送されます。試してみましたが、ポートが正しい限り、転送は成功します。内部原理はまだ存在します。よくわかりません...)

記入してくださいhanmk.com(server1のserver_name)

demo.com(server2のserver_name)を入力

上記の設定を完了したら、設定ファイルnginx .conf

をリロードする必要があります。 2. クライアントのホスト ファイルを設定します。

最初のステップでは、hanmk.com とdemo.com がそれぞれserver_nameに設定されましたが、ドメイン名サービスがアクティブ化されていなかったため、これら 2 つのドメイン名を直接使用してリクエストを送信しました。クライアント上での実行は失敗するため、これら 2 つの偽のドメイン名を使用してリクエストを正常に送信するには、まずクライアント ホスト上で設定する必要があります。手順は次のとおりです。 ##hosts ファイルを開き、次の 2 行を追加します (マッピングされた IP アドレスが同じであるため、スペースで区切って 2 つのドメイン名を 1 行に追加することもできます)

nginx がリクエストを処理する方法の詳細な例##3. テスト

(1) http://hanmk.com/ を使用してリクエストを送信し、virtual machine/tmp/data/

## のパスにある静的ファイルにアクセスします。

nginx がリクエストを処理する方法の詳細な例

#(2) http://demo.com/、http://demo.com/jenkins、http://demo.com/ApprPhD/index にそれぞれアクセスすると、結果は次のようになります。以下

nginx がリクエストを処理する方法の詳細な例

nginx がリクエストを処理する方法の詳細な例 説明 nginx は、アクセス リンクのドメイン名に基づいて対応するサーバーを照合します。次に、場所のパスに基づいて、対応するサービスにルーティングします

以上がnginx がリクエストを処理する方法の詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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