Maison >Opération et maintenance >Nginx >Introduction à la fonction de copie du trafic nginx
1. Pourquoi devrions-nous copier le trafic de l'environnement de production vers l'environnement de pré-lancement ou l'environnement de test ?
Les avantages de cette opération sont les suivants :
Vous pouvez vérifier si le fonctionnement est normal et la performance du service
[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=trueyum installe nginx
yum install nginxpar par défaut, le fichier de configuration nginx est nginx.confGénéralement, le fichier nginx.conf se trouve dans le répertoire /usr/local/nginx/conf ou /etc/nginx ou /usr/local/etc/nginx
Pour démarrer nginx, tapez nginx directement dans la ligne de commande et appuyez sur Entrée
# 启动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 nginxUne fois le processus maître reçoit le rechargement Un signal configuré qui vérifiera si la syntaxe du nouveau fichier de configuration est correcte et tentera d'appliquer la configuration qui y est fournie. En cas de succès, le processus maître démarrera un nouveau processus de travail et enverra un message à l'ancien processus de travail lui demandant de s'arrêter. Sinon, le processus maître annule les modifications et continue d'utiliser l'ancienne configuration. Après avoir reçu la commande d'arrêt, l'ancien processus de travail cesse d'accepter de nouvelles connexions jusqu'à ce que toutes les connexions précédemment acceptées aient été traitées. Après cela, l'ancien processus de travail se termine. (Partage de vidéos d'apprentissage gratuit :
Tutoriel vidéo php)
L'ID de processus du processus maître de nginx, par défaut, est placé dans le fichier nginx.pid, dont le répertoire est généralement /usr/local/nginx/logs ou /var/runVous pouvez également arrêter nginx comme cecikill -s QUIT 3997Le fichier de configuration initial ressemble à ceci :
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_moduleLe module ngx_http_mirror_module (1.13.4) implémente la mise en miroir d'une requête originale en créant des sous-requêtes miroir en arrière-plan. Les réponses aux sous-requêtes miroir sont ignorées.
location / { mirror /mirror; proxy_pass http://backend; } location = /mirror { internal; proxy_pass http://test_backend$request_uri; }Si le corps de la requête est en miroir, alors le recto du corps de la requête
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; }sera lisez avant de créer la sous-requête. Nous avons installé Nginx, mais il ne contient pas le module ngx_http_mirror_module dont nous avons besoin. Par conséquent, lorsque vous souhaitez vraiment l'utiliser, il est préférable d'utiliser une installation personnalisée, c'est-à-dire de construire à partir du code source
Tout d'abord, téléchargez le code source http://nginx .org/en/download.html
Ensuite, compilez et installez, par exemple :
./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 install
Configuration
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; } }
Recommandations associées :
Tutoriel nginxCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!