OffshoreVps
آموزش‌ها14 اکتبر 20269 دقیقه مطالعهنوشته‌ی تیم OffshoreVps

چگونه یک وب‌سایت را روی VPS با Nginx و HTTPS میزبانی کنیم

Nginx را روی Ubuntu نصب کنید، یک server block بسازید، گواهی رایگان Let's Encrypt اضافه کنید و سرعت را بالا ببرید. دستورهای آماده‌ی کپی و جای‌گذاری برای یک سایت زنده در ۲۰ دقیقه.

هاست اشتراکی ساده است، اما VPS سرعت، دسترسی root و نبود همسایه‌های پرمزاحمت را به شما می‌دهد. این راهنما یک سرور تازهٔ Ubuntu 24.04 یا 22.04 را در حدود بیست دقیقه با Nginx به یک وب‌سایت زندهٔ HTTPS تبدیل می‌کند. همهٔ دستورها را می‌توانید همان‌طور که هست کپی کنید.

پنجره‌ی ترمینال روی یک VPS که دستورهای میزبانی وب‌سایت با Nginx و HTTPS را نشان می‌دهد، با «sudo apt update» شروع می‌شود
نوع دستورهایی که در این راهنما روی سرور خود اجرا می‌کنید.

به چه چیزی نیاز دارید

1. نصب Nginx

sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx

آدرس IP سرور را در مرورگر باز کنید. باید صفحهٔ خوشامدگویی پیش‌فرض Nginx را ببینید. اگر نمی‌بینید، بررسی کنید که فایروال شما پورت‌های 80 و 443 را مجاز کرده باشد:

sudo ufw allow "Nginx Full"
sudo ufw status

2. ساخت پوشهٔ سایت

sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com
echo "<h1>It works</h1>" > /var/www/example.com/html/index.html

در همه جا example.com را با دامنهٔ خودتان جایگزین کنید.

گام‌های این راهنما به ترتیب: ۱. به چه چیزی نیاز دارید؛ ۲. ۱. نصب Nginx؛ ۳. ۲. ساخت پوشه‌ی سایت؛ ۴. ۴. افزودن HTTPS رایگان با Let's Encrypt؛ ۵. ۵. سریع‌ترش کنید؛ ۶. مشکلات رایج
گام‌های این راهنما به ترتیب.

3. افزودن server block

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;
    }
}

آن را فعال کنید، پیکربندی را آزمایش کنید و دوباره بارگذاری کنید:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

4. افزودن HTTPS رایگان با Let's Encrypt

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

Certbot بلاک server شما را ویرایش می‌کند، HTTP را به HTTPS هدایت می‌کند و تایمری نصب می‌کند که گواهی را خودکار تمدید می‌کند. تایمر را با systemctl list-timers | grep certbot بررسی کنید.

5. سریع‌تر کردن سایت

فشرده‌سازی و کش مرورگر را برای فایل‌های ایستا روشن کنید. این را داخل بلاک server اضافه کنید:

gzip on;
gzip_types text/css application/javascript application/json image/svg+xml;

location ~* \.(css|js|png|jpg|jpeg|webp|svg|woff2)$ {
    expires 30d;
    add_header Cache-Control "public";
}

پس از آن Nginx را دوباره بارگذاری کنید. برای سایت‌های پویا مانند WordPress، PHP-FPM را نصب کنید و درخواست‌های .php را به آن بدهید، یا یک افزونهٔ کش جلوی آن بگذارید.

مشکلات رایج

  • 403 Forbidden: Nginx نمی‌تواند پوشه را بخواند. مالکیت را بررسی کنید و مطمئن شوید همهٔ پوشه‌های والد اجرایی هستند (chmod o+x).
  • خطای Certbot: دامنه هنوز به سرور اشاره نمی‌کند، یا پورت 80 مسدود است.
  • صفحهٔ پیش‌فرض هنوز نمایش داده می‌شود: فایل /etc/nginx/sites-enabled/default را حذف کنید و دوباره بارگذاری کنید.