nginx: [emerg] server_names_hash का निर्माण नहीं कर सका, आपको server_names_hash_bucket_size बढ़ाना चाहिए


109

मैं एक नया सर्वर स्थापित करने की प्रक्रिया में हूं। मेरी पसंद का http-Server NGINX है। मैं audi-freunde-einbeck.deएक वर्चुअल होस्ट के रूप में डोमेन जोड़ना चाहता हूं । मेरे पास पहले से ही 2 अन्य डोमेन हैं और यह ठीक काम करता है, लेकिन जब मैं उपर्युक्त डोमेन को जोड़ने की कोशिश करता हूं और सर्वर शुरू करता Job failed. See system journal and 'systemctl status' for details. हूं तो मुझे लगता है कि मुझे लगा कि यह डैश के कारण था, इसलिए मैंने सिर्फ और सिर्फ हाइफ़न के साथ अन्य विभिन्न डोमेन की कोशिश की , लेकिन कोई किस्मत नहीं। वही त्रुटि। ऐसा किसके कारण हो सकता है? मैंने रिबूट करने की भी कोशिश की, मैं वास्तव में यहां हार गया हूं। किसी भी तरह की सहायता का स्वागत किया जाएगा।

मैंने लगभग थोड़ा सा खेला है और मुझे पता चला है कि, जब मैं केवल एक डोमेन डालता हूं, तो यह काम करता है। लेकिन जब मैं दूसरा डोमेन डालता हूं, तो यह रुक जाता है। यहाँ उत्पादन स्थिति में है:

[root@netzmelone nginx]# systemctl status nginx
nginx.service - A high performance web server and a reverse proxy server
      Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
      Active: failed (Result: exit-code) since Sun, 16 Dec 2012 11:38:08 +0000; 7s ago
     Process: 14239 ExecStop=/usr/sbin/nginx -g pid /run/nginx.pid; -s quit (code=exited, status=1/FAILURE)
     Process: 14232 ExecStart=/usr/sbin/nginx -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=0/SUCCESS)
     Process: 14242 ExecStartPre=/usr/sbin/nginx -t -q -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=1/FAILURE)
    Main PID: 14234 (code=exited, status=0/SUCCESS)
      CGroup: name=systemd:/system/nginx.service

Dec 16 11:38:08 netzmelone nginx[14242]: nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
Dec 16 11:38:08 netzmelone nginx[14242]: nginx: configuration file /etc/nginx/nginx.conf test failed

क्या आपने किसी लॉग को देखा है?
विगलन

मुझे कौन से लॉग देखना चाहिए?
oengelha

या आप अपने server_name के अंदर बस अपने डोमेन नाम का उपयोग कर सकते हैं।
सरन

जवाबों:


222

लंबे डोमेन नाम के कारण ऐसा होने की सबसे अधिक संभावना है। आप इसे जोड़कर ठीक कर सकते हैं

server_names_hash_bucket_size  64;

अपने httpब्लॉक के शीर्ष पर (शायद स्थित है /etc/nginx/nginx.conf)। मैं nginx प्रलेखन से उद्धृत करता हूं कि यह त्रुटि दिखाई देने पर क्या करना है In this case, the directive value should be increased to the next power of two:। तो आपके मामले में यह 64 हो जाना चाहिए।

यदि आपको अभी भी वही त्रुटि मिलती है, तो 128 और आगे बढ़ने का प्रयास करें।

संदर्भ: http://nginx.org/en/docs/http/server_names.html#optimization


8
दिलचस्प बात यह है कि मुझे 64 का उपयोग करना पड़ा, भले ही मेरा विशेष नग्नेक्स त्रुटि संदेश मुझे 32 का उपयोग करने के लिए निर्देश दे रहा था।
रयान

46
@Ryan के समान - NGINX मुझे 64 का उपयोग करने के लिए कह रहा था, लेकिन मुझे इसे काम करने के लिए 128 की आवश्यकता थी।
jerzy

@jerzy कुछ सांसारिक सुबह विस्तार याद किया गया था, जाहिरा तौर पर।
Erutan409

4
@jerzy भले ही उस त्रुटि संदेश के थोड़े अस्पष्ट अस्पष्ट प्रकार से पता चलता है अन्यथा, यह संभवतः वर्तमान मूल्य को शामिल करने के लिए डिज़ाइन किया गया था , न कि आपको यह निर्देश देने के लिए कि किस मूल्य का उपयोग करना है।
10

@jerzy कैसे एक user2ata में इसे बढ़ाने के बारे में जाना जाएगा जब एक ec2 उदाहरण प्रावधान। मूल रूप से बैश स्क्रिप्ट में?
शान

31
  • /etc/nginx/nginx.confलेखन विशेषाधिकारों के साथ खुला
  • असहज या जोड़ना server_names_hash_bucket_size 64;
  • नग्नेक्स पुनः आरंभ करें sudo service nginx restart

यदि त्रुटि अभी भी बनी हुई है:

  • server_names_hash_bucket_size128, 256, 512, और इतने पर (हर बार 2 की शक्ति से बढ़ ) कदमों में वृद्धि । जैसे।server_names_hash_bucket_size 128;
  • जब तक त्रुटि नहीं हो जाती तब तक प्रत्येक बार nginx को पुनरारंभ करें (त्रुटि हमेशा एक ही कोई फर्क नहीं पड़ेगी कि आप पहले से क्या मूल्य निर्धारित करते हैं)

वृद्धिशील दृष्टिकोण का सुझाव देने के लिए धन्यवाद। nginx का संदेश यह कहता रहा 64: S
ybl

6

यह शायद थोड़ा यादृच्छिक लगता है, लेकिन यह खुद की तरह एक nginx newb में मदद कर सकता है। लाइन में छूटने पर
मुझे यह त्रुटि मिली । ;server_name

था:

server_name    www.mydomain.com  
access_log     /var/log/nginx/www.mydomain.com; 

ठीक कर:

server_name    www.mydomain.com;  
access_log     /var/log/nginx/www.mydomain.com; 

संपादन के बाद अंतिम जाँच के रूप में सहेजने / अपलोड करने से पहले nginx config फ़ाइलों में सभी निर्देश ;
I को अक्सर ;मेरी फ़ाइल में हाइलाइट करना चाहिए ।


3

इस तरह मैंने हल किया:

cd /etc/nginx/

sudo nano nginx.conf
  • - एकीकरण या सर्वर_नम_शश_बकेट_साइज ६४ जोड़ें -
  • - सर्वर सर्वर_नाम_शश_बकेट_साइज "164" -
cd /etc/nginx/sites-available/

sudo nginx -t

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