VPS: إعداد بروكسي عكسي باستخدام nginx على لينكس
تم إنشاء هذا الدليل باستخدام المنتجات التالية:
(قد تختلف التفاصيل مع المنتجات من مزودين مختلفين ولكن المفاهيم الرئيسية تظل كما هي)
مقدمة
سيرفر البروكسي العكسي هو سيرفر يعمل كوسيط بين المستخدمين النهائيين وسيرفر آخر. مواقع الويب وسيرفرات الألعاب من أشهر الأسباب لاستخدام البروكسي العكسي، ولكل منها مزايا مختلفة مثل الأمان، سهولة الوصول، والحماية.
في هذا الدليل، سنستعرض كيفية إعداد بروكسي عكسي عام لمواقع الويب وكذلك واحد مخصص لسيرفرات الألعاب.
التحضير
لإعداد بروكسي عكسي، ستحتاج إلى سيرفر لينكس يستضيف سيرفر البروكسي الخاص بك. في هذا المثال، سنستخدم أوبونتو كنظام لينكس، لكن خطوات التثبيت ستكون مشابهة لمعظم توزيعات لينكس.
لبروكسي عكسي مخصص لسيرفرات الألعاب، ننصح بشدة بشراء سرعات شبكة أعلى، خصوصًا إذا كان سيرفرك يحتوي على لاعبين كثيرين. لأن VPS الخاص بك سيقوم ببث TCP/UDP الخام مباشرة بين العميل (اللاعب) وسيرفر اللعبة. أما لبروكسي ويب عادي، سيرفر بمواصفات أساسية مع ترقيات بسيطة يكفي. :)
ننصح بإعداد البروكسي باستخدام نطاق تملكه. لكل نطاق فرعي تخطط لاستخدامه، يجب إنشاء سجل A في DNS (مثلاً zapdocs.example.com) يشير إلى عنوان IP الخاص بـ VPS لينكس الخاص بك. هذا هو العنوان الذي سيستخدمه المستخدمون للوصول إلى موقعك أو سيرفر الألعاب.
الوصول إلى VPS
بعد تجهيز VPS لينكس، عليك الاتصال به. استخدم دليلنا الوصول الأولي عبر SSH لتتعلم كيفية القيام بذلك.
تثبيت Nginx
ستستخدم Nginx لاستضافة سيرفر البروكسي العكسي لأنه سيرفر ويب مفتوح المصدر عالي الأداء وشائع.
بعد الوصول إلى VPS، استخدم الأمر التالي لتثبيت Nginx.
sudo apt install nginx
بعد التثبيت، عليك تعديل جدار الحماية لضمان وصول الخدمة من الإنترنت. في هذا الدليل، سنستخدم جدار الحماية UFW لأن Nginx يسجل نفسه كتطبيق، مما يسهل تعديل الإعدادات. يمكنك معرفة المزيد عن جدار الحماية UFW من خلال دليلنا نصائح أمان لينكس.
إذا كنت تستخدم جدران حماية أخرى (مثل Iptables)، تأكد من منح الوصول المناسب لـ Nginx، خصوصًا على المنفذين 80 و443 حيث يعمل nginx.
يمكنك التحقق من ملفات تعريف Nginx عبر الأمر sudo ufw app list. في هذه الحالة، نريد اختيار خيار Nginx Full، الذي يتيح الوصول لـ HTTP للاختبار وHTTPS للاستخدام الفعلي.
sudo ufw allow 'Nginx Full'
بعد إعداد Nginx، حاول الوصول إلى الصفحة عبر المتصفح للتأكد من أنها تعمل كما هو متوقع. إذا ظهرت صفحة الاختبار بشكل صحيح، يمكنك متابعة الدليل.
http://[your_serverip]
لمواقع الويب
البروكسي العكسي لمواقع الويب مفيد لأسباب كثيرة، منها إعادة التوجيه إلى موارد داخلية مثل مثيل vaultwarden (بدون الحاجة لذكر المنفذ في الرابط)، أو توجيه المستخدم لمحتوى خارجي، وهو مفيد لتوزيع الحمل والحماية.
أحد أكبر الفوائد هو أن سيرفرك يمكنه التعامل مع طلبات من عدة مصادر/نطاقات حسب الحاجة، بدلاً من سيرفر ويب واحد يعمل على المنفذين 80/443 فقط.
إعداد Nginx
ابدأ بإنشاء ملف داخل مجلد Nginx للنطاق الذي اخترته سابقًا، والذي عادةً يكون نطاقًا فرعيًا مثل zapdocs.example.com كما في مثالنا.
تأكد من إعداد سجل A يشير إلى عنوان IP الخاص بسيرفر البروكسي قبل المتابعة. بدون هذا، النطاق وأي خطوات لاحقة لن تعمل كما هو متوقع.
ادخل إلى مجلد بلوكات السيرفر باستخدام الأمر التالي. هنا ستخزن كل إعدادات البروكسي.
cd /etc/nginx/sites-available/
الآن استخدم الأمر التالي لإنشاء ملف إعداد جديد. ننصح باستخدام اسم النطاق كاسم للملف لتسهيل التعرف عليه (مثلاً zapdocs.example.com). استبدل [your_filename] بالاسم الذي تريده.
sudo nano [your_filename]
سيفتح محرر nano، حيث يمكنك إدخال المحتوى. انسخ القالب التالي داخل المحرر. عدّل [your_domain] إلى النطاق الذي تريد البروكسي له، و[your_target_server] إلى السيرفر الهدف الذي تريد الوصول إليه.
upstream targetServer {
# أضف السيرفر الهدف الذي تريد الوصول إليه. يمكن أن يكون:
# إعادة توجيه داخلي "localhost" (مثلاً 127.0.0.1:9090)
# سيرفر خارجي (مثلاً 103.146.43.52:9000)
server [your_target_server];
}
server {
listen 80;
listen [::]:80;
# النطاق الذي سيتم التعامل معه (مثلاً zapdocs.example.com)
server_name [your_domain];
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass_request_headers on;
proxy_http_version 1.1;
proxy_pass http://targetServer;
}
}
بعد تعديل القيم بما يناسب إعدادك، احفظ الملف واخرج من nano باستخدام CTRL + X، ثم Y للتأكيد وأخيرًا ENTER.
الآن عليك تفعيل ملف بلوك السيرفر بإنشاء رابط رمزي إلى المجلد النشط.
sudo ln -s /etc/nginx/sites-available/[your_filename] /etc/nginx/sites-enabled/[your_filename]
للتأكد من صحة الإعدادات، خصوصًا من ناحية الصياغة، استخدم الأمر sudo nginx -t للتحقق من وجود أخطاء. إذا كانت النتيجة ناجحة، الخطوة الأخيرة هي إعادة تشغيل Nginx لتطبيق التغييرات.
systemctl reload nginx.service
بعد إعادة التشغيل، جرب الوصول إلى النطاق الذي استخدمته للبروكسي العكسي عبر المتصفح. إذا نجح الأمر، يجب أن تظهر الصفحة المحتوى الذي حددته في متغير targetServer. إذا واجهت مشاكل، ننصح بفحص السجلات باستخدام journalctl -f -u nginx.service لتحديد الأخطاء المحتملة.
لسيرفرات الألعاب
البروكسي العكسي لسيرفرات الألعاب مفيد لأسباب كثيرة، منها توفير طبقة أمان وموثوقية إضافية عبر تحسين التخفيف وتقييد الوصول إلى المضيف الرئيسي.
معظم سيرفرات الألعاب المخصصة تعمل بشكل ممتاز مع بروكسي نقطة نهاية TCP/UDP الخام التي ستقوم بإعدادها. لكن بعض الألعاب القليلة مثل BeamMP قد لا تعمل جيدًا مع VPNs والبروكسيات، لذا يجب اختبارها لكل لعبة على حدة.
إعداد Nginx
هذا يتطلب وجود وحدة Nginx Stream، والتي ليست جزءًا من بناء Nginx الافتراضي.
تثبيت وحدة Nginx stream
- أوبونتو وديبيان
- سينتوس وفيدورا
sudo apt install -y libnginx-mod-stream
sudo dnf -y install nginx-mod-stream
إعداد Nginx stream
ستضيف بلوك stream جديد في ملف nginx.conf الرئيسي حيث ستحدد السيرفر الهدف والمنفذ الذي يجب الوصول إليه عبر البروكسي.
افتح الملف باستخدام الأمر التالي.
sudo nano /etc/nginx/nginx.conf
انسخ القالب التالي داخل الملف لإضافة بلوك stream جديد. استبدل [your_target_server] بالسيرفر الذي تريد البث إليه مع المنفذ المناسب (مثلاً :30120 لـ FiveM). واستبدل [your_port_listener] بالمنفذ الذي تريد أن يصل الناس من خلاله إلى المحتوى عبر البروكسي.
stream {
upstream targetServer {
# أضف السيرفر الهدف الذي تريد الوصول إليه (مثلاً 103.146.43.52:30120)
server [your_target_server];
}
server {
# منفذ الاستماع الذي يقبل ويجسر الاتصالات (مثلاً 30120)
listen [your_port_listener];
proxy_pass targetServer;
}
}
ببساطة، Nginx سيستمع على المنفذ المحدد للاتصالات الواردة ويبث كل شيء إلى السيرفر الهدف الذي حددته (من سيرفر البروكسي إلى سيرفر اللعبة الحقيقي).
بعد تعديل القيم بما يناسب إعدادك، احفظ الملف واخرج من nano باستخدام CTRL + X، ثم Y للتأكيد وأخيرًا ENTER.
للتأكد من صحة الإعدادات، خصوصًا من ناحية الصياغة، استخدم الأمر sudo nginx -t للتحقق من وجود أخطاء. إذا كانت النتيجة ناجحة، الخطوة الأخيرة هي إعادة تشغيل Nginx لتطبيق التغييرات.
systemctl reload nginx.service
بعد إعادة التشغيل، حاول الاتصال بسيرفر اللعبة عبر نطاق البروكسي. إذا نجح الأمر، يجب أن تتمكن من الاتصال بسيرفر اللعبة الذي حددته في متغير targetServer. إذا واجهت مشاكل، ننصح بفحص السجلات باستخدام journalctl -f -u nginx.service لتحديد الأخطاء المحتملة.
شهادة SSL
بعد إعداد البروكسي العكسي، ننصح بشدة بإضافة شهادة SSL للنطاقات المستخدمة لضمان نقل البيانات بأمان عبر HTTPS. تحقق من دليلنا تثبيت Certbot الذي يغطي كامل عملية طلب وتجديد شهادات SSL تلقائيًا لنطاقاتك.
الخاتمة
مبروك، لقد أعددت بنجاح بروكسي عكسي لموقع ويب أو سيرفر ألعاب (أو كلاهما :))، مما يمنحك تحسينات في الأمان، الموثوقية، والأداء. لأي أسئلة أو مساعدة إضافية، لا تتردد في التواصل مع فريق الدعم لدينا، المتوفر يوميًا لمساعدتك! 🙂