Tএই নিবন্ধটি আপনাকে Nginx-এ SSL সার্টিফিকেট ইনস্টল করার ধাপগুলি এবং HTTP:// থেকে HTTPS:// তে স্বয়ংক্রিয় রিডাইরেক্ট সেট আপ করার জন্য নির্দেশনা দেবে।
1. সার্ভারে আপনার ওয়েবসাইট হোস্ট করা সনদপত্রগুলি আপলোড করুন
CSR কোড তৈরি ও SSL সক্রিয়করণের ধাপগুলি সম্পন্ন করার পরে, আপনি ইমেলের মাধ্যমে Sectigo (আগে যা Comodo নামে পরিচিত ছিল) সার্টিফিকেট সহ একটি জিপ ফাইল পাবেন। বিকল্প হিসেবে, আপনি এগুলো আপনার NiceNic অ্যাকাউন্ট প্যানেল থেকে ডাউনলোড করতে পারেন।
দ্রষ্টব্য: যদি আপনি সার্টিফিকেট সক্রিয় করার সময় NGINX সার্ভার নির্বাচন করেন, তাহলে আপনি একটি জিপ ফাইল পাবেন যার মধ্যে একটি '.crt' এক্সটেনশনের সার্টিফিকেট ফাইল এবং একটি '.ca-bundle' এক্সটেনশনের সার্টিফিকেট অথরিটি (CA) বান্ডিল ফাইল থাকবে।
আপনি যেভাবে চান সার্ভারে দুটি ফাইলই আপলোড করুন। উদাহরণস্বরূপ, একটি FTP ক্লায়েন্ট ব্যবহার করে।
আপনি প্রতিটি সার্টিফিকেটের জন্য বান্ডিল ফাইলটি এখানকার নির্দেশনাগুলি অনুসরণ করে ডাউনলোডও করতে পারেন।
2. সমস্ত সার্টিফিকেট একত্রে একটি ফাইলে মিশ্রিত করুন
আপনার সকল সার্টিফিকেট (?????_??????.crt এবং ?????_??????.ca-bundle) একটি '.crt' ফাইলে একত্রিত করতে হবে।
আপনার ডোমেইনের সার্টিফিকেটটি ফাইলের প্রথমে থাকা উচিত, এরপর সার্টিফিকেটের চেইন বা CA বান্ডিল অনুসরণ করা উচিত।
সার্টিফিকেট ফাইলগুলি আপলোড করা ডিরেক্টরিতে যান। ফাইলগুলি একত্রিত করতে নিচের কমান্ডটি চালান:
$ cat ?????_??????.crt ?????_??????.ca-bundle >> ?????_??????_chain.crt
দ্রষ্টব্য যদি সার্টিফিকেট ফাইলগুলি আপনার NiceNic অ্যাকাউন্ট থেকে ডাউনলোড করা হয়ে থাকে, তবে সর্বোত্তম কমান্ড হবে:
$ cat ?????_??????.crt > ?????_??????_chain.crt ; echo >> ?????_??????_chain.crt ; cat ?????_??????.ca-bundle >> ?????_??????_chain.crt
3. একটি পৃথক Nginx সার্ভার ব্লক তৈরি করা অথবা বিদ্যমান কনফিগারেশন ফাইল বদলানো
Nginx-এ SSL সার্টিফিকেট ইন্সটল করতে, আপনাকে সার্ভারকে কোন ফাইল ব্যবহার করতে হবে তা দেখাতে হবে, সেটা করতে পারেন a) নতুন একটি কনফিগারেশন ফাইল তৈরি করে, অথবা b) বিদ্যমান ফাইলটি সম্পাদনা করে।
a) ওয়েবসাইটের জন্য নতুন একটি কনফিগারেশন ফাইল যোগ করে আপনি নিশ্চিত হতে পারবেন যে আলাদা কনফিগারেশন ফাইলে কোনও সমস্যা নেই। এছাড়াও, নতুন কনফিগারেশনের কোনও সমস্যা হলে ইনস্টলেশন ট্রাবলশুটিং করা সহজ হবে।
আমরা এই ফোল্ডারে একটি নতুন কনফিগারেশন ফাইল তৈরি করার পরামর্শ দিচ্ছি:
/etc/nginx/conf.d
এটি নিম্নলিখিত কমান্ড দিয়ে করা যাবে:
sudo nano /etc/nginx/conf.d/Your_??????*-ssl.conf
যেখানে Your_??????*-ssl.conf নতুন তৈরি ফাইলের নাম।
এরপর নিচের 443 পোর্টের সার্ভার ব্লকগুলির একটি কপি করে পেস্ট করুন এবং ডিরেক্টরি সম্পাদনা করুন। নিশ্চিত করুন যে সার্ভার নাম এবং ওয়েবরুটের পাথ পরস্পরের সাথে (80 পোর্ট এবং 443 পোর্টের সার্ভার ব্লকে) মিলছে। যদি অন্যান্য গুরুত্বপূর্ণ মান থাকে, তাহলে সেগুলোকেও নতুন সার্ভার ব্লকে স্থানান্তর করুন।
b) ওয়েব-সার্ভারের ডিফল্ট কনফিগারেশন ফাইল (যার নাম nginx.conf) সম্পাদনা করুন। এটি নিচের কোনো একটি ফোল্ডারে থাকা উচিত:
/usr/local/nginx/conf
/etc/nginx
/usr/local/etc/nginx
আপনি নিচের কমান্ডটি ব্যবহার করেও এটি খুঁজে পেতে পারেন:
sudo find / -type f -iname "nginx.conf"
একবার এটি খুঁজে পেলে, ফাইলটি খুলুন:
sudo nano nginx.conf
এরপর নিচের 443 পোর্টের সার্ভার ব্লকগুলির একটি কপি করে দিন এবং 80 পোর্টের সার্ভার ব্লকের সাথে মেলানোর জন্য ডিরেক্টরি এবং অন্যান্য গুরুত্বপূর্ণ মানগুলো সম্পাদনা করুন। বিকল্পভাবে, 80 পোর্টের সার্ভার ব্লকটি কপি করে নিচে পেস্ট করুন, তারপর পোর্ট আপডেট করুন এবং প্রয়োজনীয় SSL সম্পর্কিত নির্দেশাবলী যোগ করুন।
সার্ভার ব্লক বাছাই করুন:
নিচে আপনার Nginx ভার্সনের জন্য সার্ভার ব্লক দেখতে পাবেন।
দ্রষ্টব্য: আপনার Nginx ভার্সন চেক করতে এই কমান্ডটি চালান:
sudo nginx -v

