Maison >développement back-end >tutoriel php >Exemple détaillé de la façon dont nginx gère les requêtes
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 :
.
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)
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/
(2) Visitez respectivement http://demo.com/, http://demo.com/jenkins, http://demo.com/ApprPhD/index, les résultats sont les suivants suit
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!