背景 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)
ネットワークが分離されているため、MySQL は yum を使用してインストールできません。ここでは...
1 メソッドは、データをサーバーに送信する方法を指定するプロパティです。 2 post と get ...
序文モバイル端末の開発の過程で、モバイル端末のディスプレイはデスクトップ端末のディスプレイとは一般的...
<br />インターネット上の無数の情報は基本的に HTML ドキュメントで構成されてお...
目次序文1. ロックとは何ですか? 2. InnoDBストレージエンジンのロック2.1 ロックの種類...
序文MySQL スロー クエリ ログは、日常業務でよく遭遇する機能です。MySQL スロー クエリ ...
1. 文書化ルール1. 大文字と小文字が区別されます。 2. 属性値は引用符(一重引用符または二重引...
1. ワニスの紹介Varnish は、高性能なオープンソースのリバースプロキシサーバーおよび HTT...
Harbor は、Docker イメージを保存および配布するためのエンタープライズ レベルのレジスト...
オンラインチュートリアルに従って実装しました。 zabbix3.4、スクリプトとsendEmailを...
コマンドを実行してプラグインpostcss-pxtoremをインストールします npm インストール...
オープンソース ソフトウェアである Apache は、最も広く使用されている Web アプリケーショ...
MySQL 8.0.12 のインストールには 2 日かかり、さまざまな問題が発生しました。以下にまと...
この記事では、Vueを使用してショッピングカートの数量を変更する方法を紹介します。具体的な内容は次の...
目次1. Reduxを選ぶ理由2. Reduxデータフロー3つの原則4. Reduxソースコード分析...