この記事では、場所の一致が 1. Nginxロケーションの基本設定1.1 Nginx 設定ファイルアップストリームテスト1{ サーバー 127.0.0.1:8000; } アップストリームテスト2{ サーバー 127.0.0.1:8000; } サーバ{ サーバー名 test.com; 聞く 80; access_log /usr/local/openresty/nginx/logs/test.com_access.log 最新; error_log /usr/local/openresty/nginx/logs/test.com.log エラー; proxy_set_header ホスト $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 3秒; proxy_read_timeout 120秒; proxy_send_timeout 120秒; proxy_next_upstream エラー タイムアウト invalid_header http_404 http_502 http_504 http_500; 場所 /user/ { proxy_set_header 接続 ""; プロキシ_http_バージョン 1.1; proxy_pass http://test1/; } 位置 / { proxy_set_header 接続 ""; プロキシ_http_バージョン 1.1; proxy_pass http://test2/; } } 1.2 Pythonスクリプトpython2は実行できる このスクリプトは、リクエストの内容を取得するために使用されます。 これはバックエンドとして機能し、proxy_pass プロキシのバックエンドになります。 #!/usr/bin/env python SimpleHTTPServerをインポートする SocketServerをインポートする ポート = 8000 クラス GetHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): def do_GET(self): 印刷(self.headers) 自己.send_response(200, "") def do_POST(self): 印刷(self.headers) content_length = self.headers.getheaders('content-length') length = int(content_length[0])、content_lengthの場合、それ以外の場合は0 印刷(self.rfile.read(長さ)) 自己.send_response(200, "") ハンドラ = GetHandler httpd = SocketServer.TCPServer(("", ポート), ハンドラ) httpd.serve_forever() 2. テスト2.1、テスト場所最後に nginxの設定は次のとおりです 場所 /user/ { proxy_set_header 接続 ""; プロキシ_http_バージョン 1.1; プロキシパス http://test1/; } リクエストURL バックエンドコンテンツ 印刷される内容: ホスト: test1 コンテンツの長さ: 0 ユーザーエージェント: PostmanRuntime/7.26.8 受け入れる: */* 郵便配達トークン: f2bfe770-4f44-4ee9-91c4-060f59dfb26c 受け入れエンコーディング: gzip、deflate、br 127.0.0.1 - - [2021年4月10日 16:54:26] 「POST /test.html HTTP/1.1」 200 - 結論: proxy_pass アドレスに 2.2. テスト場所proxy_pass の末尾に nginxの設定は次のとおりです 場所 /user/ { proxy_set_header 接続 ""; プロキシ_http_バージョン 1.1; プロキシパス http://test1; } リクエストURL バックエンドコンテンツ 印刷される内容:
結論: proxy_pass アドレスに 2.3. 3つの場所をテストする末尾の nginxの設定は次のとおりです 場所 / ユーザー { proxy_set_header 接続 ""; プロキシ_http_バージョン 1.1; プロキシパス http://test1; } リクエストURL バックエンドコンテンツ 印刷される内容:
リクエスト 2.4、場所が追加されていません最後の nginxの設定は次のとおりです 場所 / ユーザー { proxy_set_header 接続 ""; プロキシ_http_バージョン 1.1; プロキシパス http://test1/; } リクエストURL バックエンドコンテンツ 印刷内容:
リクエスト 2.5. ロケーション終了パスの最後に nginxの設定は次のとおりです 場所 /user/ { proxy_set_header 接続 ""; プロキシ_http_バージョン 1.1; proxy_pass http://test1/haha/; } リクエストURL バックエンドコンテンツ 印刷される内容:
リクエスト 2.6. 場所の終了パスの最後には nginxの設定は次のとおりです 場所 /user/ { proxy_set_header 接続 ""; プロキシ_http_バージョン 1.1; proxy_pass http://test1/haha; } リクエストURL バックエンドコンテンツ 印刷される内容:
リクエスト 結論 |
シリアルナンバー | アクセスURL | 場所の設定 | proxy_pass 設定 | バックエンドで受信したリクエスト | 述べる |
---|---|---|---|---|---|
1 | test.com/user/test.html | /ユーザー/ | http://test1/ | /テスト.html | |
2 | test.com/user/test.html | /ユーザー/ | http://テスト1 | /user/test.html | |
3 | test.com/user/test.html | /ユーザー | http://テスト1 | /user/test.html | |
4 | test.com/user/test.html | /ユーザー | http://test1/ | //テスト.html | |
5 | test.com/user/test.html | /ユーザー/ | http://test1/はは/ | /haha/テスト.html | |
6 | test.com/user/test.html | /ユーザー/ | http://test1/はは | /ハハテスト.html |
日常的なウェブサイトの展開では、 nginx
のproxy_pass
リバースプロキシがよく使用されます。proxy_pass proxy_pass
設定する際には、明確にする必要がある設定があります。
upstram_name
の後に/
が現れた場合、それは絶対ルートパスと同等であり、 nginx
location
で一致するパス部分をプロキシしません。/
がない場合、一致するパス部分もプロキシされます。Nginx の location と proxy_pass パスの詳細な設定に関するこの記事はこれで終わりです。Nginx の location と proxy_pass パスの設定に関するより詳しい内容については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。
<<: 25 個の CSS フレームワーク、ツール、ソフトウェア、テンプレートを共有
High Performance MySQL バージョン 3 (セクション 4.1.7) を見ると、...
この記事では、MySQL マスターとスレーブ データ間の不一致の解決方法と、プロンプト「Slave_...
序文最近、仕事でAES_ENCRYPT()関数を使用してプレーンテキストを暗号化し、MySQL に保...
結合クエリ結合クエリとは、2 つ以上のテーブル間のマッチング クエリを指し、一般的には水平操作と呼ば...
CSS ウェブページレイアウトを行う場合、XHTML1.0 仕様に準拠する必要があることは誰もが知っ...
virtualenv は、分離された Python 仮想環境を作成するためのツールです。独立したディ...
以前は、ほとんどすべての Web サイトに、すべてのページをリストしたサイトマップ ページがありまし...
目次1. podmanの紹介2. Dockerと比較した利点3. 互換性4. バックグラウンド サー...
この記事では、Windows 8 での MySQL5.6 のインストールと設定のチュートリアルを記録...
序文データ中心のアプリケーションの場合、データベースの品質はプログラムのパフォーマンスに直接影響する...
MySQL のログには、エラー ログ、バイナリ ログ、一般クエリ ログ、スロー クエリ ログなどが含...
1. v-forでは常に:keyを使用するデータを操作する必要があるときにプログラムを一定かつ予測可...
Web には一般的な読み込みアイコンが 2 つあります。1 つは iOS の「菊」、もう 1 つは ...
1. はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメン...