nginx.conf rediriger plusieurs conditions
Je veux rediriger les requêtes sur deux conditions à l'aide de nginx.
Cela ne fonctionne pas:
if ($host = 'domain.com' || $host = 'domain2.com'){
rewrite ^/(.*)$ http://www.domain.com/$1 permanent;
}
Quelle est la bonne façon de le faire?
- Beaucoup de gens critiquent l'utilisation de "si", des blocs au lieu de séparer les blocs de serveurs, mais dans les cas où l'ajout d'un serveur distinct bloc ajoute beaucoup de complexité, il est d'une très bonne solution. E. g. pour https, vous pouvez éviter de spécifier l'ensemble de la configuration SSL de nouveau.
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce même problème avant. Parce que nginx ne peut pas faire de complexe de conditions ou d'instructions if imbriquées, vous avez besoin afin d'évaluer plus de 2 expressions différentes.
définir une variable certaine valeur binaire puis l'activer si la condition est vraie dans 2 différents si les déclarations:
La bonne façon serait d'utiliser un serveur dédié pour la redirection:
une autre possibilité serait
donc il va rediriger tous à un seul, mais il est basé sur les cas d'utilisation je suppose que
if ()
vérifier maintenant se produit à chaque demande. Il est préférable de mettre en place deux blocs de serveurs, dont l'un (pour les indésirables de domaine) seulement une redirection.Voici une approche déclarative:
domain.com
oudomain2.com
, àwww.domain.com
. Lewww
hôte n'est pas compensée par le premier bloc de serveur.Je pense que la meilleure façon de le faire c'est juste utiliser l'expression régulière:
Mais il est bon seulement quand vous avez uniquement des chaînes; pour une logique complexe, bien sûr, il n'est pas correct.