Server_name के बिना nginx और केवल स्थिर आईपी पते का उपयोग कर रहे हैं?


34

यह मेरा पहला वेब ऐप परिनियोजन है और सभी प्रकार के मुद्दों में चल रहा है।

मैं वर्तमान में Django ऐप के लिए एक nginx + gunicorn कार्यान्वयन के लिए जा रहा हूं, लेकिन ज्यादातर यह प्रश्न nginx कॉन्फ़िगरेशन से संबंधित है। कुछ संदर्भों के लिए - nginx को कनेक्शन और प्रॉक्सी को gunicorn स्थानीय सर्वर से प्राप्त होगा।

नेगनेक्स कॉन्फ़िगरेशन में, जहां यह कहता है server_nameकि मुझे एक प्रदान करना है? मैं अपने नेटवर्क के बाहरी आईपी (यह स्थिर है) और पोर्ट नंबर को सुनने के लिए किसी भी प्रकार के डोमेन नाम का उपयोग करने की योजना नहीं करता हूं।

मेरी इच्छा यह है कि जब मैं किसी चीज को एक्सेस करता http://xxx.xxx.xxx.xxx:9050हूं तो मुझे साइट मिल सकेगी।

निम्नलिखित नमूना कोड है जिसे मैं संदर्भ के लिए कॉन्फ़िगरेशन पर आधारित करूंगा।

   server {
        listen   80;
        server_name WHAT TO PUT HERE?;

    root /path/to/test/hello;

    location /media/ {
        # if asset versioning is used
        if ($query_string) {
            expires max;
        }
    }
    location /admin/media/ {
        # this changes depending on your python version
        root /path/to/test/lib/python2.6/site-packages/django/contrib;
    }
    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        proxy_pass http://localhost:8000/;
    }
        # what to serve if upstream is not available or crashes
        error_page 500 502 503 504 /media/50x.html;
     }

जवाबों:


31

server_nameएक खाली स्ट्रिंग के लिए चूक, जो ठीक है; आप इसे पूरी तरह से बाहर कर सकते हैं।

"मैं इस पर एक नाम नहीं डालना चाहता" के लिए एक और सामान्य दृष्टिकोण का उपयोग करने की आवश्यकता है server_name _;

आपका http://xxx.xxx.xxx.xxx:9050URL इस कॉन्फ़िगरेशन के साथ काम नहीं करेगा, हालाँकि; आप केवल पोर्ट 80 पर सुन रहे हैं। आपको एक listen 9050;अच्छी तरह से जोड़ना होगा ।



कुछ हद तक संबंधित
मुहम्मद उमर

5

सर्वर का नाम _; क्या यहां वाइल्डकार्ड नहीं है:

http://blog.gahooa.com/2013/08/21/nginx-how-to-specify-a-default-server

IP- केवल पहुँच के लिए default_server निर्देश निर्दिष्ट करें ( http://nginx.org/en/docs/http/request_processing.html देखें )

server {
    listen 1.2.3.4:80 default_server;
    ... 
    }

2
यह केवल जानकारी के उपयोगी टुकड़े से लिंक करने के लिए हतोत्साहित किया जाता है और इसे आपके उत्तर में शामिल नहीं करता है - इस मामले में कि server_name _;यह एक गैर-मैच है।
BE77Y

1
"वाइल्डकार्ड नहीं है" == "एक गैर-मैच है"। मुझे यकीन है कि वे इसे प्राप्त करेंगे।
जो

2
दोनों बराबर नहीं हैं; नॉन-मैच वह होता है जो किसी और चीज से मेल नहीं खाता है, जबकि वाइल्डकार्ड हर चीज से मेल खाता है। हालाँकि यहाँ पर यह बात महत्वपूर्ण है कि उपयोगी जानकारी उत्तर में होनी चाहिए, किसी अन्य साइट से जुड़ी हुई नहीं (हालाँकि उस साइट पर अच्छी तरह से प्रस्तुत की गई है), यहाँ
BE77Y

और मुद्दा यह है कि यह एक 'अच्छा जवाब' नहीं है, बल्कि यह एक जवाब है। क्षमा करें समय नहीं। यदि आप इसे संपादित / पुन: लिखना चाहते हैं, तो मैं आपको इसकी पूर्ण अनुमति देता हूं। अन्यथा, उन्हें पता चल जाएगा कि वास्तव में क्या करना है, और यह मददगार है। इसे फिर से लिखने के लिए स्वतंत्र महसूस करें, अन्यथा उत्तर खड़ा है।
जो

3
यदि आपके पास प्रासंगिक जानकारी के साथ एक अतिरिक्त लाइन शामिल करने के लिए कोई समय नहीं था, तो मुझे ईमानदारी से पता नहीं है कि आपने एक स्वीकृत उत्तर के साथ 3 साल पुरानी पोस्ट का जवाब देने की जहमत क्यों उठाई!
बीई77 वाई

4

यदि आप चाहते हैं कि आपका ऐप विशिष्ट होस्टनाम के बिना पोर्ट 9050 पर प्रतिक्रिया दे तो आप सिर्फ server_name को छोड़ सकते हैं, यह आवश्यक नहीं है क्योंकि Nginx पहले प्रविष्टि को सुनता है और फिर server_name यदि मौजूद है:

server {
   listen 9050;

   .....
}

यहाँ अधिक जानकारी: Nginx server_name और यह कैसे काम करता है

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