1. 運用環境のトラフィックを起動前環境またはテスト環境にコピーする必要があるのはなぜですか?
これを行うメリットは次のとおりです。
機能が正常かどうか、サービスのパフォーマンスを確認できます;
データを作成せずに実際の効果的なトラフィック リクエストを使用して検証し、通常のオンライン アクセスには影響しません。
これはグレースケール パブリッシングと同じではなく、ミラーリングされたトラフィックは影響を受けません。実際のトラフィックに影響を与える;
オンラインの問題のトラブルシューティングに使用できます;
サービスがリファクタリングされている場合、再構築はテストでもありますトラフィック コピーを実現するために、Nginx は ngx_http_mirror_module モジュール
ホームページをインストールし、yum ウェアハウスを設定します。 。これを行うには、ファイル /etc/yum.repos.d/nginx.repo
次の内容をファイルに書き込みます
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
yum install nginx
yum install nginx
Byデフォルトでは、nginx 構成ファイルは nginx.conf です。
通常、nginx.conf ファイルは /usr/local/nginx/conf または /etc/nginx または /usr/local/etc/nginx ディレクトリにあります
nginx を起動するには、コマンド ラインに nginx と直接入力して Enter キーを押します
# 启动nginx nginx # fast shutdown nginx -s stop # graceful shutdown nginx -s quit # reloading the configuration file nginx -s reload # reopening the log files nginx -s reopen # list of all running nginx processes ps -ax | grep nginxマスター プロセスが完了したら新しい構成ファイルの構文が正しいかどうかをチェックし、ファイル内で提供されている構成を適用しようとする再ロード A 構成済みシグナルを受信します。成功すると、マスター プロセスは新しいワーカー プロセスを開始し、古いワーカー プロセスにシャットダウンするように求めるメッセージを送信します。それ以外の場合、マスター プロセスは変更をロールバックし、古い構成を引き続き使用します。 shutdown コマンドを受信した後、古いワーカー プロセスは、以前に受け入れられたすべての接続が処理されるまで、新しい接続の受け入れを停止します。その後、古いワーカー プロセスは終了します。
(無料の学習ビデオ共有:
php ビデオ チュートリアル)
nginx マスター プロセスのプロセス ID は、デフォルトで nginx.pid ファイルに配置されます。通常、ディレクトリは /usr/local/nginx/logs または /var/run です次のように nginx を停止することもできます
kill -s QUIT 3997
初期設定ファイルは次のようになります:
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; 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 /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
3 、 ngx_http_mirror_module
ngx_http_mirror_module モジュール (1.13.4) は、バックグラウンド ミラー サブリクエストを作成することで、元のリクエストのミラーリングを実装します。ミラー サブリクエストへの応答は無視されます。
これは、方法です。なるほど、ここでミラーの本来の意味はミラーであり、全てのリクエストを集めたミラーサイトのようなものであると理解できますが、このミラーは全ての実際の有効なオリジナルリクエストを表しています。このイメージを使用すると、すべてのリクエストを再現するなど、将来的にいくつかのことを行うことができます。これにより、オンライン プロセスを他の場所にコピーできるようになります。
公式 Web サイトで示されている例は、次のように非常に単純です。
location / { mirror /mirror; proxy_pass http://backend; } location = /mirror { internal; proxy_pass http://test_backend$request_uri; }
リクエスト本文がミラーリングされている場合、サブリクエストを作成する前にリクエスト本文が読み取られます。
location / { mirror /mirror; mirror_request_body off; proxy_pass http://backend; } location = /mirror { internal; proxy_pass http://log_backend; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Original-URI $request_uri; }
表面 Nginx をインストールしましたが、必要な ngx_http_mirror_module モジュールが含まれていないため、どうしても使いたい場合はカスタム インストール、つまりソース コードからビルドするのが最善です
#まず、ソース コードをダウンロードします http://nginx .org/en/download.html次に、次のようにコンパイルしてインストールします。./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --without-http_limit_req_module --without-http_mirror_module --with-pcre=../pcre-8.43 --with-zlib=../zlib-1.2.11 --add-module=/path/to/ngx_devel_kit --add-module=/path/to/lua-nginx-module
make & make installConfiguration
upstream api.abc.com { server 127.0.0.1:8080; } upstream tapi.abc.com { server 127.0.0.1:8081; } server { listen 80; # 源站点 location /api { proxy_pass http://api.cjs.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 流量复制 mirror /newapi; mirror /mirror2; mirror /mirror3; # 复制请求体 mirror_request_body on; } # 镜像站点 location /tapi { proxy_pass http://tapi.cjs.com$request_uri; proxy_pass_request_body on; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }関連する推奨事項:
nginx チュートリアル
以上がnginxトラフィックコピー機能の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。