Yaklaşık yarım düzine farklı web sitesine hizmet veren bir nginx sunucum var. IPv6 yerel desteğini (Dallas veri merkezi) yeni alan bir Linode üzerinde çalışıyor ve sitelerimin çoğunu çift yığınlı işlem için yapılandırmaya çalışıyorum. İlki başlattım ve şöyle bir IPv6-only alt etki alanı kullanarak çalışıyor:
server {
listen [::]:80 ipv6only=on;
listen 80;
server_name example.com ipv6.example.com;
root /var/www/example.com/htdocs;
#More stuff, including PHP, WordPress
}
Bu harika çalışır - example.com yalnızca IPv4'tür (şimdilik) ve ipv6.example.com yalnızca IPv6’dır (öncelikle test amaçlıdır). Yapabilirim ping6 ipv6.example.com
, ve hatta wget ipv6.example.com
bir ter bile olmadan - bu çok hoş bir acısızdı (nginx'in sanal konakları bağladığı, ipv6only=on
argümanı ve ikili listen
yönergeleri gerektirecek şekilde "gotcha" yı bulduktan sonra ).
Ancak, bunu static.example.com ile başlayan diğer etki alanlarımı desteklemek için genişletmeye çalışıyorum; Yukarıdaki gibi aynı yaklaşımı uyguladığımda, ( argüman listen
dahil ikili direktifler ipv6only=on
), nginx'i yeniden başlatırken şu hatayı alıyorum:
* Starting Nginx Server...
nginx: [emerg] a duplicate listen options for [::]:80 in /etc/nginx/sites-enabled/example.com.conf:3
Belki nginx'in IPv6 için bağlanma yönteminin isme dayalı sanal konaklara izin vermediği görünüyor? Ana bilgisayarımdan ek IPv6 adresleri almak zorundayım (sorun değil) ve IPv6'da IP tabanlı sanal barındırma ile IPv4 üzerinde IP tabanlı sanal barındırma kullanmam gerekir mi? Veya yapılandırmalarımın her iki yığında da tutarlı kalmasına izin verecek bir çözümü özlüyor muyum?
Dünya IPv6 Günü için sitemin tam olarak IPv6 yığınında olmasını umuyordum , ancak bunu hızlı bir şekilde temizleyemezsem hazır olmayabilirim. Herhangi bir pratik bakış açısından büyük bir sorun değil - sitelerimden hiçbiri hayal gücünün bir gerilimi ile "büyük bir organizasyon" olarak nitelenmiyor - ancak geek inancımı kurtarmama yardım et!
Eklemek için düzenlendi:
@Kolbyjack'in yanıtı sayesinde şu anda tamamen işlevsel bir çift yığınlı web sunucum var. Sadece açıklık uğruna, bana verdiği çözümde düzenleme yapıyorum, böylece herkes cevabın ne olduğunu açıkça görebiliyor.
Benim varsayılan catchall vhost aşağıdaki listen
yönergelere sahiptir:
listen 80 default_server;
listen 8080 default_server;
listen [::]:80 default_server ipv6only=on;
listen [::]:8080 default_server ipv6only=on;
Siparişin önemli olup olmadığını bilmiyorum, ama işte. Sonra, her bir ek vhost aşağıdaki listen
yönergelere sahiptir:
listen 80;
listen [::]:80;
(Ya da bunun yerine bu bağlantı noktasını dinleyen kişi için 8080.) Buradaki önemli kısım, varsayılan vhost'un listen
direktifleri haricindeki tüm argümanlardaki eksikliğin toplamı gibi görünüyor - yani tekrarı yok ipv6only=on
.
Yine, burada çözüm için @ kolbyjack için çok teşekkürler!
ipv6only=on
. Ancak her şey aynı kaldı, bunun için teşekkürler!