nginx を介してローカルでリバースプロキシを構成するプロセス全体

nginx を介してローカルでリバースプロキシを構成するプロセス全体

序文

Nginx は、イベント駆動型の非同期非ブロッキング処理フレームワークを使用する軽量 HTTP サーバーであり、優れた IO パフォーマンスを実現します。私たちは日常の開発において、次のようなシナリオで Nginx を使用しています。

  • http サーバーとしての Nginx
  • クロスオリジンリクエスト
  • 負荷分散
  • 静的ネットワークリソースと動的ネットワークリソースの分離

フロントエンドとして、私たちは主に最初の2つのシナリオに焦点を当てています

1.ダウンロードしてインストールする

ここをクリックしてダウンロードし、ダウンロード後に解凍すると、解凍されたファイルは次のようになります。

解凍します (nginx.exe をダブルクリックします。ダブルクリックすると黒いポップアップ ウィンドウが点滅します)

nginx が解凍されているディレクトリを見つけて右クリックし、git bash を見つけて開き、コマンド start ./nginx.exe を入力して Enter キーを押して nginx サービスを開始します。

**起動が成功したかどうかを確認します: **ブラウザのアドレスバーにURL http://localhostを直接入力し、Enterキーを押すと、起動が成功したことを示す次のページが表示されます。

2. nginxの設定

nginx の下にある conf/nginx.conf ファイルを見つけて、server{} の内容に焦点を当ててプロキシ関連の情報を設定します。

#ユーザーnobody;
ワーカープロセス 1;

#error_log ログ/error.log;
#error_log ログ/error.log 通知;
#error_log ログ/error.log 情報;

#pid ログ/nginx.pid;


イベント {
 ワーカー接続 1024;
}


http {
 mime.types を含めます。
 デフォルトタイプ アプリケーション/オクテットストリーム;

 #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
 # '$status $body_bytes_sent "$http_referer" '
 # '"$http_user_agent" "$http_x_forwarded_for"';

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

 ファイル送信オン;
 #tcp_nopush オン;

 #キープアライブタイムアウト 0;
 キープアライブタイムアウト65;

 #gzip オン;
 サーバー名ハッシュバケットサイズ 128;
 サーバー{
 聞く 80;
 server_name ローカルホスト;
 位置 / {
  ルートhtml;
  インデックス index.html index.htm;
 }
 エラーページ 500 502 503 504 /50x.html;
 場所 = /50x.html {
  ルートhtml;
 }
 }

 サーバー{
 聞く 80;
 サーバー名 test-local.juejin.com;
 # プロキシするテスト環境のドメイン名と -local を指定します
 # たとえば、プロジェクトのテスト環境が a.test.com の場合、a-local.test.com に設定できます。もちろん、場所は好きなように設定できます /{
  add_header 'Access-Control-Allow-Origin' '*';
  add_header 'Access-Control-Allow-Credentials' 'true';
  add_header 'アクセス制御許可メソッド' 'GET、POST、OPTIONS';
  add_header 'Access-Control-Allow-Headers' 'DNT、web-token、app-token、Authorization、Accept、Origin、Keep-Alive、User-Agent、X-Mx-ReqToken、X-Data-Type、X-Auth-Token、X-Requested-With、If-Modified-Since、Cache-Control、Content-Type、Range';
  add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
  # ここで 8091 はローカルで実行中のプロジェクトのポート番号です。ローカル サービスのポート番号と同じに設定します。 proxy_pass http://127.0.0.1:8091/;
 }
 }
}

3. ローカルDNS設定

**ローカルホストファイルの構成を変更します。**ディレクトリC:\Windows\System32\drivers\etcを探し、hostsファイルを開いてファイルを変更し、127.0.0.1 a-local.test.comを追加します。

4. 操作

まず、./nginx.exe -t と入力して、nginx の設定が正しいかどうかを確認します。正しい設定は次のとおりです。

引き続き nginx -s reload と入力して再起動します (nginx 設定ファイルの変更後、有効にするには nginx を再起動する必要があります)

DNSを更新: ipconfig /flushdns

ブラウザに http://a-local.test.com と入力すると、ローカルで実行しているコード インターフェイスが表示されます。

5. よく使われるnginxコマンド

  • ヘルプコマンド: nginx -h
  • Nginxサーバーを起動します: start nginx
  • 設定ファイルのパス: /usr/local/nginx/conf/nginx.conf
  • 設定ファイルを確認します: nginx -t
  • サービスを停止します: nginx -s stop
  • サービスを終了します(すべてのリクエストを処理した後、サービスを停止します):nginx -s quit
  • 設定ファイルを再読み込みします: nginx -s reload
  • バージョン情報を表示して終了する nginx -v
  • すべての nginx プロセスを強制終了します killall nginx

