2013-05-24 3 views
3

J'ai une plate-forme d'hébergement qui héberge plusieurs sites Web de clients. Il s'agit d'une charge d'application Catalyst équilibrée derrière nginx. Je voudrais que chaque client ait la possibilité de choisir s'il veut que son domaine ait www devant lui ou pas www devant lui, et ensuite je voudrais être en mesure de rediriger de manière appropriée. Ma question est: est-il préférable de gérer quelque chose comme ceci au niveau nginx, ou au niveau Catalyst? Généralement une simple redirection www à non-www serait gérée au niveau de l'équilibreur de charge, mais je pense que la façon dont je redirige varie selon le domaine, il sera peut-être plus logique de gérer les redirections au niveau Catalyst? Si oui, quelle est la meilleure façon de gérer une redirection de www à non-www (ou viceversa) dans Catalyst? Ou si vous pensez que nginx serait mieux, quelle serait la meilleure façon de gérer cela en utilisant cela? Merci!perl catalyst www à non www redirect

+0

De combien de domaines parlons-nous ici? Y a-t-il un vhost pour chaque domaine? – innaM

+0

@innaM il y a actuellement 100 domaines. Et il y en aura plus. Il n'y a pas de vhost pour chacun, j'essayais d'éviter cela, donc je pouvais juste pointer des domaines sur le serveur nginx et le faire fonctionner sans avoir à jouer avec la config à chaque fois. Actuellement, j'ai un bloc de serveur qui transmet tous les domaines aux serveurs de l'application Catalyst. Pensez-vous que le meilleur moyen serait d'avoir un bloc de serveur pour chaque domaine? Ce serait beaucoup de copier et coller! – srchulo

+0

Je ne pensais pas à copier et coller, mais à automatiser le processus. Après tout, vous êtes un programmeur perl :-) Mais il m'est difficile de dire si c'est une option dans votre situation. – innaM

Répondre

1

Vous pouvez le faire avec le DNS du client. Par exemple, si vous attribuez à www.domain.com un alias CNAME de domain.com et réécrivez www.domain.com à domain.com avec nginx. Je pense que ce serait l'approche la plus simple. Est-ce que cela crée une confusion chez Catalyst?

Notez également que l'utilisation des alias CNAME de cette manière signifie que vous devez faire attention aux certificats SSL que vous pouvez utiliser pour le protocole HTTPS.

+0

mais si je réécris www.domain.com à domain.com avec nginx, comment saurai-je quels domaines réécrire comment si j'ai 20 domaines différents entrant dans nginx? Par exemple, domaina.com doit être redirigé vers www.domaina.com, et domainb.com doit être redirigé vers www.domainb.com. Peut-être que je ne comprends pas votre solution, mais ne devrais-je pas manuellement mettre cela dans le fichier de configuration pour nginx pour chaque domaine unique? – srchulo

+0

Puisque cela se produirait au niveau DNS, il n'y aurait pas de réécriture _per se_. Catalyst nécessite-t-il un domaine canonique dans la requête? J'utilise également des proxys inversés, ce qui peut m'isoler des problèmes que vous voyez. –

0

Les serveurs Web comme nginx sont très bien adaptés pour faire de simples redirections d'URL. Avec nginx, vous pouvez faire les redirections comme ceci:

server { 
     listen  0.0.0.0:80; 
     server_name *.mydomain.com; 

     rewrite ^(.*) http://mydomain$1 permanent; 
} 
+0

Je voudrais être en mesure de rediriger de www à non-www, ou viceversa pour chaque domaine individuel. Ce que vous avez ici signifie que je devrais avoir à définir une configuration de serveur pour chaque domaine que je veux supporter. Une fois que je disposerai d'un nombre décent de domaines à prendre en charge, il deviendra vraiment compliqué d'ajouter cette directive à chaque fois. – srchulo