نحوه نصب وب سرور Nginx روی AlmaLinux 9 #
Nginx یک وب سرور متنباز با کارایی بالا است که به عنوان یک پروکسی معکوس، متعادلکننده بار و حافظه پنهان HTTP عمل میکند. برای استقرار آن بر روی یک پلتفرم پایدار در سطح سازمانی، میتوانید وب سرور Nginx را روی AlmaLinux 9 نصب کنید. این وب سرور به راحتی محتوای استاتیک و پویا را مدیریت میکند و با فناوریهایی مانند PHP و سرورهای پایگاه داده به خوبی کار میکند.
در این مقاله، نحوه نصب و پیکربندی Nginx روی AlmaLinux 9 را خواهید آموخت. مراحل شامل نصب Nginx، مدیریت سرویس سیستم، تنظیم یک بلوک سرور سفارشی (میزبان مجازی) و فعال کردن HTTPS با Let’s Encrypt است.
پیشنیازها #
قبل از شروع، شما نیاز دارید:
- یک سرور مجازی با سبیستم عامل آلمالینوکس
نصب Nginx روی AlmaLinux 9 #
شما میتوانید 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 ├─۵۲۲۹۷ "nginx: master process /usr/sbin/nginx" └─۵۲۲۹۸ "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
- کد برنامه 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نام دامنه خود را جایگزین کنید.INIserver { listen 80; listen [::]:۸۰; 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/ =۴۰۴; } }
فایل را ذخیره کنید و از ویرایشگر متن خارج شوید.
پیکربندی میزبان مجازی Nginx فایلهای برنامه وب را از
/usr/share/nginx/exampleدایرکتوری با استفاده ازexample.comدامنه ارائه میدهد. - سینتکس پیکربندی 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 - برای اعمال تغییرات پیکربندی، 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 - بستههای سیستمی خود را بهروزرسانی کنید.کنسول
$ sudo dnf update - نصب Certbot با پشتیبانی افزونه Nginx.کنسول
$ sudo dnf install python3-certbot-nginx -y - با استفاده از Certbot درخواست گواهی SSL دهید.
example.comو راadmin@example.comبا دامنه و آدرس ایمیل واقعی خود جایگزین کنید.کنسول$ sudo certbot --nginx --domain example.com --email admin@example.com --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 9 راهاندازی کردهاید، آن را برای ارائه محتوای وب استاتیک پیکربندی کردهاید و آن را با قوانین HTTPS و SELinux ایمن کردهاید. Nginx یک وب سرور انعطافپذیر و با کارایی بالا است که میتواند به راحتی برای پشتیبانی از برنامههای وب پویا، ادغامهای backend مانند PHP یا پایگاههای داده و استقرارهای سطح تولید، مقیاسپذیر باشد. از اینجا، میتوانید تنظیمات خود را با اضافه کردن قوانین پروکسی معکوس، فعال کردن تعادل بار یا ادغام با پشتههای برنامههایی مانند Laravel، Flask یا Node.js گسترش دهید.

