Maison  >  Article  >  développement back-end  >  Exemple détaillé de la façon dont nginx gère les requêtes

Exemple détaillé de la façon dont nginx gère les requêtes

无忌哥哥
无忌哥哥original
2018-07-12 13:51:571533parcourir

1. Tout d'abord, les deux blocs serveur sont configurés comme suit

server {
       listen   80;
       server_name  hanmk.com;
       location / {
       root /tmp/data/;
       autoindex on;
      }
   }
    server {
        listen    80 default_server;
        server_name demo.com ;
        location / {   # tomcat首页
        proxy_pass http://localhost:8080;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       location /jenkins {                #tomcat部署jenkins
              proxy_pass  http://127.0.0.1:8080;
              proxy_set_header        Host $host;
              proxy_set_header        X-Real-IP $remote_addr;  #获取真实ip
              proxy_connect_timeout   90;
              proxy_send_timeout      90;
              proxy_read_timeout      90;
              proxy_buffer_size       4k;
              proxy_buffers           4 32k;
              proxy_busy_buffers_size 64k;
              proxy_temp_file_write_size 64k;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#获取代理者的真实ip
              proxy_redirect          off;
       }
       location /ApprPhD {                #nodeJs服务器
              proxy_pass http://192.168.XXX.XXX:3030;
              proxy_set_header        Host $host;
              proxy_set_header        X-Real-IP $remote_addr;  #获取真实ip
              proxy_set_header REMOTE-HOST $remote_addr;
              proxy_connect_timeout   90;
              proxy_send_timeout      90;
              proxy_read_timeout      90;
              proxy_buffer_size       4k;
              proxy_buffers           4 32k;
              proxy_busy_buffers_size 64k;
              proxy_temp_file_write_size 64k;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#获取代理者的真实ip
              proxy_redirect          off;
       }
    }

Explication :

Dans le premier serveur, le service pointe vers le fichier statique sous le serveur/tmp/. data/ path ;

Dans le deuxième serveur, le service pointe vers trois machines virtuelles de routage (une route pointe vers la page d'accueil de Tomcat déployée localement sur la machine virtuelle, une pointe vers jenkins déployé sous Tomcat et une pointe vers au déploiement sur une autre application de machine virtuelle)

Les ports d'écoute configurés dans les deux serveurs sont 80 (également pour mieux visualiser les résultats des tests)

server_name spécifie le nom du serveur (hôte virtuel), et configure généralement le nom de domaine (exemple.org, www.exemple.org, peut être défini à l'aide de noms précis, de noms génériques ou d'expressions régulières ; lorsque vous accédez à un lien de requête sur le réseau externe, nginx déterminera s'il doit le transmettre au serveur1 ou server2 en fonction du nom d'hôte que vous renseignez. )

Afin de mieux visualiser les résultats des tests, j'ai renseigné le nom de domaine dans nom_serveur au lieu de renseigner l'ip réelle ou l'hôte local de la machine virtuelle (car les adresses IP sont toutes des IP de machine virtuelle. Si vous remplissez l'adresse IP, elle ne sera pas visible comment nginx transmet les requêtes) (De plus, s'il n'y a qu'un seul serveur, il n'est pas nécessaire de renseigner le nom du serveur. , car il sera finalement transmis au serveur sous le serveur. Je l'ai essayé, et tant que le port est correct, le transfert peut réussir Interne Le principe n'est pas encore clair )

Remplir. dans hanmk.com pour server_name

Remplissez demo.com pour server2

Après avoir terminé la configuration ci-dessus, vous devez recharger le fichier nginx.conf

2. Configurez le fichier hosts du client

Dans la première étape, hanmk.com et demo.com ont été configurés respectivement dans server_name, mais comme le service de nom de domaine n'était pas activé, par conséquent, en utilisant ces deux noms de domaine directement sur le client l'envoi de requêtes échouera. Par conséquent, afin d'utiliser ces deux faux noms de domaine pour envoyer des requêtes normalement, vous devez d'abord le configurer sur l'hôte client :

Exemple détaillé de la façon dont nginx gère les requêtes

.

Ouvrez le fichier hosts et ajoutez les deux lignes suivantes (l'adresse IP mappée étant la même, vous pouvez également ajouter les deux noms de domaine sur une seule ligne, séparés par des espaces)

Exemple détaillé de la façon dont nginx gère les requêtes

3. Test

(1) Utilisez http://hanmk.com/ pour envoyer une requête et accédez aux fichiers statiques sous le chemin de la machine virtuelle/tmp/data/

Exemple détaillé de la façon dont nginx gère les requêtes

(2) Visitez respectivement http://demo.com/, http://demo.com/jenkins, http://demo.com/ApprPhD/index, les résultats sont les suivants suit

Exemple détaillé de la façon dont nginx gère les requêtes

Exemple détaillé de la façon dont nginx gère les requêtes

Exemple détaillé de la façon dont nginx gère les requêtes

Cela signifie que nginx correspond au serveur correspondant en fonction du nom de domaine de l'accès lien, puis Selon le chemin de localisation, acheminer vers le service correspondant

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