Nginx কনফিগারেশন
Nginx কনফিগারেশন : একটি বিস্তারিত আলোচনা
ভূমিকা
Nginx (Engine X) একটি জনপ্রিয় ওয়েব সার্ভার যা তার উচ্চ কার্যকারিতা, স্থিতিশীলতা, এবং কম রিসোর্স ব্যবহারের জন্য পরিচিত। এটি ওয়েব সার্ভার হিসেবে ব্যবহারের পাশাপাশি রিভার্স প্রক্সি, লোড ব্যালেন্সার, HTTP ক্যাশে এবং মেইল প্রক্সি হিসেবেও কাজ করতে পারে। Nginx এর কনফিগারেশন ফাইলগুলি অত্যন্ত শক্তিশালী এবং নমনীয়, যা ব্যবহারকারীকে সার্ভারের আচরণ নিজের প্রয়োজন অনুযায়ী পরিবর্তন করার সুযোগ দেয়। এই নিবন্ধে, Nginx কনফিগারেশনের বিভিন্ন দিক নিয়ে বিস্তারিত আলোচনা করা হবে।
Nginx কনফিগারেশন ফাইলের গঠন
Nginx এর কনফিগারেশন ফাইল সাধারণত `/etc/nginx/` ডিরেক্টরিতে থাকে। প্রধান কনফিগারেশন ফাইলটি হল `nginx.conf`। এই ফাইলে সার্ভার এবং অ্যাপ্লিকেশনগুলির জন্য বিভিন্ন কনফিগারেশন ব্লক সংজ্ঞায়িত করা হয়। Nginx কনফিগারেশন ফাইলের মূল গঠন নিম্নরূপ:
- মেইন ব্লক (main block): এই ব্লকে গ্লোবাল সেটিংস যেমন – worker processes, error log, এবং running user ইত্যাদি কনফিগার করা হয়।
- ইভেন্ট ব্লক (events block): নেটওয়ার্ক সংযোগ এবং worker process এর আচরণ নিয়ন্ত্রণ করে।
- HTTP ব্লক (http block): HTTP সার্ভারের জন্য কনফিগারেশন এখানে করা হয়। এর মধ্যে সার্ভার ব্লক, লোকেশন ব্লক, এবং অন্যান্য ডিরেক্টিভ অন্তর্ভুক্ত থাকে।
- সার্ভার ব্লক (server block): প্রতিটি সার্ভার বা ওয়েবসাইটের জন্য আলাদা সার্ভার ব্লক তৈরি করা হয়। এখানে ডোমেইন নাম, পোর্ট নম্বর, এবং অন্যান্য সার্ভার-নির্দিষ্ট সেটিংস কনফিগার করা হয়।
- লোকেশন ব্লক (location block): সার্ভারের মধ্যে নির্দিষ্ট URL বা পাথ-এর জন্য কনফিগারেশন নির্ধারণ করে।
মেইন ব্লক কনফিগারেশন
মেইন ব্লকে নিম্নলিখিত ডিরেক্টিভগুলি ব্যবহার করা হয়:
- user: Nginx worker processes কোন ইউজার হিসেবে চলবে তা নির্দিষ্ট করে।
- worker_processes: কতগুলি worker process তৈরি হবে তা নির্ধারণ করে। সাধারণত, CPU কোরের সংখ্যার সমান worker process ব্যবহার করা হয়।
- error_log: এরর লগ ফাইলের পাথ এবং ফরম্যাট নির্দিষ্ট করে।
- pid: Nginx master process-এর PID ফাইলের পাথ নির্দিষ্ট করে।
- events: ইভেন্ট ব্লক শুরু করার জন্য ডিরেক্টিভ।
উদাহরণ:
```nginx user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;
events {
worker_connections 1024;
} ```
HTTP ব্লক কনফিগারেশন
HTTP ব্লকে নিম্নলিখিত ডিরেক্টিভগুলি গুরুত্বপূর্ণ:
- include: অন্যান্য কনফিগারেশন ফাইল অন্তর্ভুক্ত করার জন্য ব্যবহৃত হয়।
- types: MIME টাইপ নির্ধারণ করে।
- default_type: ডিফল্ট MIME টাইপ নির্ধারণ করে।
- log_format: লগ ফরম্যাট কাস্টমাইজ করার জন্য ব্যবহৃত হয়।
- sendfile: ফাইল ট্রান্সফারের জন্য sendfile ব্যবহার করা হবে কিনা তা নির্ধারণ করে।
- gzip: Gzip কম্প্রেশন চালু বা বন্ধ করে।
উদাহরণ:
```nginx http {
include /etc/nginx/mime.types; default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on; keepalive_timeout 65;
gzip on;
} ```
সার্ভার ব্লক কনফিগারেশন
সার্ভার ব্লকে একটি নির্দিষ্ট ডোমেইন বা ওয়েবসাইটের জন্য কনফিগারেশন করা হয়। গুরুত্বপূর্ণ ডিরেক্টিভগুলি হল:
- listen: সার্ভার কোন পোর্টে শুনবে তা নির্দিষ্ট করে।
- server_name: সার্ভারের ডোমেইন নাম বা IP ঠিকানা নির্দিষ্ট করে।
- root: ওয়েবসাইটের রুট ডিরেক্টরি নির্ধারণ করে।
- index: ডিফল্ট ইন্ডেক্স ফাইল নির্দিষ্ট করে।
- location: URL পাথ-এর উপর ভিত্তি করে কনফিগারেশন নির্ধারণ করে।
উদাহরণ:
```nginx server {
listen 80; server_name example.com;
root /var/www/example.com; index index.html index.htm;
location / { try_files $uri $uri/ =404; }
} ```
লোকেশন ব্লক কনফিগারেশন
লোকেশন ব্লকগুলি সার্ভারের মধ্যে নির্দিষ্ট URL বা পাথ-এর জন্য কনফিগারেশন নির্ধারণ করে। বিভিন্ন ধরনের লোকেশন ব্লক ব্যবহার করা যেতে পারে:
- =: exact match
- =~: case-insensitive regular expression match
- ~: case-sensitive regular expression match
- ^~: prefix match
গুরুত্বপূর্ণ ডিরেক্টিভগুলি হল:
- try_files: নির্দিষ্ট ফাইল বা ডিরেক্টরি খোঁজার চেষ্টা করে।
- proxy_pass: অন্য সার্ভারে অনুরোধ ফরোয়ার্ড করে।
- alias: URL পাথ-এর জন্য অন্য ডিরেক্টরি নির্দিষ্ট করে।
- rewrite: URL পুনরায় লেখার জন্য ব্যবহৃত হয়।
উদাহরণ:
```nginx location /images/ {
alias /var/www/example.com/images/;
}
location /api/ {
proxy_pass http://localhost:3000/;
} ```
রিভার্স প্রক্সি কনফিগারেশন
Nginx কে রিভার্স প্রক্সি হিসেবে ব্যবহার করা হলে, এটি ক্লায়েন্ট এবং ব্যাকএন্ড সার্ভারের মধ্যে একটি মধ্যবর্তী স্তর হিসেবে কাজ করে। এর ফলে ব্যাকএন্ড সার্ভারের নিরাপত্তা বৃদ্ধি পায় এবং লোড ব্যালেন্সিং করা যায়।
উদাহরণ:
```nginx server {
listen 80; server_name example.com;
location / { proxy_pass http://backend_server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
} ```
এখানে, `backend_server` হল ব্যাকএন্ড সার্ভারের ঠিকানা।
লোড ব্যালেন্সিং কনফিগারেশন
Nginx একাধিক ব্যাকএন্ড সার্ভারের মধ্যে লোড ব্যালেন্সিং করতে পারে, যা অ্যাপ্লিকেশন এর কর্মক্ষমতা এবং নির্ভরযোগ্যতা বৃদ্ধি করে।
উদাহরণ:
```nginx upstream backend {
server backend_server1; server backend_server2;
}
server {
listen 80; server_name example.com;
location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
} ```
এখানে, `backend` আপস্ট্রিম ব্লকটি দুটি ব্যাকএন্ড সার্ভারকে সংজ্ঞায়িত করে। Nginx এই দুটি সার্ভারের মধ্যে স্বয়ংক্রিয়ভাবে লোড ব্যালেন্স করবে।
SSL/TLS কনফিগারেশন
SSL/TLS ব্যবহার করে ওয়েবসাইটের ডেটা এনক্রিপ্ট করা যায়, যা ডেটা সুরক্ষার জন্য অত্যন্ত গুরুত্বপূর্ণ।
উদাহরণ:
```nginx server {
listen 443 ssl; server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key;
root /var/www/example.com; index index.html index.htm;
} ```
এখানে, `ssl_certificate` এবং `ssl_certificate_key` ডিরেক্টিভগুলি SSL সার্টিফিকেট এবং প্রাইভেট কী-এর পাথ নির্দিষ্ট করে।
ক্যাশিং কনফিগারেশন
Nginx HTTP ক্যাশিং সমর্থন করে, যা ওয়েবসাইটের কর্মক্ষমতা বাড়াতে সহায়ক।
উদাহরণ:
```nginx proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
listen 80; server_name example.com;
location / { proxy_pass http://backend_server; proxy_cache my_cache; proxy_cache_valid 200 302 60m; proxy_cache_valid 404 1m; }
} ```
এখানে, `proxy_cache_path` ডিরেক্টিভটি ক্যাশে ডিরেক্টরি, কী জোন, এবং অন্যান্য ক্যাশিং প্যারামিটার নির্দিষ্ট করে।
Nginx কনফিগারেশন পরীক্ষা এবং পুনরায় চালু করা
কনফিগারেশন পরিবর্তন করার পরে, সেটি পরীক্ষা করা এবং পুনরায় চালু করা জরুরি।
- কনফিগারেশন পরীক্ষা: `nginx -t` কমান্ড ব্যবহার করে কনফিগারেশন ফাইল পরীক্ষা করা যায়।
- পুনরায় চালু করা: `sudo systemctl restart nginx` কমান্ড ব্যবহার করে Nginx পুনরায় চালু করা যায়।
অতিরিক্ত রিসোর্স
আরও জানতে
এই নিবন্ধটি Nginx কনফিগারেশনের একটি বিস্তারিত ধারণা প্রদান করে। Nginx এর আরও গভীরে ਜਾਣার জন্য, অফিসিয়াল ডকুমেন্টেশন এবং অন্যান্য রিসোর্সগুলি অনুসরণ করতে পারেন।
এখনই ট্রেডিং শুরু করুন
IQ Option-এ নিবন্ধন করুন (সর্বনিম্ন ডিপোজিট $10) Pocket Option-এ অ্যাকাউন্ট খুলুন (সর্বনিম্ন ডিপোজিট $5)
আমাদের সম্প্রদায়ে যোগ দিন
আমাদের টেলিগ্রাম চ্যানেলে যোগ দিন @strategybin এবং পান: ✓ দৈনিক ট্রেডিং সংকেত ✓ একচেটিয়া কৌশলগত বিশ্লেষণ ✓ বাজারের প্রবণতা সম্পর্কে বিজ্ঞপ্তি ✓ নতুনদের জন্য শিক্ষামূলক উপকরণ