Maison  >  Article  >  développement back-end  >  Méthode de configuration de l'emplacement dans Nginx

Méthode de configuration de l'emplacement dans Nginx

不言
不言original
2018-07-07 16:30:243826parcourir

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.

Concept de configuration des blocs 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 :

  1. 留空. 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.

  2. = , 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.

  3. ~, Piaohao (notez qu'il s'agit de Piaohao saisi en anglais) représente une correspondance régulière sensible à la casse.

  4. ~* représente une correspondance régulière insensible à la casse.

  5. ^~ signifie qu'une correspondance régulière ne devrait pas se produire ici.

L'ordre dans lequel Nginx traite les blocs de localisation

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 :

  1. première correspondance 前缀式 (c'est-à-dire la configuration où le optionnel_modifier de l'emplacement est vide).

  2. 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 =

    ).
  3. S'il n'y a toujours pas de correspondance, faites d'abord correspondre la configuration

    Si une configuration est trouvée, le processus de recherche sera arrêté et le contenu de la réponse sera renvoyé directement. ^~

  4. Si aucune correspondance n'est trouvée, la correspondance régulière sensible à la casse sera effectuée en premier, puis la correspondance régulière insensible à la casse sera effectuée.

Quelques exemples de configuration de Nginx Location :

Il est inutile d'en parler davantage après avoir lu tant de théories, cela ne sert à rien sans des exemples spécifiques pour le soutenir, alors allons-y. jetez un œil aux exemples spécifiques. protection des hotlinks

location  = / {
  # = 等号配置符,只匹配 / 这个路由
}
2. Pour certains chemins inscriptibles, interdire à
location /data {
   # 留空配置,会匹配有 /data 开始的路由,后续有匹配会往下匹配。
}
ou
location ^~ /img/ {
  # 注意 ^~ 配置,这里匹配到 /img/ 开始的话,直接就返回了。
}
d'exécuter
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;
  }
}
Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention. au site Web PHP chinois !

phpRecommandations associées : js

location ~* /(media|images|cache|tmp|logs)/.*.(php|jsp|pl|py|asp|cgi|sh)$ {
  return 403;
}
Utilisez nginx pour déployer plusieurs serveurs Web sur un seul serveur

location /a {
   root /var/www/domain.com/a;
}

location /b {
   root /var/www/domain.com/b;
}
Comment ajouter des modules à 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:
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