nginxとバックエンドポート間の競合の解決策

nginxとバックエンドポート間の競合の解決策

質問:

Alice 管理システムを開発しているときに、すべてのバックエンド インターフェイスが最初のリクエスト時に 404 エラーを生成したが、2 回目には成功したことがわかりました。

位置決めの問題

nginx のエラーログを確認したところ、以下のエラーが見つかりましたhtmlフォルダの権限が不十分で、ファイルを書き込めないためにエラーが発生したと勘違いしていました。権限を開いても、まだ動作しないことがわかりました。Google で検索しましたが、解決策が見つかりません。とりあえず置いておきました。翌日またエラーを探していたら、誤ってポート8081を開けてしまいました。localhost localhost:8081127.0.0.1:8081にアクセスすると内容が違っていました。

その時、ポートの競合があるのではないかと思い、ファイルを開いてみると、 nginxの設定ファイルと私たちのプロジェクトの設定ファイルがありました。ポートの競合があることがわかりました。バックエンドにアクセスすると、リクエストが nginx の静的ファイルに送信されるため、404 エラーが生成されます。

サーバー{
  聞く 8081;
  サーバー名 127.0.0.1;

  #文字セット koi8-r;

  #access_log ログ/host.access.log メイン;

  位置 / {
    ルートhtml;
    インデックス index.html index.htm;
  }
サーバー{
  # プラットフォームポート listen 8100;
  server_name ローカルホスト;

  位置 / {
    proxy_pass http://localhost:4200/;
  }

  場所 /api/ {
    proxy_pass http://localhost:8081/;
  }
  #エラーページ 404 /404.html;

  # サーバーのエラーページを静的ページ /50x.html にリダイレクトします
  #
  エラーページ 500 502 503 504 /50x.html;
  場所 = /50x.html {
    ルート /usr/share/nginx/html;
  }
}

回避策

プロジェクトのバックエンド ポートと nginx 構成を変更します。

残る問題:

バックグラウンドを起動すると、 localhost:8081にアクセスした場合と127.0.0.1:8081バックグラウンドを閉じると、同じ内容が表示されます。

理由は次の通りです。
localhost: システムは、このマシン上の現在のユーザーの権限を使用してアクセスします
127.0.0.1: これは、ローカルマシンがネットワーク経由でアクセスされることを意味します

nginx がバックエンドと競合する場合、なぜ奇数で nginx 内部ファイルにアクセスし、偶数でバックエンドにアクセスするのでしょうか (なぜ同じインターフェースを占有できるのでしょうか)?

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginx リバース プロキシと負荷分散の実践
  • Nginx におけるサーバーとロケーションのマッチングロジックの詳細な理解
  • Nginx のアクセス制御とパラメータ調整方法
  • Django+uwsgi+Nginxのベストプラクティスをオンラインで詳細に解説
  • Nginx のパラメータをオンにして Web パフォーマンスを 3 倍向上させる方法
  • PHP を使用して Nginx ログのユーザーエージェント データをカウントする方法
  • CentOS7 のシステム サービスに Nginx を追加する方法
  • nginx を使用して同じドメイン名で複数の Vue プロジェクトをデプロイし、リバース プロキシを使用する方法
  • Nginx 設定ファイルの差異を監視し、電子メールアラートを送信する Python 実装例
  • Nginx サーバーで Web クローラーをブロックおよび禁止する方法

<<:  MySQLインデックスの簡単な分析

>>:  Reactの仮想DOMとdiffアルゴリズムの詳細な説明

推薦する

Windows 10 での Tomcat のインストールと展開に関する詳細なチュートリアル

目次1 Java環境の設定2 tomcatのインストールと展開Tomcat をインストールして展開す...

携帯電話向けウェブページ作成のヒント

現在では多くの人がスマートフォンを使用していることを考慮すると、モバイル Web ページの書き方は、...

反応ジャンプ後にルートが変更されてもページが更新されない場合の解決策

目次質問解決質問この問題には多くの理由があるようです。私の問題は、パラメータ付きのURLを更新できな...

ファイルアップロードスタイルの詳細を実装するjs

目次1. 概要2. オブジェクト作成のパラメータ3. 監視例4. 使用方法5. ソースコード1. 概...

Linux システムを起動時に自動的にスクリプトを実行するように設定する方法の例

序文みなさんこんにちは。私は梁旭です。職場では、システムの起動後にスクリプトやサービスを自動的に開始...

MySQL データベースの制約とデータ テーブルの設計原則

目次1. データベースの制約1.1 はじめに1.2 制約の種類1.3 ヌルでない1.4 ユニーク1....

CSSをインポートする方法に関する詳細な洞察の要約

CSS の開発履歴についてはここでは紹介しません。ブログを書いている理由の 1 つは、フロントエンド...

Vue における $router と $route の違いの詳細な説明

通常、vue プロジェクトではルーティングを使用します。vue-router は vue.js の公...

MySQL ページング中にオフセットが大きすぎる場合の SQL 最適化の経験の共有

問題を見つけるコンテンツをリストで表示すると、リスト内のコンテンツの数は多いかもしれませんが、ユーザ...

js と jQuery での Ajax の使用例の詳細

目次ネイティブJS GETリクエストの送信方法投稿リクエストの送信方法パラメータ付きのGETリクエス...

jsはタイトルと説明のキーワードを検出し、見つかった場合は置換するか他のページにジャンプします。

キーワード 一般タイトルには、クラック、キー、シリアル番号、キージェネレータなどの単語を含めることは...

MySQL を使用してポート 3306 を開いたり変更したり、Ubuntu/Linux 環境でアクセス許可を開く

オペレーティングシステム: Ubuntu 17.04 64ビットMySQL バージョン: MySQL...

NodeはMySQLに接続し、追加、削除、変更、チェックのための実装コードをカプセル化します。

目次ノードはMysqlに接続しますMySQLモジュールをインストールするMySQLに接続するよく使わ...

Ubuntu 16.04/18.04 に Pycharm と Ipython をインストールするチュートリアル

Ubuntu 18.04の場合1. sudo apt install python 。コマンドライン...

JavaScript Alert関数の実行順序の詳細な説明

目次質問分析する解決するAlert() 関数を置き換えるsetTimeOut関数まとめ質問数日前、J...