Maison > Opération et maintenance > Nginx > le corps du texte

Introduction à la fonction de copie du trafic nginx

王林
Libérer: 2021-03-12 10:38:59
avant
3706 Les gens l'ont consulté

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

  • Utilisez des demandes de trafic réelles et efficaces pour vérifier, sans créer de données, et n'affecteront pas l'accès en ligne normal

  • Ce n'est pas la même chose que la version en niveaux de gris, le trafic en miroir ; n'affecte pas le trafic réel ;

  • peut être utilisé pour résoudre des problèmes en ligne

  • Refactoring, si le service a été refactorisé, c'est également le cas ; une méthode de test

Afin de réaliser la copie du trafic, Nginx fournit le module ngx_http_mirror_module

2 Installez la page d'accueil de Nginx

et configurez le yum. entrepôt. Pour ce faire, créez un fichier /etc/yum.repos.d/nginx.repo

Écrivez le contenu suivant dans le fichier

[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
Copier après la connexion

yum installe nginx

yum install nginx
Copier après la connexion

par par défaut, le fichier de configuration nginx est nginx.conf

Gé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 nginx
Copier après la connexion

Introduction à la fonction de copie du trafic nginx

Introduction à la fonction de copie du trafic nginx

Une 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/run

Vous pouvez également arrêter nginx comme ceci

kill -s QUIT 3997
Copier après la connexion

Le 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;
}
Copier après la connexion

3 , ngx_http_mirror_module

Le 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.


Ceci est. comment je le comprends, Ici, le sens originel de miroir est miroir. On peut comprendre que c'est comme un site miroir qui collecte toutes les demandes. Ce miroir représente toutes les demandes originales réelles et valides. Avec cette image, nous pouvons utiliser cette image pour faire certaines choses à l'avenir, comme reproduire toutes les demandes, ce qui nous permet de copier le processus en ligne vers d'autres endroits.

L'exemple donné sur le site officiel est très simple, comme suit :

location / {
    mirror /mirror;
    proxy_pass http://backend;
}
location = /mirror {
    internal;
    proxy_pass http://test_backend$request_uri;
}
Copier après la connexion

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;
}
Copier après la connexion

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
Copier après la connexion
make & make install
Copier après la connexion

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;
    }
}
Copier après la connexion

Recommandations associées :

Tutoriel nginx

Ce 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!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal