Serveur web ipv6 avec Nginx

Documentation officielle

La directive qui gère ce genre de chose est listen : http://wiki.nginx.org/NginxHttpCoreModule#listen

Et un petit lien ipv6 bien fait pour la route : http://irp.nain-t.net/doku.php/075ipv6:start

Une petit lien qui m'a inspiré pour la rédaction : http://kovyrin.net/2010/01/16/enabling-ipv6-support-in-nginx/

Vérification que nginx supporte bien l'ipv6

La version de Debian Squeeze le supporte mais il faut mieux vérifier :

nginx -v | grep ipv6

Fonctionnement sous Linux

Il faut savoir qu'en fonction d'un paramètre du noyau (net.ipv6.bindv6only) un bind sur une adresse ipv6 entraine le même bind en ipv4 (valeur à 0) ou uniquement ipv6 (valeur à 1). La valeur est à vérifier avec :

sysctl -a|grep net.ipv6.bindv6only

net.ipv6.bindv6only = 0

Sur ma Debian Squeeze ce paramètre est bien à 0 donc j'ai du modifier tous mes sites définis dans sites-enabled pour remplacer :

listen 80;

par

listen [::]:80;

Si lors d'un redémarrage de nginx vous avez ce genre de message c'est que vous avez oublié un site :

[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

net.ipv6.bindv6only = 1

Si le paramètre net.ipv6.bindv6only=1 alors il faut deux lignes (pour faire deux bind) :

listen [::]:80 ipv6only=on;
listen 80;

Vérification du bon fonctionnement

Après un redémarrage de nginx on peut vérifier le bon fonctionnement en utilisant netstat :

#netstat -nlp | grep nginx
tcp6       0      0 :::80                   :::*                    LISTEN      1147/nginx

Published 14th Jan 2011 // #nginx




comments powered by Disqus