مانیتورینگ nginx با zabbix
در پست قبل در مورد Nginx صحبت کردیم و همینطور سناریویی رو هم مطرح کردیم تا Feature های مختلف ان را یاد بگیریم .در این پست به سراغ مانیتورینگ Nginx با zabbix خواهیم رفت .
در ابتدا شروع به نصب Nginx میکنیم و برای انکه server block درست کنیم تا بتوانیم چندین website در یک webserver داشته باشیم و سپس شروع به نصب zabbix agent بر روی ان میکنیم و آن را در زبیکس به عنوان Host اضافه میکنیم .
نصب Nginx بر روی Ubuntu 20.04
Nginx در Repository های Default در Linux وجود دارد , این امکان فراهم است تا ان را با استفاده از این Repository ها با apt نصب کنیم .
sudo apt update
sudo apt install nginx
بعد از اتمام پروسه ی نصب Nginx ,
Ununtu 20.04 سرویس Nginx را استارت میکند .web server باید در وضعیت Running باشد که میتوانیم با دستور زیر مطمئن شویم که سرویس در وضعیت Running است :
systemctl status nginx
برای Test کردن , اگر در Browser ادرس http://your_server_ip را وارد کنیم باید صفحه ی Default ان Nginx را ببینیم :

اگر صفحه ی بالا را ببینیم یعنی web server ما running است و میتوانیم ان را manage کنیم .
Managing the Nginx Process
برای Stop کردن web server:
sudo systemctl stop nginx
برای Start کردن Web Server زمانی که ان Stop است :
sudo systemctl start nginx
برای Stop و سپس Start کردن ان :
sudo systemctl restart nginx
اگر در Configuration file مربوط به Nginx تغییرات ایجاد کرده باشیم , Nginx میتواند Reload شود بدون انکه Dropp شدن connection ها :
sudo systemctl reload nginx
حال که با دستورات ابتدایی management مربوط به nginx اشنا شدیم , به سراغ این می رویم که بر روی یک host بیش از یک domain را داشته باشیم و config کنیم .
ایجاد Server Blocks :
در واقع Server Block همانند Virtual Host در Apache است و از ان استفاده میکنیم تا بر روی یک Host بیش از یک Domain داشته باشیم .در این مثال ما از دامین sananetco.com استفاده میکنیم و شما ان را با دامین مورد نظر خود جایگزین کنید .
در Nginx در Ununtu 20.04 یک Server block به صورت Default فعال است و وجود دارد که اگر بخواهیم چندین Website بر روی یک host داشته باشیم برای ما ناخوشایند خواهد بود .
حال شروع به ساختن directory structure در /var/www/ برای سایت sananetco.com میکنیم .در واقع مسیر /var/www/html را برای زمانی که درخواست های client با هیچ یک از سایت های دیگر match نبود به حال خود رها میکنیم .
برای ایجاد directory مربوط به sananetco.com :
sudo mkdir -p /var/www/sananetco.com/html
حال برای ایجاد ownership :
sudo chown -R $USER:$USER /var/www/sananetco.com/html
برای اعمال دسترسی به owner جهت Read, Write,Execute :
sudo chmod -R 755 /var/www/sananetco.com
حال برای ایجاد یک نمونه index.html وارد مسیر var/www/sananetco.com/html/ می شویم و index.html را با nano باز میکنیم :
nano /var/www/sananetco.com/html/index.html
و حال HTML نمونه زیر را در ان Paste میکنیم :
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>
برای انکه Nginx بتواند از این محتوا استفاده کند و ان را ارائه دهد , ایجاد یک server block ضروری است .به جای انکه configuration file directory حالت default را تغییر دهیم , در مسیر زیر پرونده جدید را ایجاد میکنیم :
sudo nano /etc/nginx/sites-available/sananetco.com
حال configuration های زیر را در ان paste میکنیم :
server {
listen 80;
listen [::]:80;
root /var/www/sananetco.com/html;
index index.html index.htm index.nginx-debian.html;
server_name sananetco.com www.sananetco.com;
location / {
try_files $uri $uri/ =404;
}
}
سپس برای فعال کردن این فایل با ایجاد یک لینک از ان به دایرکتوری sites-enabled ,سرویس nginx در زمان start شدن ان را میخواند :
sudo ln -s /etc/nginx/sites-available/sananetco.com /etc/nginx/sites-enabled/
حال 2 server block وجود دارد تا با توجه به اسم و همچنین پورت به درخواست های کاربران پاسخ دهد :
- sananetco.com که به درخواست های sananetco.com و www.sananetco.com پاسخ خواهد داد
- default که به تمامی درخواست های روی پورت 80 که با server block های دیگر match نیست پاسخ خواهد داد .
حال برای انکه مطمئن باشیم که هیج syntax error ای در nging file وجود ندارد :
sudo nginx -t
و در نهایت سرویس nginx را restart میکنیم تا تغییرات اعمال شود :
sudo systemctl restart nginx
حال اگر در Browserخود ادرس https://sananetco.com را وارد کنیم صفحه ی زیر را خواهیم دید :


شاهدی گرفته ام برای بودن در روز موعود