پرش به محتوا

وب‌سرور Nginx روی openSUSE Leap 16

Nginx را با zypper نصب کنید، با ساختار پوشه‌های openSUSE یک virtual host بسازید و آن را از فایروال و SELinux عبور دهید.

openSUSE Leap 16سطح: مقدماتیبه‌روزرسانی: ۱۷ آبان ۱۴۰۵

۱. نصب

bash
sudo zypper refresh
sudo zypper install -y nginx
sudo systemctl enable --now nginx

ساختار openSUSE با Debian فرق دارد: پوشه‌ی sites-available وجود ندارد. سایت‌ها در /etc/nginx/vhosts.d/ با پسوند .conf قرار می‌گیرند و ریشه‌ی پیش‌فرض وب /srv/www/htdocs است.

۲. سایت

bash
sudo mkdir -p /srv/www/portal
echo '<h1>Portal on openSUSE</h1>' | sudo tee /srv/www/portal/index.html

/etc/nginx/vhosts.d/portal.conf:

nginx
server {
    listen 80;
    server_name portal.corp.sahor.ir;
    root /srv/www/portal;
    index index.html;

    access_log /var/log/nginx/portal.access.log;
    error_log  /var/log/nginx/portal.error.log;

    location / {
        try_files $uri $uri/ =404;
    }
}

در /etc/nginx/nginx.conf داخل بلوک http مطمئن شوید که این خط هست و از comment خارج شده است:

nginx
include vhosts.d/*.conf;
server_tokens off;

۳. SELinux و فایروال

bash
sudo restorecon -Rv /srv/www/portal
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reload

۴. بررسی و بارگذاری

bash
sudo nginx -t
sudo systemctl reload nginx
curl -H 'Host: portal.corp.sahor.ir' http://127.0.0.1/

۵. HTTPS

افزونه‌ی Nginx برای certbot در مخزن اصلی هست. نام بسته به نسخه‌ی Python توزیع بستگی دارد، پس اول جست‌وجو کنید:

bash
zypper search certbot-nginx
sudo zypper install -y python313-certbot-nginx     # use the name shown by the search
sudo certbot --nginx -d portal.sahor.ir
systemctl list-timers | grep -i certbot

اگر تایمری برای تمدید نمی‌بینید، certbot renew --quiet را روزی دو بار با یک systemd timer یا cron اجرا کنید. اگر سرور از اینترنت در دسترس نیست، گواهی را از CA داخلی سازمان بگیرید و مسیرش را با ssl_certificate و ssl_certificate_key در بلوک listen 443 ssl بدهید.