نصب nginx و کانفیگ پایه برای یک سایت استاتیک
سادهترین کاربرد nginx سرو کردن یک سایت HTML و فایلهای استاتیک است. در این راهنما از نصب تا اولین سایت روی دامنه را قدمبهقدم میبینید؛ الگوی همین ساختار (sites-available و sites-enabled) برای همهٔ سایتهای بعدی هم استفاده میشود.
۱نصب nginx
بستههای سیستم را بهروز کنید و nginx را نصب کنید. سرویس بهصورت خودکار اجرا و برای بوت بعدی فعال میشود.
sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx
systemctl status nginx --no-pager۲باز کردن پورتهای وب در فایروال
اگر ufw فعال است پورتهای ۸۰ و ۴۴۳ را باز کنید. قبل از فعال کردن ufw حتماً پورت SSH را باز کنید تا دسترسیتان قطع نشود.
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw statusبعد از این مرحله با مرورگر آدرس IP سرور را باز کنید؛ صفحهٔ «Welcome to nginx» باید دیده شود.
۳ساخت پوشهٔ سایت و یک صفحهٔ آزمایشی
هر سایت را در پوشهٔ جدا بگذارید. مالک پوشه را کاربر خودتان یا www-data قرار دهید.
sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com
sudo chmod -R 755 /var/www/example.com
echo '<h1>Hello from nginx</h1>' > /var/www/example.com/html/index.html۴نوشتن server block (کانفیگ سایت)
فایل کانفیگ سایت را در sites-available بسازید. دستور try_files مشخص میکند اگر فایل پیدا نشد چه شود.
sudo nano /etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
}۵فعال کردن سایت
با یک لینک نمادین سایت را در sites-enabled فعال کنید. سایت پیشفرض را در صورت نیاز غیرفعال کنید.
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default۶تست کانفیگ و اعمال تغییرات
همیشه قبل از reload دستور nginx -t را اجرا کنید. اگر پیام «syntax is ok» و «test is successful» آمد، reload کنید. reload بدون قطع اتصالهای فعلی انجام میشود.
sudo nginx -t
sudo systemctl reload nginx۷تنظیم DNS و تست
در پنل دامنه یک رکورد A برای example.com و یک رکورد برای www به IP سرور بسازید. بعد از انتشار DNS تست کنید:
curl -I http://example.com
dig +short example.comبرای فعال کردن HTTPS بعد از این مرحله، راهنمای «SSL رایگان با certbot» را دنبال کنید.
پرسشهای پرتکرار دربارهٔ نصب nginx و کانفیگ پایه برای یک سایت استاتیک
تفاوت sites-available و sites-enabled چیست؟
sites-available محل نگهداری همهٔ فایلهای کانفیگ است و sites-enabled فقط لینکهایی به سایتهای فعال دارد. برای غیرفعال کردن یک سایت فقط لینک را پاک میکنید و فایل اصلی میماند.
فرق reload و restart چیست؟
reload کانفیگ جدید را بدون قطع اتصالهای در جریان اعمال میکند و اگر کانفیگ خطا داشته باشد نسخهٔ قبلی به کار ادامه میدهد. restart سرویس را کامل متوقف و دوباره اجرا میکند و اتصالها قطع میشوند.