डिफ़ॉल्ट सर्वर को रोकने का सबसे अच्छा तरीका?


26

मेरे पास कई vhosts हैं, और मैं डिफ़ॉल्ट vhost को "बंद" करना चाहूंगा, या तो रिक्त पृष्ठ, त्रुटि पृष्ठ, या आमतौर पर जो भी Nginx के संसाधनों का सबसे कुशल उपयोग है, जबकि केवल अन्य vhosts के माध्यम से उपयोग करने की अनुमति देता है पूर्व-निर्धारित डोमेन।

जवाबों:


42

HTTP 444 कोड लौटाने वाले default_server को परिभाषित करें :

server {
    listen      80 default_server;
    server_name _;
    return      444;
}

(4xx त्रुटि कोड वापस करने का अर्थ है कि अनुरोधों को क्लाइंट द्वारा एक असफल अनुरोध के रूप में व्याख्या किया जा सकता है, बल्कि एक HTTP 200 ब्लेंक पेज लेकिन पूरी तरह से काम ट्रस्ट मी ।)


2
444 एक गैर-मानक nginx विशिष्ट कोड है: "एक विशेष nginx का गैर-मानक कोड 444 वापस आ गया है जो कनेक्शन बंद कर देता है"
bzeaman

2
यह https के लिए काम नहीं करता है। एक साधारण सुनो 443 default_server काम नहीं करेगा क्योंकि ssl हैंडशेक सबसे पहले होता है और 444 लौटने से पहले nginx त्रुटि करेगा। एक समाधान मुझे अभी तक प्रयास करना है, लेकिन काम करना चाहिए डिफ़ॉल्ट https सर्वर और वैकल्पिक रूप से स्वयं हस्ताक्षरित प्रमाण पत्र बनाना है किसी भी ब्राउज़र त्रुटियों से बचने के लिए http पर पुनर्निर्देशित करें।
साइमन बेंग्सटन

SSL कनेक्शन को मना करने का एक अच्छा तरीका प्रदान करने के लिए nginx टिकट यहाँ है । उन्होंने यह भी एक प्रदान वैकल्पिक हल की स्थापना, ssl_ciphers aNULL;
nh2

वैकल्पिक हल मैंने कहा गैर SNI-सक्षम HTTPS ग्राहकों (nginx की अपनी तरह टूट जाएगा नोट proxy_pass, जब तक आप सेट proxy_ssl_server_name on;किसी अन्य पहुंचने से) server_names(वैध तो अनिवार्य रूप से तोड़ने के server_nameपोर्ट 443 के लिए कि आप करते हैं के माध्यम से जाने के लिए चाहते हैं)। देखें trac.nginx.org/nginx/ticket/195#comment:11 जानकारी के लिए।
nh2

4

बस डिफ़ॉल्ट vhost को परिभाषित करें जो खाली index.html फ़ाइल के साथ निर्देशिका को इंगित करेगा।

server {
    listen       80 default_server;
    server_name  _ ;
    root /var/www/placeholder ; 
    index index.html;
}

और रिक्त स्थान को / var / www / प्लेसहोल्डर में रखें


यह हर उस अनुरोध को पकड़ लेगा जो आपके किसी भी डोमेन नाम और हिट पेज के साथ प्रतिक्रिया नहीं करता है।
wojciechz

आप के return '';बजाय बस नहीं कर सकते root...index?
ओरिदम

0

क्यों नहीं सभी इनकार करते हैं

server {
    listen       80 default_server;
    server_name  _;

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