Maison >Opération et maintenance >Nginx >Introduction à la fonction de copie du trafic nginx

Introduction à la fonction de copie du trafic nginx

王林
王林avant
2021-03-12 10:38:593759parcourir

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

yum installe nginx

yum install nginx

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

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

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;
}

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;
}

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

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer