البرمجة

تكوين Nginx للسماح بالوصول من عنوان IP الأصلي مع استخدام خادم وكيل

عند استخدام خادم الويب Nginx، يعد دعم القيود على عناوين الآي بي باستخدام بنية allow وdeny أمرًا مفيدًا لتحديد الوصول إلى الموارد. ومع ذلك، يطرأ تحدي عند استخدام خوادم وكلاء عكسية حيث يتم توجيه حركة المرور عبر هذه الوكلاء، مما يؤدي إلى تغيير عنوان الآي بي الذي يظهر في طلبات الويب. هذا يعني أنه لا يمكن الاعتماد على عنوان الآي بي الوارد في الطلبات عند استخدام بنية allow لتحديد الوصول.

لحل هذه المشكلة، يمكن استخدام الهيدرات المرسلة من قبل الوكلاء عكسية لتحديد عنوان الآي بي الأصلي للطلب. على سبيل المثال، عند استخدام وكيل عكسي مثل Nginx نفسه أو غيره من الحلول، يتيح استخدام هيدر “X-Real-IP” الوصول إلى العنوان الأصلي للآي بي.

لتكوين Nginx للسماح بالوصول فقط لطلبات ذات عنوان آي بي محدد، يمكن تحقيق ذلك عبر مثل هذا التكوين:

nginx
server { listen 80; server_name example.com; set_real_ip_from 192.168.1.1; # عنوان الآي بي المسموح به real_ip_header X-Real-IP; location / { allow 192.168.1.1; deny all; # باقي إعدادات خدمة الويب الخاصة بك } }

في هذا المثال، تم استخدام set_real_ip_from لتحديد عنوان الآي بي المسموح به، و real_ip_header لتحديد هيدر الويب الذي يحتوي على العنوان الأصلي. ثم يتم استخدام بنية allow و deny في قسم الموقع لتحديد الوصول بناءً على الآي بي المستخدم.

المزيد من المعلومات

عند التعامل مع خوادم Nginx وضبط الإعدادات للسماح بالوصول لعناوين IP معينة وحظر الباقي، يصبح الأمر معقدًا عند استخدام خوادم وكيلة (reverse proxy) حيث يمكن أن يتغير عنوان IP الفعلي للعميل نتيجة لتمرير الطلبات عبر البروكسي.

للتغلب على هذا التحدي، يمكنك استخدام متغيرات Nginx الخاصة مثل X-Forwarded-For التي تحتوي على عناوين IP الفعلية للعملاء عند استخدام البروكسي. يمكنك تكوين Nginx لقراءة هذا الرأس واستخدامه للتحقق من العناوين.

في البداية، قم بتضمين القطعة التالية في قسم الـ server block الخاص بك:

nginx
set_real_ip_from 192.168.1.1; # IP of your reverse proxy real_ip_header X-Forwarded-For;

هذا يعلم Nginx أن يستخدم عنوان IP المعرف من X-Forwarded-For كعنوان IP فعلي. بعد ذلك، يمكنك استخدام allow و deny كما هو متعارف عليه:

nginx
location / { allow 192.168.1.1; deny all; # المزيد من الإعدادات... }

هنا يتم السماح للوصول فقط لعنوان IP المعرف من خلال X-Forwarded-For، ويتم حظر جميع الطلبات الأخرى.

يُفضل أيضًا تحقق من موثوقية عناوين IP والتحقق من صحة عناوين المصدر، لتجنب أي هجمات محتملة. عمومًا، يجب دائمًا إجراء اختبارات شاملة للتأكد من أن الإعدادات تعمل كما هو متوقع بيئات الإنتاج.

زر الذهاب إلى الأعلى