मेरे पास एक nginx सर्वर है जो लगभग आधा दर्जन विभिन्न वेबसाइटों की सेवा कर रहा है। यह एक लाइनोड पर चल रहा है जिसे बस IPv6 देशी समर्थन (डलास डेटा सेंटर) मिला है, और मैं अपने अधिकांश साइटों को दोहरे-स्टैक ऑपरेशन के लिए कॉन्फ़िगर करने का प्रयास कर रहा हूं। मुझे पहला आईपी अप मिला और एक IPv6- केवल उपडोमेन का उपयोग करके दौड़ना पड़ा:
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
}
यह महान काम करता है - example.com IPv4-only (अभी के लिए) है, और ipv6.example.com IPv6-only (मुख्यतः परीक्षण प्रयोजनों के लिए) है। मैं कर सकता हूं ping6 ipv6.example.com
, और यहां तक कि wget ipv6.example.com
एक पसीने को तोड़ने के बिना भी - यह बहुत सुखद दर्द-मुक्त था (जिस तरह से "गैंचा" को खोजने के साथ नगनेक्स आभासी मेजबानों को बांधता है, ipv6only=on
तर्क और दोहरे listen
निर्देशों की आवश्यकता होती है )।
हालाँकि, अब मैं static.example.com के साथ शुरू होने वाले अपने अन्य डोमेन का समर्थन करने के लिए इसे विस्तारित करने की कोशिश कर रहा हूं; जब मैं ऊपर के रूप में एक ही दृष्टिकोण लेता हूं, हालांकि (दोहरी listen
निर्देश, जिसमें ipv6only=on
तर्क भी शामिल है), मुझे एल्गिन को पुनरारंभ करते समय निम्न त्रुटि मिलती है:
* Starting Nginx Server...
nginx: [emerg] a duplicate listen options for [::]:80 in /etc/nginx/sites-enabled/example.com.conf:3
ऐसा लगता है कि शायद IPv6 के लिए बाध्यकारी nginx की विधि नाम-आधारित वर्चुअल होस्ट की अनुमति नहीं देती है? क्या मुझे अपने होस्ट से अतिरिक्त IPv6 पते प्राप्त करने होंगे (कोई समस्या नहीं) और IPv6 पर IPv6 पर नाम-आधारित वर्चुअल होस्टिंग के साथ IP- आधारित वर्चुअल होस्टिंग का उपयोग करना होगा? या मैं एक समाधान याद कर रहा हूँ जिससे मेरे विन्यास दोनों ढेर पर लगातार बने रहेंगे?
मैं विश्व आईपीवी 6 दिवस के लिए समय पर पूरी तरह से आईपीवी 6 स्टैक पर अपनी साइट की उम्मीद कर रहा था , लेकिन जब तक मैं इसे जल्दी से साफ नहीं कर सकता, मैं तैयार नहीं हो सकता। किसी भी व्यावहारिक दृष्टिकोण से बड़ी बात नहीं है - मेरी कोई भी साइट कल्पना के किसी भी खंड द्वारा "प्रमुख संगठन" के रूप में योग्य नहीं है - लेकिन मुझे अपने गीक क्रेड को बचाने में मदद करें!
जोड़ने के लिए संपादित:
@Kolbyjack के उत्तर के लिए धन्यवाद, मेरे पास अब पूरी तरह कार्यात्मक दोहरे-स्टैक वेब सर्वर है। सिर्फ स्पष्टता के लिए, मैं उस समाधान में संपादन कर रहा हूं जिसने मुझे दिया है ताकि हर कोई स्पष्ट रूप से देख सके कि उत्तर क्या है।
मेरे डिफ़ॉल्ट catchall vhost में निम्नलिखित listen
निर्देश हैं:
listen 80 default_server;
listen 8080 default_server;
listen [::]:80 default_server ipv6only=on;
listen [::]:8080 default_server ipv6only=on;
मुझे नहीं पता कि क्या आदेश मायने रखता है, लेकिन यह है। फिर, प्रत्येक अतिरिक्त vhost में निम्नलिखित listen
निर्देश हैं:
listen 80;
listen [::]:80;
(या इसके बजाय उस बंदरगाह पर सुनने वाले व्यक्ति के लिए 8080।) यहाँ महत्वपूर्ण हिस्सा सभी पर किसी भी अतिरिक्त तर्क की कुल कमी प्रतीत होता है, लेकिन डिफ़ॉल्ट vhost के listen
निर्देशों का - यानी कोई पुनरावृत्ति नहीं ipv6only=on
।
फिर, यहाँ समाधान के लिए @kolbyjack के लिए बहुत धन्यवाद!
ipv6only=on
। बाकी सब कुछ वैसे ही बना रहा, इसके लिए धन्यवाद!