এনজিএনএক্সে ওয়াইল্ডকার্ড শংসাপত্র ব্যবহার করে একাধিক এসএসএল vhosts


14

আমি একই ডোমেনের নামটি ভাগ করে নেওয়ার জন্য দুটি হোস্টনাম রেখেছি যা আমি এইচটিটিপি-র মাধ্যমে পরিবেশন করতে চাই। আমি একটি ওয়াইল্ডকার্ড-এসএসএল শংসাপত্র পেয়েছি এবং দুটি ভোস্ট কনফিগার তৈরি করেছি:

হোস্ট এ

listen      127.0.0.1:443 ssl;
server_name     a.example.com;
root        /data/httpd/a.example.com;
ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;

হোস্ট বি

listen      127.0.0.1:443 ssl;
server_name     b.example.com;
root        /data/httpd/b.example.com;
ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;

যাইহোক, আমি উভয় হোস্টনামের জন্য একই ভোস্টটি সরবরাহ করি।

উত্তর:


17

আপনার এসএসএল শ্রবণ / কনফিগারেশন অংশ থেকে vhosts বিভক্ত করা প্রয়োজন:

শোনার অংশ:

server {
  listen              127.0.0.1:443 default_server ssl;
  server_name         _;
  ssl_certificate     /etc/ssl/wildcard.cer;
  ssl_certificate_key /etc/ssl/wildcard.key;
}

এবং এখন vhosts:

server {
  listen      127.0.0.1:443;
  server_name a.example.com;
  root        /data/httpd/a.example.com;
}

server {
  listen      127.0.0.1:443;
  server_name b.example.com;
  root        /data/httpd/b.example.com;
}

এটি কাজ করবে না। একটি vhost প্রয়োজন ssl_certificateএবং ssl_certificate_keyএটি ভিতরে serverবা httpঅবস্থান কনফিগার করা উচিত । আপনার উদাহরণস্বরূপ, আপনি এটি প্রথম serverঅবস্থানের মধ্যেই ঘোষণা করেছেন , তবে অন্য দুটি ভোস্টের জন্য এটি ঘোষণা করেন নি।
পোঠি কলিমুথু

2
এটি কনফিগার করার জন্য যথেষ্ট ssl_certificate, ssl_certificate_keyএবং sslকেবলমাত্র ডিফল্ট_সেভারে। বিটিডাব্লু, এই কনফিগারটি আসলে কাজ করে।
টেফটিন

দুর্ভাগ্যক্রমে এটি কাজ করে না: এনজিনেক্স উভয় হোস্টে একই ভোস্ট সামগ্রী সরবরাহ করে।
ভিনসেন্ট.ও

2
স্পষ্টতই আপনাকে এই পরিবর্তনগুলি করার সময় পুনরায় লোড করার পরিবর্তে এনজিনেক্স পুনরায় চালু করতে হবে । অনেক ধন্যবাদ, আপনার উত্তর একটি কবজ মত কাজ করে :)
vincent.io

1
এই জন্য ধন্যবাদ, আমার প্রয়োজন sslউপর listenএকটি 1.4.x nginx সঙ্গে এটির জন্য কাজ করতে নির্দেশ। listenVhosts এ আমার নির্দেশাবলীও আক্ষরিকভাবে একই হতে হয়েছিল (যৌক্তিক সমতুল্যতা যথেষ্ট ছিল না)।
ডেভ এস

13

এটি ম্যানুয়ালটিতে আসলে ব্যাখ্যা করা হয়েছে: http://nginx.org/en/docs/http/configuring_https_servers.html#certificate_with_several_names

ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;
server {
  listen      443 ssl;
  server_name a.example.com;
  root        /data/httpd/a.example.com;
}
server {
  listen      443 ssl;
  server_name b.example.com;
  root        /data/httpd/b.example.com;
}

এখন, আপনার যদি অনেকগুলি সাইট থাকে তবে আমি কেবলমাত্র সার্ভারের একটি ফোল্ডারে with} অংশটি একক ফাইলে উপরের মতো একটি ফোল্ডারে সংরক্ষণ করার পরামর্শ দিচ্ছি এবং এর মধ্যে সমস্তগুলি লোড করার জন্য মূল ফাইলটিতে একটি নির্দেশিকা অন্তর্ভুক্ত রয়েছে:

ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;
include /etc/nginx/conf.d/subfolder/*;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.