در خانوادهٔ RHEL، مسیر سایت و کاربر سرویس با Debian فرق دارد. امشب Nginx را با SELinux فعال نصب می‌کنیم و فرض‌های شاخهٔ خودمان را ثبت می‌کنیم.

این جلسه بخشی از دورهٔ انجین‌اکس در ۵۰ شب است. قرارداد آزمایشگاه، مسیرها و روال اعمال تغییر در راهنمای دوره آمده است.

محیط: AlmaLinux 9 یا Rocky Linux 9 به‌روز، VM تمیز، AppStream و کنسول مستقل.

بسته و layout واقعی#

sudo dnf module list nginx
sudo dnf install nginx curl openssl httpd-tools python3 \
  policycoreutils-python-utils
sudo systemctl enable --now nginx
sudo nginx -t
nginx -v
rpm -q nginx
getenforce
curl -i http://127.0.0.1/

فهرست stream را برای شناخت انتخاب فعلی ببین؛ روی سرویس موجود module reset اجرا نکن. این درس به قابلیت پایهٔ HTTP تکیه دارد و stream جدیدتر را الزامی نمی‌کند. نسخهٔ نصب‌شده مبنای نحو HTTP/2 و سازگاری ماژول بعدی است.

فایل اصلی /etc/nginx/nginx.conf است و conf.d/*.conf معمولاً داخل context نوع http خوانده می‌شود. ممکن است سایت پیش‌فرض مستقیماً در nginx.conf تعریف شده باشد؛ قبل از ساخت default_server جدید، بلوک قبلی را با backup غیرفعال کن. حساب کارگر معمولاً nginx است.

شبکه و SELinux#

sudo ss -lntp
sudo firewall-cmd --get-active-zones
sudo journalctl -u nginx -n 30 --no-pager
ls -Zd /usr/share/nginx/html

فرمان firewalld در صورت فعال بودن همان مدیر کاربرد دارد. policy پایهٔ شبکهٔ راهنما فقط کلاینت‌های lab را مجاز می‌کند؛ با مجوز عمومی http/https، allowlist جدید می‌تواند بی‌اثر شود.

SELinux کنترل دسترسی اجباری بر اساس policy است. آن را برای رفع 403 خاموش نکن؛ برچسب فایل در شب هشتم و مجوز اتصال پراکسی در شب بیست‌ودوم بررسی می‌شود.

آزمون و بازگشت: از .20 به .30 پاسخ HTTP بگیر و listener، firewall و label را جدا ثبت کن. برای توقف آزمایش sudo systemctl disable --now nginx کافی است؛ بازگشت کامل با Snapshot انجام می‌شود.

منبع: Nginx در RHEL 9 .