عند استخدام خادم الويب Nginx، يعد دعم القيود على عناوين الآي بي باستخدام بنية allow وdeny أمرًا مفيدًا لتحديد الوصول إلى الموارد. ومع ذلك، يطرأ تحدي عند استخدام خوادم وكلاء عكسية حيث يتم توجيه حركة المرور عبر هذه الوكلاء، مما يؤدي إلى تغيير عنوان الآي بي الذي يظهر في طلبات الويب. هذا يعني أنه لا يمكن الاعتماد على عنوان الآي بي الوارد في الطلبات عند استخدام بنية allow لتحديد الوصول.
لحل هذه المشكلة، يمكن استخدام الهيدرات المرسلة من قبل الوكلاء عكسية لتحديد عنوان الآي بي الأصلي للطلب. على سبيل المثال، عند استخدام وكيل عكسي مثل Nginx نفسه أو غيره من الحلول، يتيح استخدام هيدر “X-Real-IP” الوصول إلى العنوان الأصلي للآي بي.
لتكوين Nginx للسماح بالوصول فقط لطلبات ذات عنوان آي بي محدد، يمكن تحقيق ذلك عبر مثل هذا التكوين:
nginxserver { 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 الخاص بك:
nginxset_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
كما هو متعارف عليه:
nginxlocation / { allow 192.168.1.1; deny all; # المزيد من الإعدادات... }
هنا يتم السماح للوصول فقط لعنوان IP المعرف من خلال X-Forwarded-For
، ويتم حظر جميع الطلبات الأخرى.
يُفضل أيضًا تحقق من موثوقية عناوين IP والتحقق من صحة عناوين المصدر، لتجنب أي هجمات محتملة. عمومًا، يجب دائمًا إجراء اختبارات شاملة للتأكد من أن الإعدادات تعمل كما هو متوقع بيئات الإنتاج.