6. クロスドメインリクエスト

フロントエンドとバックエンドが分離されたプロジェクトでは、フロントエンド プロジェクトとバックエンド プロジェクトがそれぞれ異なるサーバーにデプロイされるため、最初に遭遇する問題はクロスドメインです。このシナリオでは、nginx を使用すると、この問題をうまく解決できます。

#クロスドメインリクエストサーバー
サーバ{
	9000を聴く;
	server_name 127.0.0.1; # またはローカルIPに設定
	ルート /app/crossDomain/;
	インデックス index.html;
	
	location /douban/ { #アクセスディレクトリのプロキシ設定を追加 /api rewrite ^/api/(.*)$ /$1 break;
		proxy_pass http://a.test.com;
 }
}

要約する

nginx を介してローカルでリバース プロキシを構成する方法に関するこの記事はこれで終わりです。nginx を介してローカルでリバース プロキシを構成する方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • プレフィックスケースを削除する Nginx リバース プロキシ構成のチュートリアル
  • grpc のリバース プロキシとして nginx を使用する場合の落とし穴の概要
  • Nginx リバース プロキシ構成の完全なプロセス記録
  • 複数のサーバーにNginxリバースプロキシを実装する方法
  • nginx リバース プロキシでの proxy_pass の実装
  • nginxリバースプロキシを使用するときに長時間接続を維持する方法
  • Nginx リバースプロキシの例の詳細な説明
  • Nginx リバース プロキシから go-fastdfs へのケースの説明

<<:  XHTML CSS ページをプリンタ ページに変換する

>>:  純粋な CSS を使用して脈動するローダー効果のソースコードを作成する

推薦する

ページ内の検索エンジンの呼び出しはBaiduを例に挙げています

今日、突然、自分のウェブページで Google や Baidu のような強力な検索エンジンを呼び出す...

MYSQL ローカルインストールと問題解決

序文この記事はかなり詳細で、少し面倒です。他のチュートリアル ドキュメントでは多くの手順が省略されて...

setup+ref+reactive は vue3 の応答性を実装します

セットアップは、結合された API を記述するために使用されます。テンプレートが使用できるようにする...

この記事では、jsのデータ型とデータ構造の世界を紹介します。

目次1. 動的型付けとは何ですか? 2. データ型2.1 プリミティブ型 (6 つのプリミティブ型、...

MySQLトリガーの詳細な説明と簡単な例

MySQLトリガーの簡単な例文法CREATE TRIGGER <トリガー名> -- トリ...

SSHトンネルを使用してMySQLサーバーに接続する方法

序文場合によっては、データベースのイントラネット アドレスしか知らず、イントラネット経由で接続できな...

Reactコンポーネントをフルスクリーンにする方法

導入この記事は、 React + antdをベースにして、完全な全屏demoを紹介します。その理由は...

デザイン協会: なぜ間違った場所を探したのですか?

数日前、バスで仕事に行きました。バスのカードリーダーの実際の使用シーンを実際に見て、カードリーダーの...

ReactのPropsの簡単な比較

目次クラスコンポーネントのプロパティ比較浅い同等の浅い比較機能コンポーネントの簡単な比較先週面接に行...

MySQL でのインデックスの追加と削除に関連する操作

目次1. インデックスの役割2. インデックスの作成と削除(1)ALTER TABLE文を使用して、...

動的な色切り替えの実装コードをサポートするために、CSS で SVG 画像を参照します。

表示する svg 画像を追加すると、React はファイルが見つからないというメッセージを表示します...

vue3 を使用したジグソーパズルゲームのリファクタリングの例

序文プロジェクト内のパズルゲーム(デジタル華容路とも呼ばれる)を再構築するのに 2 日かかりました。...

NodeJSのモジュール性に関する詳細な説明

目次1. はじめに2. 本文2.1 モジュールとは何ですか? 2.2 解決2.3、require.r...

Vue3+スクリプト設定+ts+Vite+Volarプロジェクト

目次Viteを使用してvue + tsプロジェクトを作成するVue 3の3つの構文オプションAPIコ...

要素テーブルの多層ネスト表示の実践

複数の注文を含むリストが必要です。各注文は一意にすることも、複数の注文を結合することもできます。各注...