nginx: [emerg] সার্ভার_নাম_হ্যাশ তৈরি করতে পারেনি, আপনার সার্ভার_নেম_হ্যাশ_বকেট_সাইজ বাড়ানো উচিত


101

আমি একটি নতুন সার্ভার সেট আপ করার প্রক্রিয়াধীন। আমার পছন্দের http- সার্ভারটি এনজিআইএনএক্স। আমি 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

অথবা আপনি নিজের সার্ভার_নামের ভিতরে কেবল আপনার ডোমেন নামটি ব্যবহার করতে পারেন।
সরান

উত্তর:


206

দীর্ঘতর ডোমেন নামের কারণে এটি সম্ভবত ঘটছে। আপনি যোগ করে এটি ঠিক করতে পারেন

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
মজার বিষয় হল, আমার নির্দিষ্ট এনগিনেক্স ত্রুটি বার্তাটি আমাকে 32 ব্যবহারের জন্য নির্দেশ দিচ্ছিল যদিও আমাকে 64 ব্যবহার করতে হয়েছিল
রায়ান

44
@ রায়ান হিসাবে একই - এনজিআইএনএক্স আমাকে use৪ ব্যবহার করতে বলছিল, তবে এটি কাজ করতে আমার 128 দরকার ছিল।
জর্জি

@ জেরজি কিছু জাগতিক বিশদ বিশদটি অনুপস্থিত ছিল apparent
এরুতান 409

4
@ জেরজি যদিও ত্রুটি বার্তার ধরণের কিছুটা অস্পষ্ট শব্দটি অন্যথায় প্রস্তাব দেয়, সম্ভবত এটি বর্তমান মান অন্তর্ভুক্ত করার জন্য ডিজাইন করা হয়েছিল , কোন মানটি ব্যবহার করতে হবে তা নির্দেশ দেওয়ার জন্য নয়।
নভেম্বর 1919

@ জিরজি যখন কোনও ইসি 2 উদাহরণ দেওয়ার সময় ব্যবহারের ক্ষেত্রে এটি কীভাবে বাড়বে। এত মূলত বাশ স্ক্রিপ্টে?
শান

29
  • /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 পুনরায় চালু করুন (আপনি ইতিমধ্যে যে মান নির্ধারণ করেন তা ত্রুটি সর্বদা সমান হবে)

বর্ধিত পদ্ধতির পরামর্শ দেওয়ার জন্য ধন্যবাদ। 64
এনজিনেক্সের

5

এটি সম্ভবত কিছুটা এলোমেলো শোনায় তবে এটি আমার মতো একটি এনগিনেক্স নবীনকে সহায়তা করতে পারে।
আমি এই ত্রুটি যখন আমি একটি বন্ধ করেছিলাম সেখান থেকে পেয়েছিলাম ;উপর 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; 

সম্পাদনার পরে চূড়ান্ত চেক হিসাবে সংরক্ষণ / আপলোড করার আগে এনজিএনএক্স কনফিগার ফাইলগুলিতে সমস্ত নির্দেশাবলীর ;
প্রায়শই ;আমার ফাইলে হাইলাইট করা উচিত ।


2

আমি এইভাবে সমাধান করেছি:

cd /etc/nginx/

sudo nano nginx.conf
  • - ইউনিট কমেন্ট বা সার্ভার_নাম_হ্যাশ_বাকেট_সাইজ 64 যোগ করুন -
  • - সার্ভারের_নামগুলি_হ্যাশ_বকেট_ সাইজ "164" -
cd /etc/nginx/sites-available/

sudo nginx -t

  • সব ঠিক আছে যদি
sudo service nginx restart
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.