Comment puis-je avoir la même règle pour les deux emplacements dans la config NGINX?
Comment puis-je avoir la même règle pour les deux emplacements dans la config NGINX?
J'ai essayé les
server {
location /first/location/| /second/location/{
..
..
}
}
mais nginx recharger jeté cette erreur:
nginx: [emerg] invalid number of arguments in "location" directive**
Vous devez vous connecter pour publier un commentaire.
Essayer
La
~
moyens pour utiliser une expression régulière pour l'url. Le^
moyens de vérifier à partir du premier caractère. Ce sera pour une/
suivie par l'un des emplacements et puis un autre/
.nginx/1.13.2
proxy_pass
règles.proxy_pass
de travailler, de voir cette réponse: stackoverflow.com/a/46625656/1246870Une autre option est de répéter les règles dans deux préfixe endroits à l'aide d'un fichier inclus. Depuis préfixe emplacements sont indépendant de la position dans la configuration, l'utilisation, vous permet d'économiser une certaine confusion que vous ajoutez d'autres regex lieux plus tard. En évitant les regex endroits où vous pouvez aider votre configuration évoluer en douceur.
Voici un échantillon partagé.conf:
shared.conf
exemple et l'emplacement?À la fois les regex et les fichiers inclus sont les bonnes méthodes, et j'ai souvent de l'utiliser. Mais une autre alternative est d'utiliser un "emplacement nommé", qui est une approche utile dans de nombreuses situations — en particulier les plus compliqués. Le officiel "Si c'est Mal" page montre essentiellement les suivants comme une bonne façon de faire les choses:
Il y a des avantages et des inconvénients de ces différentes approches. Un gros avantage pour une regex, c'est que vous pouvez capturer des parties de la correspondance et de les utiliser pour modifier la réponse. Bien sûr, vous pouvez généralement obtenir des résultats similaires avec les autres approches, soit par la définition d'une variable dans le bloc d'origine ou à l'aide de
map
. L'inconvénient de la regex approche est qu'il peut être lourd si vous voulez correspondre à une variété d'endroits, en plus de la faible priorité d'une regex peut tout simplement pas s'adapter avec la façon dont vous voulez correspondre à des emplacements — pour ne pas mentionner qu'il y a apparemment un impact sur les performances de regexes dans certains cas.Le principal avantage de l'inclusion de fichiers (pour autant que je peux dire) c'est que c'est un peu plus flexible exactement ce que vous pouvez inclure — il n'a pas à être un lieu de bloquer, par exemple. Mais c'est aussi seulement subjectivement un peu moins agiles que les lieux nommés.
Notez également qu'il existe une solution connexe que vous pouvez être en mesure d'utiliser dans des situations similaires: niché endroits. L'idée est que vous commencez avec une très générales de l'emplacement, appliquez un peu de configuration commune à plusieurs des correspondances possibles, puis de séparer les imbriquée emplacements pour les différents types de chemins d'accès que vous souhaitez faire correspondre. Par exemple, il pourrait être utile de faire quelque chose comme ceci:
C'est court, mais efficace et éprouvée approche:
location ~ (patternOne|patternTwo){ #rules etc. }
Donc, on peut facilement avoir plusieurs motifs avec de la simple pipe syntaxe pointant vers le même emplacement de bloc /rules.