সাবডোমেনের জন্য এনগিনেক্স বিবাদী সার্ভারের নাম


15

আমার কাছে বর্তমানে foo.domain.com এর জন্য এনগিনেক্সে একটি ভোস্ট চলছে এবং সবকিছু দুর্দান্ত কাজ করে।

আমি একটি নতুন সাব-ডোমেনের জন্য একটি নতুন ফাইল তৈরি করেছি যা আমি বার.ডোমেন ডট কম নামে যুক্ত করতে চাই। আমি উভয়ের জন্য একই সেটিংস ব্যবহার করি।

আমি যখন Nginx পুনরায় চালু করি তখন আমি পাই

Restarting nginx: nginx: [warn] conflicting server name "" on 0.0.0.0:443, ignored nginx.

আমি যখন بار.ডোমেন.কম এ যাব তখন আমি যা দেখতে পাচ্ছি তা দেখতে পাচ্ছি, কিন্তু যখন আমি foo.domain.com এ যাই তখন আমি পৃষ্ঠাটি দেখতে পাই যা বার.ডোমেন ডট কমের সাথে লিঙ্ক করে।

foo বিন্যাস

upstream php-handler {
    server unix:/var/run/php5-fpm.sock;
}

server {
        listen 80;
        server_name foo.domain.com;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443;

        ssl on;
        ssl_certificate      [path_foo]/cacert.pem;
        ssl_certificate_key  [path_foo]/privkey.pem;

        root [path]/foo;

        ...
}

বার

server {
        listen 80;
        server_name bar.domain.com;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443;

        ssl on;
        ssl_certificate      [path_bar]/cacert.pem;
        ssl_certificate_key  [path_bar]/privkey.pem;

        root [path]/bar;
}

কোথায় আমি ভুল যাচ্ছি?


আপনাকে server_nameএসএসএল (443) কনফিগারেশনেও নির্দিষ্ট করতে হবে ।
জাকজান

listen 443প্রতিটি সার্ভার অ্যাড করার পরে server_name [foo/bar].domain.com?
রকজেক 28

উত্তর:


9

আপনার https ব্লকের মতো দেখতে দেখতে সার্ভারের নামও নির্দিষ্ট করা দরকার

server {
    listen 443;
    server_name bar.domain.com;
    ssl on;
    ssl_certificate      [path_bar]/cacert.pem;
    ssl_certificate_key  [path_bar]/privkey.pem;

    root [path]/bar;
}

3

এতে আপনার /etc/nginx/sites-available/<site-name>লিঙ্কযুক্ত অতিরিক্ত ফাইলও থাকতে পারে /etc/nginx/sites-enabled/<site-name>

ঐ ফাইল সেটিংস সাথে বিরোধ করতে পারে /etc/nginx/sites-available/defaultফাইল


3

আমার যখন দুর্ঘটনাক্রমে সদৃশ সার্ভারের নামটি ছিল তখন আমারও একই সমস্যা হয়েছিল:

server_name myserver.example.com myserver.example.com;

এটিকে পরিবর্তন করে স্থির করে:

server_name myserver.example.com;

আমার ক্ষেত্রে, আমি ঘটনাক্রমে একই সাথে দুটি পৃথক vhosts ছিল server_name; আমি বছরের পর বছর ধরে এই কনফিগারেশনটি পেয়েছি এবং সেই ত্রুটি বার্তার বিষয়ে খুব বেশি চিন্তিত হইনি। এটা পরিনত হয় যে আমি ভুল করে একটি vhost দেখুন যে শুধু একটি টেমপ্লেট 😮 হতে অনুমিত ছিল শুরু হয়েছিল
Gwyneth Llewelyn

2

/etc/nginx/conf.dনকলের জন্য প্রতিটি ফাইলও পরীক্ষা করে দেখুন ।

আমার ক্ষেত্রে, nginx -tপরীক্ষায় উত্তীর্ণ হয়েছে - এনজিএনএক্স শুরু করার চেষ্টা করার সময় আমি সেই ত্রুটি বার্তাটি পেয়েছি।

