راهاندازی Reverse Proxy برای Node.js با Nginx
اپلیکیشن Node را روی پورت داخلی اجرا کنید و با Nginx به دامنه و SSL وصل کنید.
آخرین بهروزرسانی: ۲۸ مهر ۱۴۰۵ · زمان مطالعه: حدود 3 دقیقه · سطح: کاربردی
- راهاندازی Reverse Proxy برای Node.js با Nginx
- اپلیکیشن را روی پورت داخلی اجرا کنید
- لاگ و healthcheck را بررسی کنید
چرا این موضوع مهم است؟
موضوع Nginx یکی از پایههای نگهداری سرور است. رعایت آن باعث پایداری بیشتر، کاهش ریسک امنیتی و صرفهجویی در زمان پشتیبانی میشود.
این راهنما با فرض دسترسی مدیریتی (root یا sudo) نوشته شده و مراحل آن روی یک سرور تازه آزمایش شده است.
پیشنیازها
- دسترسی SSH با کاربر root یا کاربر دارای sudo
- Ubuntu 22.04/24.04 یا Debian 12 (سازگاری با توزیعهای مشابه)
- نسخه پشتیبان از فایلها و دیتابیسهای مهم
راهنمای گامبهگام
گام 1 — اپلیکیشن را روی پورت داخلی اجرا کنید
اپلیکیشن را روی پورت داخلی اجرا کنید. برای اطمینان، نتیجه را از یک مسیر دوم (مرورگر، کلاینت یا ابزار مانیتورینگ) هم بررسی کنید.
گام 2 — سرویس systemd برای آن بسازید
سرویس systemd برای آن بسازید. این کار را در بازه کمترافیک انجام دهید و در صورت نیاز کاربران را از قبل مطلع کنید.
گام 3 — در Nginx بلوک proxy_pass اضافه کنید
در Nginx بلوک proxy_pass اضافه کنید. این مرحله را با دقت انجام دهید و خروجی دستور را بررسی کنید تا از اعمال درست تغییرات مطمئن شوید.
گام 4 — هدرهای X-Forwarded را تنظیم کنید
هدرهای X-Forwarded را تنظیم کنید. پس از اجرا، وضعیت سرویس و لاگها را کنترل کنید؛ تغییر بدون بررسی میتواند خطای پنهان ایجاد کند.
گام 5 — SSL و ریدایرکت را فعال کنید
SSL و ریدایرکت را فعال کنید. اگر روی چند سرور کار میکنید، این مورد را یکبار روی محیط تست اجرا و سپس روی تولید اعمال کنید.
گام 6 — لاگ و healthcheck را بررسی کنید
لاگ و healthcheck را بررسی کنید. مقدارهای نمونه را با اطلاعات واقعی سرور خود جایگزین کنید و از اجرای دستور با مقادیر پیشفرض پرهیز کنید.
نمونه دستورها
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}نکات امنیتی و بهینهسازی
- نسخه پکیجها و سیستمعامل را بهروز نگه دارید؛ بسیاری از نفوذها از نسخههای قدیمی شروع میشوند.
- دسترسیها را حداقلی نگه دارید و فقط پورتها و کاربران لازم را باز بگذارید.
- پیش از هر تغییر بزرگ، نسخه پشتیبان قابل بازیابی تهیه کنید و بازیابی را تست کنید.
خطاهای رایج و راهحل
- قبل از بازگردانی بکاپ، مطمئن شوید نسخه بکاپ با نسخه فعلی سازگار است.
- خطای Permission denied معمولاً به مالکیت یا مجوز فایل مربوط است؛ chmod -R 777 راهحل نیست.
- قبل از بازگردانی بکاپ، مطمئن شوید نسخه بکاپ با نسخه فعلی سازگار است.
سؤالات متداول
چرا برنامه به دامنه وصل نمیشود؟
proxy_pass یا server_name اشتباه است؛ خطای Nginx را در error.log ببینید.
برای WebSocket چه تنظیمی لازم است؟
هدرهای Upgrade و Connection و تنظیم proxy_read_timeout.
میلاد سرور پلنهای اقتصادی سرور مجازی ایران و سرور مجازی آلمان را با آیپی اختصاصی و قیمت شفاف ارائه میکند. برای مقایسه همه کشورها فهرست کامل سرورهای بینالملل را ببینید.
جمعبندی
با رعایت این مراحل، سرویس شما پایدارتر و امنتر خواهد بود؛ اما پایش منظم را فراموش نکنید.