📄 محتوای کامل
Nginx یک وب سرور متنباز با کارایی بالا است که به عنوان یک پروکسی معکوس، متعادلکننده بار و حافظه پنهان HTTP عمل میکند. برای استقرار آن بر روی یک پلتفرم پایدار در سطح سازمانی، میتوانید وب سرور Nginx را روی AlmaLinux ۹ نصب کنید. این وب سرور به راحتی محتوای استاتیک و پویا را مدیریت میکند و با فناوریهایی مانند PHP و سرورهای پایگاه داده به خوبی کار میکند.
در این مقاله، نحوه نصب و پیکربندی Nginx روی AlmaLinux ۹ را خواهید آموخت. مراحل شامل نصب Nginx، مدیریت سرویس سیستم، تنظیم یک بلوک سرور سفارشی (میزبان مجازی) و فعال کردن HTTPS با Let’s Encrypt است.
پیشنیازها
قبل از شروع، شما نیاز دارید:
- یک سرور مجازی با سبیستم عامل آلمالینوکس
نصب Nginx روی AlmaLinux ۹
شما میتوانید Nginx را روی AlmaLinux از منابع پیشفرض بسته DNF نصب کنید. این بسته با استفاده از nginxنام بسته در دسترس است. برای بهروزرسانی مدیر بسته DNF و نصب Nginx، مراحل زیر را دنبال کنید.
- بستههای سیستمی را بهروزرسانی کنید. کنسولکپی
$ sudo dnf update
توضیح کدطراحی شده توسط نگارنوین
- وب سرور Nginx را نصب کنید. کنسولکپی
$ sudo dnf install nginx -y
توضیح کدطراحی شده توسط نگارنوین
- بررسی کنید که Nginx به درستی نصب شده باشد. کنسولکپی
$ sudo nginx -v
توضیح کدطراحی شده توسط نگارنوین
خروجی:
nginx version: nginx/1.20.1 - سرویس Nginx را شروع کنید. کنسولکپی
$ sudo systemctl start nginx
توضیح کدطراحی شده توسط نگارنوین
- فعال کردن ترافیک HTTP در فایروال کنسولکپی
$ sudo firewall-cmd --permanent --add-service=http
توضیح کدطراحی شده توسط نگارنوین
- اگر Firewalld نصب نشده است، دستور زیر را برای نصب آن اجرا کنید و به اتصالات SSH اجازه دهید. کنسولکپی
$ sudo dnf install firewalld -y && sudo firewall-cmd --permanent --add-service=ssh
توضیح کدطراحی شده توسط نگار نوین
- اگر Firewalld در حال اجرا نیست، آن را اجرا کنید. کنسولکپی
$ sudo systemctl start firewalld
توضیح کدطراحی شده توسط نگارنوین
- اگر Firewalld نصب نشده است، دستور زیر را برای نصب آن اجرا کنید و به اتصالات SSH اجازه دهید. کنسولکپی
- اعمال تغییرات در فایروال کنسولکپی
$ sudo firewall-cmd --reload
توضیح کدطراحی شده توسط نگارنوین
- تأیید کنید که Nginx در مرورگر کار میکند.
http://server-ip-address
مدیریت سرویس سیستم Nginx
Nginx به طور پیشفرض یک سرویس systemd نصب میکند. برای مدیریت سرویس و اطمینان از اجرای مداوم آن روی سرور خود، مراحل زیر را دنبال کنید.
- فعال کردن Nginx برای شروع در هنگام بوت شدن سیستم. کنسولکپی
$ sudo systemctl enable nginx
توضیح کدطراحی شده توسط نگارنوین
- اگر Nginx در حال اجرا نیست، آن را اجرا کنید. کنسولکپی
$ sudo systemctl start nginx
توضیح کدطراحی شده توسط نگارنوین
- سرویس سیستم Nginx را بررسی کنید و از فعال بودن آن اطمینان حاصل کنید. کنسولکپی
$ sudo systemctl status nginx
توضیح کدطراحی شده توسط نگارنوین
خروجی:
● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled) Active: active (running) since Sun 2025-03-30 23:12:44 UTC; 1min 33s ago Main PID: 52297 (nginx) Tasks: 2 (limit: 5716) Memory: 2.0M CPU: 36ms CGroup: /system.slice/nginx.service ├─52297 "nginx: master process /usr/sbin/nginx" └─52298 "nginx: worker process" - برای اعمال تغییرات پیکربندی جدید، Nginx را مجدداً بارگذاری کنید. کنسولکپی
$ sudo systemctl reload nginx
توضیح کدطراحی شده توسط نگارنوین
سرویس Nginx را مجدداً راه اندازی کنید.
- کنسولکپی
$ sudo systemctl restart nginx
توضیح کدطراحی شده توسط نگارنوین
ایجاد پیکربندیهای میزبان مجازی Nginx (بلوکهای سرور)
پیکربندیهای میزبان مجازی Nginx شامل نام سرور، مدیر و اطلاعات برنامه وب backend است. دایرکتوریهای default.dand conf.dبه طور پیشفرض حاوی پیکربندیهای میزبان مجازی برای Nginx در AlmaLinux هستند، مگر اینکه تغییر کنند. برای ایجاد یک بلوک سرور سفارشی با محتوای HTML خودتان، این مراحل را دنبال کنید.
- سرویس سیستم Nginx را بررسی کنید و از فعال بودن آن اطمینان حاصل کنید. کنسولکپی
$ sudo systemctl status nginx
توضیح کدطراحی شده توسط نگار نوین
- ریشه سند را تنظیم کنید و محتوای نمونه ایجاد کنید. کنسولکپی
$ sudo mkdir /usr/share/nginx/example && sudo nano /usr/share/nginx/example/index.html
توضیح کدطراحی شده توسط negarnovin Agent
- کد برنامه HTML زیر را در
index.htmlفایل وارد کنید. HTMLکپی<html> <body> <h1>Sample HTML Application</h1> <p>Powered by the Nginx Web Server </p> </body> </html>
فایل را ذخیره کنید و از ویرایشگر متن خارج شوید.
برنامه HTML زمانی نمایش داده میشود که وب سرور Nginx تمام فایلهای پشتیبانی شده را برای نمایش در مرورگر وب بارگذاری کند.
- یک فایل بلوک سرور جدید ایجاد کنید. کنسولکپی
$ cd /etc/nginx/conf.d/ && sudo nano example-host.conf
توضیح کدطراحی شده توسط نگارنوین
- تنظیمات Nginx زیر را در
example-host.confفایل وارد کنید.example.comنام دامنه خود را جایگزین کنید. INIکپیserver { listen 80; listen [::]:80; server_name example.com; root /usr/share/nginx/example; index index.html index.htm; access_log /var/log/nginx/example.com_access.log; error_log /var/log/nginx/example.com_error.log; location / { try_files $uri $uri/ =404; } }فایل را ذخیره کنید و از ویرایشگر متن خارج شوید.
پیکربندی میزبان مجازی Nginx فایلهای برنامه وب را از
/usr/share/nginx/exampleدایرکتوری با استفاده ازexample.comدامنه ارائه میدهد. - سینتکس پیکربندی Nginx را برای یافتن خطاها آزمایش کنید. کنسولکپی
$ sudo nginx -t
توضیح کدطراحی شده توسط NegarNovin
خروجی:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful - برای اعمال تغییرات پیکربندی، Nginx را مجدداً بارگذاری کنید. کنسولکپی
$ sudo systemctl reload nginx
- دسترسی به دامنه خود را آزمایش کنید و تأیید کنید که برنامه وب بارگیری میشود.
http://your-domain.com/
بلوک سرور پیشفرض در /etc/nginx.confفایل ذخیره شده است. برای غیرفعال کردن آن، بلوک سرور را حذف کنید.
ایمن سازی وب سرور Nginx
Nginx برنامههای وب را به طور پیشفرض با استفاده از HTTP ارائه میدهد، مگر اینکه در تنظیمات میزبان مجازی شما مشخص شده باشد. HTTPS رمزگذاری بین Nginx و مرورگر وب کلاینت را فراهم میکند و اتصالات ایمن به سرور وب را تضمین میکند. این بخش شما را در نصب Certbot، پیکربندی HTTPS و تنظیم تنظیمات SELinux و فایروال راهنمایی میکند.
- مخزن EPEL را که شامل ابزار Certbot است، نصب کنید. کنسولکپی
$ sudo dnf install epel-release -y
توضیح کدطراحی شده توسط negarnovin
- بستههای سیستمی خود را بهروزرسانی کنید. کنسولکپی
$ sudo dnf update
توضیح کدطراحی شده توسط نگار نوین
- نصب Certbot با پشتیبانی افزونه Nginx. کنسولکپی
$ sudo dnf install python3-certbot-nginx -y
توضیح کدطراحی شده توسط نگارنوین
- با استفاده از Certbot درخواست گواهی SSL دهید.
example.comو را[email protected]با دامنه و آدرس ایمیل واقعی خود جایگزین کنید. کنسولکپی$ sudo certbot --nginx --domain example.com --email [email protected] --agree-tos
توجه داشته باشیدبا نام دامنه واقعی خود جایگزین کنید
example.com. اگر دامنهای ندارید، استفاده از یک دامنه آزمایشی را در نظر بگیرید یا از مرحله تنظیم SSL صرف نظر کنید. - برای اعمال پیکربندی HTTPS، Nginx را مجدداً بارگذاری کنید. کنسولکپی
$ sudo systemctl reload nginx
- پیکربندی Nginx را برای خطاهای نحوی آزمایش کنید. کنسولکپی
$ sudo nginx -t
خروجی:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful - اجازه عبور ترافیک HTTPS از فایروال را بدهید. کنسولکپی
$ sudo firewall-cmd --permanent --add-service=https
- در صورت تمایل، اگر میخواهید فقط HTTPS را اعمال کنید، دسترسی HTTP را حذف کنید. کنسولکپی
$ sudo firewall-cmd --permanent --remove-service=http
- برای اعمال قوانین جدید، Firewalld را مجدداً بارگذاری کنید. کنسولکپی
$ sudo firewall-cmd --reload
- وضعیت SELinux را بررسی کنید تا از فعال بودن آن اطمینان حاصل کنید. کنسولکپی
$ sestatus
خروجی:
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux - ابزارهای مدیریتی مورد نیاز SELinux را برای
semanageدستور زیر نصب کنید: کنسولکپی$ sudo dnf install policycoreutils-python-utils -y
این تضمین میکند که
semanageابزار برای مدیریت زمینههای SELinux در دسترس است. - قوانین زمینه فایل SELinux را بهروزرسانی کنید تا Nginx بتواند فایلهای موجود در دایرکتوری سفارشی شما را بخواند. کنسولکپی
$ sudo semanage fcontext -a -t httpd_sys_content_t "/usr/share/nginx/example(/.*)?"
زمینه SELinux
httpd_sys_content_tبه Nginx اجازه میدهد تا پس از نصب به فایلهای موجود در چندین دایرکتوری دسترسی داشته باشد. اجازه دسترسی به دایرکتوریهای برنامههای وب، Nginx را قادر میسازد تا پیکربندیها و فایلهای برنامه را بخواند. - زمینه جدید SELinux را اعمال کنید. کنسولکپی
$ sudo restorecon -Rv /usr/share/nginx/example/
خروجی:
Relabeled /usr/share/nginx/example from unconfined_u:object_r:usr_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0 Relabeled /usr/share/nginx/example/index.html from unconfined_u:object_r:usr_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0 - برای تأیید صحت عملکرد گواهی، با استفاده از HTTPS به دامنه خود در یک مرورگر وب دسترسی پیدا کنید.
https://example.com
نتیجهگیری
اکنون Nginx را روی AlmaLinux ۹ راهاندازی کردهاید، آن را برای ارائه محتوای وب استاتیک پیکربندی کردهاید و آن را با قوانین HTTPS و SELinux ایمن کردهاید. Nginx یک وب سرور انعطافپذیر و با کارایی بالا است که میتواند به راحتی برای پشتیبانی از برنامههای وب پویا، ادغامهای backend مانند PHP یا پایگاههای داده و استقرارهای سطح تولید، مقیاسپذیر باشد. از اینجا، میتوانید تنظیمات خود را با اضافه کردن قوانین پروکسی معکوس، فعال کردن تعادل بار یا ادغام با پشتههای برنامههایی مانند Laravel، Flask یا Node.js گسترش دهید.