আমার /etc/nginx/sites-enabledফাইলগুলি ডোমেন (সার্ভারের নাম) সদৃশ থেকে মুক্ত ছিল এবং এর কেবলমাত্র 1 টি রেফারেন্স ছিল server_default(এবং কোনও localhostনকল নেই)

পরিবর্তে, সেখানে দুটি ফাইল ছিল conf.dযা উভয়ই একটি নির্দিষ্ট ডোমেনকে রেফারেন্স করেছিল (যেমন 2 টি ফাইলের একটি লাইন ছিল: servername mydomain.comযেখানে ডোমেনের একটির নাম 2 টি ফাইলে তালিকাভুক্ত ছিল)।

আমার সমাধান: সুতরাং নিশ্চিত হয়ে নিন যে সমস্ত ফাইল conf.dকেবলমাত্র কোনও নির্দিষ্ট servername(ডোমেন নাম) মান একবারে উল্লেখ করেছে most


( দুর্ভাগ্যক্রমে উপরের সমস্যাটি সমাধানের পরে, আমি এখন পেয়েছি:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) আমি এনজিনেক্স পুনরায় আরম্ভ করার চেষ্টা করার সময় ত্রুটি বার্তা)

আপডেট : এফওয়াইআই, আবার: ... Address already in useউপরের ত্রুটি বার্তা:
আমাকে যা করতে হয়েছিল sudo fuser -k 80/tcpতা তখন service nginx restartএকটি কবজির মতো কাজ করা হয়েছিল !
আমি উত্তরটি এখানে পেয়েছি: https://easyengine.io/tutorials/nginx/troubleshooting/emerg-bind-failed-98-address-already-in-use/

আপডেট 2 :
এটি প্রস্তাব করা হয়েছে যে অন্য প্রক্রিয়াটি 80 বন্দরটি ব্যবহার করছিল, (এটি হত্যার ফলে এটি কাজ করেছিল, এবং এও বোঝায় যে বি / সি এনজিনেক্স তখন চলছিল না )।
https://community.letsencrypt.org/t/nginx-emerg-bind-to-80-failed-98-address-already-in-use/52914/4

তারা আরও উল্লেখ করেছে যে প্রক্রিয়াটি খুন করার আগে, এটি দেখার পরে বিষয়টি কী কারণে ঘটেছে তার অন্তর্দৃষ্টি দিতে পারে।
সুতরাং, সম্ভবত এটি ব্যবহার করা আরও ভাল: sudo fuser -k 80/tcp(--k বিকল্প ব্যতীত), grepসেই প্রক্রিয়া সংখ্যার জন্য একটি অনুসরণ করে ।
systemctl list-unit-filesআউটপুট, বিরোধী প্রক্রিয়া অন্তর্দৃষ্টি প্রদান করতে পারে

বা:
fuser -kivn tcp 80, যেখানে:
-vপ্রক্রিয়া ID ছাড়াও প্রক্রিয়া নাম ছাপে
-iহত্যা আগেই প্রম্পট তোলে
https://community.letsencrypt.org/t/nginx-emerg-bind-to-80-failed-98-address-already- ইন-ব্যবহার / 52914/5


0

আমার ক্ষেত্রে, আমি কোনও সদৃশ খুঁজে পাইনি। যাইহোক, আমার ডিফল্ট কোডফ ছিল যেখানে আমি খোলার সার্ভার ব্লক এবং বন্ধ বন্ধনী ছাড়া সমস্ত কনফিগারেশনের মন্তব্য করেছি ... এবং এটি বিরোধী ত্রুটির কারণ হয়েছিল।

মূলত, কোনও সার্ভার_নামের নির্দেশ ব্যতিরেকে এটি সার্ভার ব্লকের জন্য একটি অ্যাকাউন্টবিহীন ছিল যা ডুপ্লিকেট নয়, সমস্যার কারণ ঘটেছে।

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