تخطي إلى المحتوى الرئيسي

سيرفر مخصص: إعداد بروكسي عكسي باستخدام nginx على لينكس

تم إنشاء هذا الدليل باستخدام المنتجات التالية:

(قد تختلف التفاصيل مع المنتجات من مزودين مختلفين ولكن المفاهيم الرئيسية تظل كما هي)

مقدمة

سيرفر البروكسي العكسي هو سيرفر يعمل كوسيط بين المستخدمين النهائيين وسيرفر آخر. مواقع الويب وسيرفرات الألعاب هي من الأسباب الشائعة لاستخدام البروكسي العكسي، ولكل منها مزايا مختلفة تشمل الأمان، سهولة الوصول والحماية.

في هذا الدليل، سنستعرض عملية إعداد بروكسي عكسي عام لمواقع الويب وكذلك واحد مخصص لسيرفرات الألعاب.

التحضير

لإعداد بروكسي عكسي، ستحتاج إلى سيرفر لينكس ليستضيف سيرفر البروكسي الخاص بك. في هذا المثال، سنستخدم أوبونتو كنظام لينكس، لكن خطوات التثبيت ستكون مشابهة لمعظم توزيعات لينكس.

مواصفات VPS الموصى بها

لبروكسي عكسي مخصص لسيرفرات الألعاب، ننصح بشدة بشراء سرعات شبكة أعلى، خصوصًا إذا كان سيرفرك يحتوي على العديد من اللاعبين. هذا لأن VPS الخاص بك سيقوم ببث TCP/UDP الخام مباشرة بين العميل (اللاعب) وسيرفر اللعبة. أما بالنسبة لبروكسي متعلق بالويب، فيكفي سيرفر بمواصفات أساسية مع ترقيات بسيطة. :)

ننصح بإعداد البروكسي باستخدام نطاق تملكه. لكل نطاق فرعي تخطط لاستخدامه، يجب عليك إنشاء سجل DNS من نوع A (مثلاً 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 (دون الحاجة لذكر المنفذ في عنوان URL)، أو توجيه المستخدم إلى محتوى خارجي، وهو مفيد لتوزيع الحمل والحماية.

واحدة من أكبر الفوائد هي أن سيرفرك يمكنه التعامل مع طلبات من مصادر/نطاقات متعددة حسب الحاجة، بدلاً من سيرفر ويب واحد يعمل على المنفذين 80/443 فقط.

إعداد Nginx

ابدأ بإنشاء ملف داخل مجلد Nginx للنطاق الذي اخترته سابقًا، والذي عادةً ما يكون نطاقًا فرعيًا مثل zapdocs.example.com كما في مثالنا.

important

تأكد من إعداد سجل 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

إعداد 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 تلقائيًا لنطاقاتك.

الخاتمة

مبروك، لقد قمت بإعداد بروكسي عكسي بنجاح سواء لموقع ويب أو لسيرفر الألعاب الخاص بك (أو كلاهما :))، مما يوفر لك تحسينات متعددة في الأمان، الموثوقية والأداء. لأي أسئلة أو مساعدة إضافية، لا تتردد في التواصل مع فريق الدعم لدينا، المتوفر يوميًا لمساعدتك! 🙂