Auf folgenden Fehler kann man treffe, wenn man Nginx dazu überreden möchte sowohl IPv4 als auch IPv6 Verbindungen zu akzeptieren.
2013/04/18 09:02:40 [emerg] 2626#0: bind() to [::]:443 failed (98: Address already in use) 2013/04/18 09:02:40 [emerg] 2626#0: bind() to [::]:80 failed (98: Address already in use) 2013/04/18 09:02:40 [emerg] 2626#0: bind() to [::]:443 failed (98: Address already in use) 2013/04/18 09:02:40 [emerg] 2626#0: bind() to [::]:80 failed (98: Address already in use) 2013/04/18 09:02:40 [emerg] 2626#0: bind() to [::]:443 failed (98: Address already in use) 2013/04/18 09:02:40 [emerg] 2626#0: bind() to [::]:80 failed (98: Address already in use) 2013/04/18 09:02:40 [emerg] 2626#0: bind() to [::]:443 failed (98: Address already in use) 2013/04/18 09:02:40 [emerg] 2626#0: bind() to [::]:80 failed (98: Address already in use) 2013/04/18 09:02:40 [emerg] 2626#0: bind() to [::]:443 failed (98: Address already in use) 2013/04/18 09:02:40 [emerg] 2626#0: bind() to [::]:80 failed (98: Address already in use) 2013/04/18 09:02:40 [emerg] 2626#0: still could not bind()
Ausgelöst wird er durch die Dopplung der “listen” Anweisung in der Seiten-Konfiguration. Da zwei Anweisungen jeweils versuchen den gleichen Port zu binden.
Für HTTPS:
listen 443; listen [::]:443;
Für HTTP:
listen 80; listen [::]:80;
Möchte man die Dopplung beibehalten, dann sollte man bei der “IPv6″-Anweisung ein ipv6only=on anhängen. Also:
Für HTTPS:
listen 443; listen [::]:443 ipv6only=on;
Für HTTP:
listen 80; listen [::]:80 ipv6only=on;
Man kann die erste (vermeintliche) IPv4 Anweisung entfernen und der Webserver ist trotzdem auch über IPv4 erreichbar.
Für HTTPS:
listen [::]:443;
Für HTTP:
listen [::]:80;
Dort muss man dann aber wieder das “ipv6only=on” entfernen, da sonst keine IPv4 Verbindungen akzeptiert würden. Der einzige Unterschied, den ich zwischen den Varianten mit Dopplung und ohne festgestellt habe, war das Format der IP-Adressen in den Zugriffs Logfiles. So wird bei der Dopplung die IPv4 Adresse als klassische v4-Adresse angezeigt und die IPv6 Adresse als gewöhnliche v6-Adresse, während ohne Dopplung die v4-Adresse in das v6-Schema umwandelt.


