سيرفر مخصص: إعداد بروكسي عكسي باستخدام nginx على لينكس
تم إنشاء هذا الدليل باستخدام المنتجات التالية:
(قد تختلف التفاصيل مع المنتجات من مزودين مختلفين ولكن المفاهيم الرئيسية تظل كما هي)
مقدمة
سيرفر البروكسي العكسي هو سيرفر يعمل كوسيط بين المستخدمين النهائيين وسيرفر آخر. مواقع الويب وسيرفرات الألعاب هي من الأسباب الشائعة لاستخدام البروكسي العكسي، ولكل منها مزايا مختلفة تشمل الأمان، سهولة الوصول والحماية.
في هذا الدليل، سنستعرض عملية إعداد بروكسي عكسي عام لمواقع الويب وكذلك واحد مخصص لسيرفرات الألعاب.
التحضير
لإعداد بروكسي عكسي ستحتاج إلى سيرفر لينكس ليستضيف سيرفر البروكسي الخاص بك. في هذا المثال، سنستخدم أوبونتو كنظام لينكس، لكن خطوات التثبيت ستكون مشابهة لمعظم توزيعات لينكس.
لبروكسي عكسي مخصص لسيرفرات الألعاب، ننصح بشدة بشراء سرعات شبكة أعلى، خاصة إذا كان سيرفرك يحتوي على لاعبين كثيرين. لأن 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 (بدون الحاجة لذكر المنفذ في الرابط)، أو توجيه المستخدم إلى محتوى خارجي، وهو مفيد لتوزيع الحمل والحماية.
واحدة من أكبر الفوائد هي أن سيرفرك يمكنه التعامل مع طلبات من مصادر/نطاقات متعددة حسب الحاجة، بدلاً من سيرفر ويب واحد يعمل على المنفذين 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 تلقائيًا لنطاقاتك.
الخاتمة
مبروك، لقد قمت بإعداد بروكسي عكسي بنجاح لموقع ويب أو سيرفر ألعاب (أو كلاهما :))، مما يوفر لك تحسينات متعددة في الأمان، الموثوقية والأداء. لأي أسئلة أو مساعدة إضافية، لا تتردد في التواصل مع فريق الدعم لدينا، المتوفر يوميًا لمساعدتك! 🙂