EQVPS

چگونه یک وسیط معکوس nginx با HTTPS راه‌اندازی کنیم

یک دامنه تمیز و HTTPS خودکار جلوی هر اپلیکیشنی که روی یک پورت محلی کار می‌کند بگذارید. دو راه: nginx با Certbot، یا Caddy برای TLS خودکار در یک خط. گام‌به‌گام، همراه پیکربندی آماده کپی.

بیشتر اپلیکیشن‌های خودمیزبان روی یک پورت محلی مثل 127.0.0.1:3000 گوش می‌دهند و HTTP ساده صحبت می‌کنند. یک وسیط معکوس جلو روی پورت‌های 80/443 می‌ایستد، HTTPS را با یک گواهی واقعی خاتمه می‌دهد و ترافیک را به آن پورت محلی هدایت می‌کند — یک https://app.yourdomain.com تمیز به شما می‌دهد و اجازه می‌دهد چند اپلیکیشن پشت یک IP اجرا کنید. اینجا هر دو راه رایج است.

پیش‌نیازها

گزینه A — Caddy (HTTPS خودکار، یک خط)

sudo apt install -y caddy
echo 'app.yourdomain.com { reverse_proxy 127.0.0.1:3000 }' | sudo tee /etc/caddy/Caddyfile
sudo systemctl restart caddy

همین — Caddy یک گواهی Let's Encrypt برای دامنه می‌گیرد و آن را خودکار تمدید می‌کند.

گزینه B — nginx + Certbot

sudo apt install -y nginx certbot python3-certbot-nginx

/etc/nginx/sites-available/app را بسازید:

server {
    listen 80;
    server_name app.yourdomain.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

آن را فعال کنید و HTTPS اضافه کنید:

sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d app.yourdomain.com

Certbot پیکربندی را برای سرو HTTPS ویرایش می‌کند و تمدید خودکار را تنظیم می‌کند.

هشدارهای صادقانه

گام‌های بعدی

وسیط معکوس همان چیزی است که به یک سرور اجازه می‌دهد چیزهای بسیاری را سرو کند — میزبانی چند سرویس پشت یک IP را ببینید. اپلیکیشن را در یک کانتینر اجرا می‌کنید؟ با چگونه Docker را نصب کنیم شروع کنید. برای زنده نگه داشتن خود اپلیکیشن در برابر ری‌استارت‌ها و کرش‌ها، چگونه یک سرویس systemd بسازیم را ببینید.

پرسش‌های متداول

وسیط معکوس چیست و چرا به آن نیاز دارم؟

اپلیکیشن شما معمولاً روی یک پورت محلی مثل 127.0.0.1:3000 گوش می‌دهد. وسیط معکوس جلو روی پورت‌های 80/443 می‌ایستد، HTTPS را خاتمه می‌دهد و درخواست‌ها را به آن پورت محلی هدایت می‌کند. به شما یک دامنه تمیز، یک گواهی TLS معتبر، و توانایی اجرای چند اپلیکیشن پشت یک IP می‌دهد — بی‌آنکه اپلیکیشن شما هیچ‌کدام را خودش انجام دهد.

nginx یا Caddy — کدام را انتخاب کنم؟

Caddy سریع‌ترین راه است: گواهی‌های Let's Encrypt را خودکار می‌گیرد و تمدید می‌کند، و یک وسیط HTTPS کارآمد فقط یک خط پیکربندی است. nginx شناخته‌شده‌تر و منعطف‌تر است، اما برای TLS باید Certbot اضافه کنید. اگر HTTPS با کمترین دردسر می‌خواهید Caddy را به کار ببرید؛ اگر nginx را می‌شناسید یا ویژگی‌هایش را می‌خواهید nginx را.

آیا به دامنه نیاز دارم؟

برای یک گواهی HTTPS معتبر، بله — Let's Encrypt گواهی را برای نام‌های دامنه صادر می‌کند نه IPهای خام. یک رکورد A را به IP سرورتان اشاره دهید، منتظر انتشار DNS بمانید، آنگاه وسیط می‌تواند برای آن نام گواهی بگیرد.

چه پورت‌هایی باید باز باشند؟

80 و 443 ورودی. پورت 80 برای چالش اولیه گواهی و هدایت به HTTPS استفاده می‌شود؛ 443 ترافیک رمزنگاری‌شده را سرو می‌کند. هر دو را در فایروال خود باز کنید (راهنمای UFW را ببینید) و مطمئن شوید چیز دیگری از پیش به آن‌ها متصل نیست.

چرا صدور گواهی شکست می‌خورد؟

تقریباً همیشه DNS یا پورت‌ها. رکورد A دامنه باید به این سرور اشاره کند و منتشر شده باشد، و پورت‌های 80/443 قابل دسترسی باشند (در فایروال باز، در بالادست مسدود نشده). این دو را درست کنید و صدور موفق می‌شود؛ Caddy و Certbot هر دو دوباره تلاش می‌کنند.

نظرات

هنوز نظری نیست. اولین نفر باشید.

یک نظر بگذارید

نظرات پیش از نمایش بررسی می‌شوند.