দ্রষ্টব্য: সার্ভার ব্লকে ফাইল নামের মান যেমন ?????_??????_chain.crt আপনার বিশদ অনুযায়ী পরিবর্তন করুন, এবং তাদের পাথগুলি /path/to/ ব্যবহার করে সংশোধন করুন।
Nginx ভার্সন 1.14 এবং তার নিচের জন্য সার্ভার ব্লক:
server {
listen 443;
ssl on;
ssl_certificate /path/to/certificate/?????_??????_chain.crt;
ssl_certificate_key /path/to/?????_private.key;
root /path/to/webroot;
server_name ?????_??????.com;
}
দ্রষ্টব্য: আপনি প্রয়োজন হলে একাধিক হোস্টনাম এমন কনফিগারেশনে উল্লেখ করতে পারেন, যেমন:
server {
listen 443;
ssl on;
ssl_certificate /path/to/certificate/?????_??????_chain.crt;
ssl_certificate_key /path/to/?????_private.key;
root /path/to/webroot;
server_name ?????_??????.com www.?????_??????.your;
}
Nginx ভার্সন 1.15 এবং এর উপরের জন্য সার্ভার ব্লক:
server {
listen 443 ssl;
ssl_certificate /path/to/certificate/?????_??????_chain.crt;
ssl_certificate_key /path/to/?????_private.key;
root /path/to/webroot;
server_name ?????_??????.com;
}
ssl_certificate নির্দেশনা আপনার আগেই তৈরি করা সম্মিলিত সার্টিফিকেট ফাইলে নির্দেশিত থাকবে।
ssl_certificate_key নির্দেশনা কি ছিল যা CSR কোডের সাথে তৈরি করা হয়েছিল তা নির্দেশ করবে।
Nginx-এ প্রাইভেট কী খুঁজে পাওয়ার জন্য কয়েকটি টিপস এখানে দেওয়া হল।
গুরুত্বপূর্ণ: মাল্টি-ডোমেইন অথবা ওয়াইল্ডকার্ড সার্টিফিকেটের জন্য, প্রত্যেক সার্টিফিকেট অন্তর্ভুক্ত ডোমেইন/সাবডোমেইনের জন্য আলাদা সার্ভার ব্লক যোগ করতে হবে। নিশ্চিত হোন যে সার্ভার ব্লকে ডোমেইন/সাবডোমেইন এবং একই সার্টিফিকেট ফাইলপথ উল্লেখ করেছেন, উপরোক্ত মত।
একবার উপযুক্ত সার্ভার ব্লক ফাইলে যোগ করার পরে, সম্পাদনাগুলি সংরক্ষণ করুন। এরপর, নিচের ধাপগুলি অনুসরণ করে আপনি পরিবর্তনগুলি দুবার পরীক্ষা করতে পারেন।
কনফিগারেশন ফাইলের সিনট্যাক্স ঠিক আছে কিনা যাচাই করতে এই কমান্ড চালান:
sudo nginx -t

