1. Scénarios d'application
Nous rencontrons souvent des situations dans lesquelles plusieurs sites Web sont établis sur le même serveur. Une pratique courante consiste à configurer différents ports pour différents sites, afin qu'ils soient accessibles sous la forme d'ip:port.
Mais après tout, utiliser l'IP pour accéder n'est pas pratique, pas évident et pas facile à retenir. Ensuite, nous pouvons associer différents noms de domaine à chaque site. (Ici, nous ne parlons que de la situation du réseau public) Même si nous n'avons qu'un seul nom de domaine, nous pouvons configurer plusieurs noms de domaine de deuxième niveau, ce qui est facile à réaliser avec nginx.
2. Exigences de base
Habituellement, les didacticiels en ligne publieront directement un morceau de code pour le fichier de configuration, nous indiquant que tout va bien. Mais j'ai découvert que de nombreux novices ne peuvent pas réussir comme les blogueurs après avoir regardé la configuration du didacticiel, parlons donc ensuite des principes de base.
Tout d'abord, vous devez avoir un nom de domaine que vous pouvez gérer. Par exemple, j'ai un nom de domaine postmsg.cn, qui peut générer plusieurs noms de sous-domaines pour des milliers de générations...
Deuxièmement, il y a doit être un serveur de réseau public accessible, vous pouvez créer votre propre site Web sur ce serveur, un, deux, trois ou quatre, avec différents ports correspondants.
Ensuite, il y a la liaison du nom de domaine et du site, une carotte et un noyau, bien sûr, vous pouvez aussi avoir plusieurs carottes et un noyau...
3. Configuration générale
Il y a deux les endroits qui doivent être configurés. Parlons d'abord des premiers prérequis. Les conditions sont également quelque chose que certains novices ont tendance à négliger.
(1) Configuration du nom de domaine
Il est courant que chacun pense à pointer une résolution record du nom de domaine vers notre serveur de réseau public. Lors de l'analyse, vous pouvez uniquement ajouter une adresse IP, mais pas un numéro de port, c'est-à-dire que vous ne pouvez utiliser que le port par défaut 80. (Le transfert de nom de domaine n'est pas discuté)
Si vous souhaitez implémenter la liaison de nom de sous-domaine, vous devez la configurer correctement lors de la résolution du nom de domaine. Sinon, s’appuyer uniquement sur nginx ne fonctionnera pas.
Par exemple, si je souhaite lier le nom de sous-domaine p.postmsg.cn au port 8001 du serveur, je dois d'abord m'assurer que la demande d'accès à p.postmsg.cn peut atteindre le serveur, puis nginx peut la traiter .
À ce stade, soit ajoutez un enregistrement d'hôte de p dans le nom de domaine une résolution d'enregistrement, soit configurez le caractère générique * dans l'enregistrement d'hôte (tous les accès à *.postmsg.cn sont résolus sur le serveur correspondant, à utiliser avec prudence) , définir uniquement @ et www n'est certainement pas possible.
int dans la Figure 1 - Exemple de domaine résolution de nom(2) Configuration de l'hôte
Une fois que la demande de nom de domaine atteint l'hôte, tout peut être remis à nginx pour traitement.
Lors de la modification de la configuration nginx, vous pouvez la modifier directement dans le fichier de configuration par défaut (tel que /etc/nginx/nginx.conf, comme indiqué dans l'extrait de code suivant), ou vous pouvez créer un nouveau fichier de configuration indépendant dans un certain répertoire, puis incluez les fichiers de configuration dans ce répertoire (comme indiqué à la ligne 17).
http { 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; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; }
C'est le format permettant à nginx de lire les fichiers de configuration. Notre configuration est généralement écrite dans le bloc http { }, plus le bloc serveur, et configurée dans le bloc serveur. Comme mentionné tout à l'heure, le bloc serveur peut être écrit dans un fichier séparé et inclus dans nginx.conf. En même temps, l'inclusion imbriquée est prise en charge.
Ensuite, regardons comment est écrit le bloc serveur :
server { listen 80; server_name p.postmsg.cn; location / { proxy_pass http://127.0.0.1:8008; proxy_redirect off; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; } #access_log logs/p_access.log; }
Le nom_serveur correspond ici au nom de domaine configuré, et proxy_pass correspond à l'adresse réelle du proxy.
(3) Note 1
Assurez-vous de laisser le port 80 à nginx, qui est responsable du proxy. Nous pouvons utiliser Apache httpd, nginx et tomcat en même temps sur un seul serveur, mais la résolution de noms de domaine ne peut utiliser que le port par défaut 80, et les camarades en charge de l'agence doivent recevoir des demandes de première main.
(4) Note 2
Il est effectif immédiatement. Certains amis ont l'impression d'avoir tout configuré correctement et d'avoir redémarré le service, mais ils ne peuvent tout simplement pas voir les résultats souhaités. Il y a trois facteurs possibles ici.
. La durée minimale de validité du nom de domaine d'Alibaba Cloud est de 10 minutes, et elle peut parfois être plus longue que cette valeur.
Vous pouvez utiliser la commande ipconfig /flushdns dans cmd pour actualiser le cache DNS local.
C'est peut-être le plus difficile à trouver, surtout dans Google Chrome. Après f12, cliquez avec le bouton droit sur le bouton d'actualisation à côté de la barre d'adresse dans le coin supérieur gauche, cliquez sur Vider le cache et recharger matériellement.
Le redémarrage du service nginx peut parfois ne pas être utile sans s'arrêter d'abord puis démarrer.
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!