सभी unhandled vhosts को पकड़ने के लिए Nginx की स्थापना


41

अगर मेरे पास पहले से ही वर्चुअलहोस्टेस का एक गुच्छा है, तो मैं उन अनुरोधों को संभालने के लिए एक वर्चुअल होस्ट कैसे बना सकता हूं जो किसी भी वर्चुअलहोस्टेस से मेल नहीं खाते हैं? (यानी आईपी द्वारा एक्सेस, आईपी से एक और डोमेन लिंक, .etc .etc)

जवाबों:


52

सर्वर का नाम _; और सुनो विन्यास पर default_server वे हैं जो आप खोज रहे हैं।

उदाहरण:

server {

   listen 80 default_server;
   server_name _;

   root /var/www/default; (or wherever)    

}

1
और https केस के लिए:listen 443 ssl default_server;
James T Snell

जब मैं इसे सक्षम करता हूं, तो मेरी owncloud 9प्रतिक्रिया नहीं होगी। क्यूं कर? ओक्क्लाउड VHOST में एक server_name है और कोई default_server नहीं है।
कार्नि

मैं उपयोग नहीं करता 80केवल 443 खुला है।
कार्नि

यदि मैं इसे जोड़ता हूं, तो मेरे अन्य कॉन्फ़िगरेशन स्निपेट / etc / nginx / साइट्स-सक्षम / अनदेखा किए जाते हैं। सभी डोमेन /var/www/defaultइस मामले में जाते हैं। मुझे स्निपेट्स कैसे ऑर्डर करना है?
rubo77

मैं कनेक्शन को पोस्टग्रेज करने के लिए vhos बना सकता हूं?
एरलॉन चार्ल्स

4

यदि आप SSL का उपयोग करते हैं, तो आपको default_server के लिए कुछ अतिरिक्त प्लंबिंग की आवश्यकता होती है - प्रमाणपत्र और कुंजी (जो स्व-हस्ताक्षरित हो सकती है)।

server {
    server_name _;
    listen 80 default_server;
    listen 443 ssl default_server;
    ssl_certificate <path to cert>;
    ssl_certificate_key <path to key>;
    return 404; # or whatever
}

Nginx एक IP / पोर्ट-मिलान default_server पर SSL कनेक्शन को स्वीकार करने का प्रयास करेगा। यदि ऐसा सर्वर सर्टिफिकेट / कुंजी गुम है, तो nginx कनेक्शन को छोड़ देगा। यह अन्य सर्वरों की कोशिश नहीं करेगा। तो प्रमाणित / कुंजी मत भूलना।


SSL प्रमाणपत्र के बारे में महत्वपूर्ण सूचना! यदि प्रमाणपत्र गायब है, तो पूरा नगनेक्स सर्वर नहीं चलेगा (भले ही nginx -t"ठीक है" कहता है)
फिलिप्पुस

3
server {
  listen 80 default_server;
  listen 443 ssl default_server;
  listen [::]:80 default_server;
  listen [::]:443 ssl default_server;

  server_name _;
  root /path/to/default;
}

प्रविष्टियाँ क्रमशः पोर्ट 80 (HTTP), पोर्ट 443 (HTTPS), पोर्ट 80 IPv6 और पोर्ट 443 IPv6 के लिए हैं।

आप log_not_found off;पृष्ठ नहीं मिल रहा है के लिए एक लॉग प्रविष्टि जोड़ने से बचने पर विचार कर सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.