যদি কোনও ত্রুটি পান, তাহলে নিশ্চিত হয়ে দেখুন আপনি নির্দেশিকা সঠিকভাবে অনুসরণ করেছেন। আপনার কোন প্রশ্ন থাকলে আমাদের সমর্থন দলের সাথে যোগাযোগ করুন।
পরামর্শ: ত্রুটি লগগুলি দেখতে, নিচের কমান্ডটি চালান:
sudo nginx -T | grep 'err????_log'
যদি কোন ফাইল না থাকে, ফাইলগুলি কমেন্ট করা থাকে অথবা কোন ত্রুটি লগ ফাইল নির্দিষ্ট না থাকে, তবে ডিফল্ট সিস্টেম লগ চেক করুন:
tail /var/log/nginx/err????.log -n 20
যদি সার্ভার সফলভাবে টেস্ট দেখায়, তাহলে পরিবর্তনগুলি প্রয়োগ করতে এই কমান্ড দিয়ে Nginx রিস্টার্ট করুন:
sudo nginx -s reload
এখন আপনার SSL সার্টিফিকেট ইনস্টল হয়েছে। আপনি এখানে ইনস্টলেশন পরীক্ষা করতে পারেন।
গুরুত্বপূর্ণ নোট:
কমান্ড লাইন দিয়ে মিলিত করা SSL ফাইল ইনস্টল করার পর কখনও কখনও আপনি 'Nginx/Apache err????: 0906D066:PEM routines:PEM_read_bio:bad end line' ত্রুটি বার্তা পেতে পারেন, এই ক্ষেত্রে সমাধান নির্দেশিকা থেকে পাওয়া যাবে।
এই ধাপে আরেকটি সাধারণ সমস্যা হচ্ছে 'Nginx SSL: err????:0B080074:x509 certificate routines: X509_check_private_key:key values mismatch' ত্রুটি বার্তা, এর বিস্তারিত এবং সম্ভাব্য সমাধানগুলি এই নিবন্ধে পাওয়া যাবে।
4. HTTPS রিডাইরেক্ট কনফিগার করা
আমরা পরামর্শ দিচ্ছি যে আপনি HTTP থেকে HTTPS রিডাইরেক্ট ইনস্টল করুন। এর ফলে, আপনার ওয়েবসাইটের ভিজিটররা শুধুমাত্র সুরক্ষিত সংস্করণটি দেখতে পারবে।
এটি করতে, আপনাকে 80 পোর্টের সার্ভার ব্লকের কনফিগারেশন ফাইলে একটি লাইন যোগ করতে হবে।
টিপস:
আপনি নিচের কোন একটি কমান্ড ব্যবহার করে বর্তমানে সক্রিয় কনফিগারেশন ফাইলগুলি দেখতে পারেন:
sudo nginx -T | grep -iw "configuration file"
sudo nginx -T | grep -iw "include"
ডিফল্ট কনফিগ ফাইল পাথগুলি হল:
RHEL-ভিত্তিক লিনাক্স OS-এ: /etc/nginx/conf.d/default.conf
ডেবিয়ান ভিত্তিক লিনাক্স OS-এ: /etc/nginx/sites-enabled/default
আপনি ফাইলটি খুলে দেখতে পারেন কোনটি প্রয়োজনীয় সার্ভার ব্লক ধারণ করছে। এ জন্য চালান:
sudo nano name_of_the_file
একবার 80 পোর্টের (ডিফল্ট HTTP পোর্ট) সার্ভার ব্লক ধারণকারী ফাইলটি খুঁজে পেলেন, নিচের লাইনটি যোগ করুন:
return 301 https://$server_name$request_uri;
দ্রষ্টব্য: উপরোক্ত রিডাইরেক্ট নিয়মটি সার্ভার ব্লকের সর্বশেষ লাইনে যোগ করতে হবে।