背景 nginx サーバー モジュールは 2 つのサーバーにプロキシする必要があるため、異なるサーバーを区別して転送するために異なる場所のパスが使用されます。 冒頭にこう書かれていた 位置 / { proxy_pass http://server1/; } 場所 / インデックス { proxy_pass http://server2/; } しかし、server1 にサービス パス /indexNew があることを忘れていたため、server1 にプロキシされ、404 の問題が発生しました。そこで、緊急に構成を次のように変更しました。 場所 /indexNew { proxy_pass http://server1/; } 位置 / { proxy_pass http://server1/; } 場所 / インデックス { proxy_pass http://server2/; } 問題現象 その結果、リクエストは server1 に到達しますが、エラー メッセージは POST がサポートされていないというものです。 { 「ステータス」: 500, "メッセージ": "http://172.28.72.117/-リクエストメソッド 'POST' はサポートされていません", "結果": {} } これは、当時アプリケーションから返されたエラーです。nginx をチェックしましたが、エラーはありませんでした。非常に奇妙でした。コードを見ると、/indexNew は確かに POST メソッドであるのに、なぜサポートされていないというエラーが報告されたのでしょうか。 まず、nginx のさまざまな場所の書き込み方法の一致する順序は次のとおりです。 分析する nginxログにエラーがないので、nginxからアプリケーションへのパケットをキャプチャしてみてください。 tcpdump コマンドを使用してパケットをキャプチャする tcpdump -w dataAll_normal.pcap -i eth0 -s0 ポート8888 上記のコマンドと同様にパケットをキャプチャし、Wireshark 経由で、/indexNew に関連する http トラフィック パケットがまったく見つからないことがわかります。 次のように場所を変更してみてください 場所 /indexNew { proxy_pass http://server1; } 位置 / { proxy_pass http://server1/; } 場所 / インデックス { proxy_pass http://server2/; } 唯一の違いは、/indexNewのproxy_passの最後のスラッシュ/が削除されていることです。パケットをキャプチャし続けると、/indexNewパケットが検索できることがわかります。 これは変更が正しいことを示します。 エラーを元に戻し、パッケージをキャプチャしようとしますが、/indexNew パッケージを検索できない場合は、IDE を介してアプリケーションをリモート デバッグします。 アプリケーションの URL に /indexNew がなかったため、当然 Wireshark パッケージでも見つけることができませんでした。 。 。 これは、nginx がアプリケーションを転送する場合、アクセス パスが/のみになるためです。 プロジェクト内のリクエストパス/とのインターフェースは、実際にはGETメソッドです location の proxy_pass の構文を詳しく見てみましょう。確かに次のようになります。proxy_pass の末尾に / があり、一致する場所のパスが削除され、後続の URL PATH が転送用にインターセプトされます。 したがって、proxy_pass の最後の / の意味に注意して慎重に使用する必要があります。これは、100% の情報転送ではなく、パス要求情報を変更します。 Nginx proxy_pass の / スラッシュが原因の悲惨な事件に関するこの記事はこれで終わりです。Nginx proxy_pass スラッシュに関するその他の関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: フロントエンド開発者は毎日HTMLタグの理解を学ばなければならない(1)
以下のように表示されます。 SELECT prod_name,prod_price FROM pro...
序文:年末です。データベースを検査する時期ではないでしょうか?一般的に、検査では、パスワードの複雑さ...
序文ご存知のとおり、HTML5 はインターネット コミュニティ全体に標準を提供する組織である Wor...
展開環境: ここでは docker コンテナ、Linux システム、VmWare 仮想マシンが使用さ...
目次1. MySQLインデックスの紹介2. MySQLの5種類のインデックスの詳しい説明1. 総合索...
目次1. 解決策2. サーバーから返されたトークンをブラウザに保存する3. リクエストにアクセス権限...
元のコードは次のとおりです。 <div class='コントロールグループ'&...
ユーザーの権限に応じて異なるメニュー ページを表示します。知識ポイントルートガード(事前ガードを使用...
(1)サーバー構成: [root@localhost ~]# cd /usr/local/src/ ...
今日、私はプロジェクトの移行の問題に取り組んでいましたが、突然、大量の写真をどうやって移動したらよい...
TypeScript を使用する場合、TypeScript が提供する型システムを使用してコードのあ...
この記事では、接続エラー ECONNREFUSED を例に、Node.js がエラーを処理するプロセ...
序文今日、自作のコンポーネントを使っていたところ、突然、長い間忘れていたバブリングイベントに遭遇しま...
公式文書には次のように記されている。ルーターを挿入することで、どのコンポーネントでも this.$r...
WeChatアプレットの簡単な計算機は参考用です。具体的な内容は次のとおりです。 1. はじめに1....