Cet article présente principalement la méthode de configuration de Location dans Nginx. Il a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
.
今天有一位同学问到 Nginx 的站点多路径匹配的问题?
1.www.domain.com/a
Besoin de revenir/var/www/domain.com/a/index.html
2.www.domain.com/b
Besoin de revenir/var/www/domain.com/b/index.html
Comment configurer Nginx pour le rendre efficace ?
Pour résoudre ce problème, la première réaction est d'utiliser directement la directive de localisation Nginx pour le résoudre. Cependant, avant de donner la réponse, comprenons d'abord les bases de la directive de localisation Nginx.
Dans le fichier de configuration Nginx, deux blocs (Blocs) couramment utilisés sont généralement utilisés pour les paramètres :
1. Bloc de la zone du serveur
2. .Localtion Block
Le bloc ici fait référence à Block. Vous pouvez même le comprendre comme le contenu de configuration entre la paire suivante de {}
.
Le bloc Sever est principalement la configuration de l'hôte réel, comme la configuration du nom de domaine, de l'IP, du port, etc. Bien entendu, dans un fichier de configuration Nginx, nous pouvons spécifier la configuration de plusieurs blocs Server.
Le bloc Emplacement se trouve à l'intérieur du bloc Serveur et est subdivisé en configurations pour différents chemins et demandes. Comme il existe généralement de nombreux URI dans un site, vous pouvez également écrire plusieurs configurations d'emplacement dans les paramètres du bloc Emplacement.
Jetons d'abord un coup d'œil à la syntaxe de base de la configuration de l'emplacement :
location optional_modifier location_match { # 这个 {} 里面的配置内容就是一个区块 Block }
Les optional_modifier
éléments de configuration ci-dessus peuvent utiliser des expressions régulières. Ceux couramment utilisés sont les suivants :
留空
. Oui, le laisser vide est aussi un moyen de le définir. Lorsqu'elle est laissée vide, la configuration indique que le chemin de la requête commence par location_match
.
=
, le signe égal est très simple à comprendre : cela signifie que le chemin de la requête est exactement égal à la valeur de ce qui suit location_match
c'est quand même différent de partir ; le premier élément est vide.
~
, Piaohao (notez qu'il s'agit de Piaohao saisi en anglais) représente une correspondance régulière sensible à la casse.
~*
représente une correspondance régulière insensible à la casse.
^~
signifie qu'une correspondance régulière ne devrait pas se produire ici.
Ce qui précède explique les concepts de base et les configurations courantes de la directive de localisation. Jetons un coup d'œil à l'ordre dans lequel la localisation entre en vigueur ! Ceci est également très important :
Après que chaque demande arrive à Nginx, Nginx choisira la meilleure correspondance pour l'emplacement auquel répondre. Le processus spécifique de traitement consiste à la comparer avec la configuration de l'emplacement une par une. Cette étape peut être divisée en Pour les étapes suivantes :
première correspondance 前缀式
(c'est-à-dire la configuration où le optionnel_modifier de l'emplacement est vide).
Nginx recherchera ensuite la configuration d'emplacement correspondante exacte en fonction de l'URI (c'est-à-dire la configuration où le modificateur optionnel de l'emplacement est =
Si une configuration est trouvée, le processus de recherche sera arrêté et le contenu de la réponse sera renvoyé directement. ^~
location = / { # = 等号配置符,只匹配 / 这个路由 }
location /data { # 留空配置,会匹配有 /data 开始的路由,后续有匹配会往下匹配。 }
location ^~ /img/ { # 注意 ^~ 配置,这里匹配到 /img/ 开始的话,直接就返回了。 }
location ~* .(png|gif|ico|jpg|jpeg)$ { # 匹配以 png, gif, ico, jpg or jpeg 结尾的请求;这个通常用来设置图片的请求响应。 }
Réponse à la question
Enfin, commençons regardez La réponse à la question peut être quelque chose comme ceci :location ~ .(png|gif|jpe?g)$ { valid_referers none blocked yourwebsite.com *.yourwebsite.com; # 注意上面写上你的域名就好 if ($invalid_referer) { return 403; } }
php
Recommandations associées : js
location ~* /(media|images|cache|tmp|logs)/.*.(php|jsp|pl|py|asp|cgi|sh)$ { return 403; }
location /a { root /var/www/domain.com/a; } location /b { root /var/www/domain.com/b; }
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!