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 を使用して脈動するローダー効果のソースコードを作成する

推薦する

NavicatがLinuxサーバー上のMySQLに接続できない問題を解決する

最初は悲しい気持ちになりました。スクリーンショットは以下の通りです。 少し苦労しましたが、解決策は次...

MySql 自動切り捨て例の詳細な説明

MySql 自動切り捨て例の詳細な説明友人が質問しました。プロジェクト内で挿入または更新ステートメン...

Alibaba Cloud で MySQL リモート接続を構成するための詳細な手順

序文ご存知のとおり、デフォルトでは、Alibaba Cloud にインストールされている MySQL...

Linux で静的ルーティングを追加するための 2 つの実装方法の分析

ルートを追加するコマンド: 1.ルート追加route add -net 192.56.76.0 ne...

HTML+CSSで充電水滴融合特殊効果コードを実現

目次序文:成し遂げる:要約:まず効果を見てみましょう: 序文:このアイデアは、Bilibili のア...

MySQLのエンコードの不一致によって発生する可能性のある問題

ストアドプロシージャとコーディングMySQL ストアド プロシージャでは、テーブルとデータのエンコー...

MySQL 8.0.16 winx64 のインストールと設定方法のグラフィックチュートリアル

最近、データベースについて学び始めました。最初にやったことは、データベースとは何か、データベースとデ...

Linuxはiptablesを使用して複数のIPからのサーバーへのアクセスを制限します

序文Linux カーネルでは、netfilter は、パケット フィルタリング、ネットワーク アドレ...

MySQL 8.0.13 で日付を 0000-00-00 00:00:00 に設定すると発生する問題を解決する

データベース操作を学び始めたばかりです。今日、データを保存していたところ、エラーが発生していることに...

mysql8.0.12 でルートパスワードをリセットする方法

データベースをインストールした後、誤ってインストール ウィンドウを閉じたり、長期間 root ユーザ...

Linux で測位バックグラウンド サービスが時々クラッシュする問題の解決方法

問題の説明最近のバックグラウンドサービスでは、特定の命令の要求データをディスクに保存する新しい機能が...

LinuxにNginxをインストールする正しい手順

序文私のように、Java バックエンドに勤勉な人であれば、多数のプロジェクト機能を実装することに加え...

MySqlのインストールとアンインストールに関する詳細なチュートリアル

この記事では、MySqlのインストールとアンインストールのチュートリアルを参考までに紹介します。具体...

Vuex ステートマシンの簡単な理解とサンプルアプリケーション

目次1. 概念の素早い理解: 1. コンポーネント間でデータを共有する方法: 2. vuex とは何...

IE 環境での css-vars-ponyfill の使用に関する詳細な説明 (nextjs ビルド)

css-vars-ポニーフィルCSS 変数を使用して Web ページのスキニングを実現すると、互換...