nginx forward proxy

بروكسي إعادة توجيه nginx هو خادم nginx مُعدّ لترحيل الطلبات الصادرة للعميل إلى وجهات خارجية، بحيث يعمل بالنيابة عن العميل بدلاً من العمل بالنيابة عن خادم المصدر. يشرح هذا الدليل إنشاء بروكسي إعادة توجيه nginx عامل لكل من HTTP وHTTPS، واختباره باستخدام curl، وإضافة التحكم بالوصول، وربطه بمجموعة سكنية حين لا يكفي IP لخادم واحد.

في النهاية، سيكون لديك إعداد قابل للتشغيل لبروكسي إعادة توجيه nginx وفهم واقعي للمرحلة التي لا يعود فيها nginx وحده الأداة المناسبة.

DataImpulse مزود بروكسيات أخلاقي يقدّم أكثر من 90 مليون عنوان IP سكني ومحمول ومن مراكز البيانات في 195 دولة. ويستخدم نموذج الدفع بحسب الاستخدام بدءاً من 1 دولار لكل GB مع حركة مرور لا تنتهي صلاحيتها، ويُستخدم في تجريف الويب والتحقق من الإعلانات ومراقبة الأسعار وأبحاث السوق وإدارة الحسابات المتعددة.

حقائق أساسية

  • بروكسي إعادة توجيه nginx: يستطيع nginx القياسي ترحيل HTTP العادي باستخدام كتلة خادم proxy_pass، لكن إنشاء نفق HTTPS عبر أسلوب CONNECT يتطلب تجميع الوحدة الخارجية ngx_http_proxy_connect_module.
  • أفضل نوع بروكسي: بروكسيات سكنية دوارة تستخدم عناوين IP حقيقية للمستهلكين وتتجاوز الاكتشاف.
  • السعر: بدءاً من 1 دولار لكل GB، والدفع بحسب الاستخدام، مع حركة مرور لا تنتهي صلاحيتها ومن دون اشتراك.
  • التغطية: أكثر من 90 مليون عنوان IP مُستمد أخلاقياً في 195 دولة.
  • الموثوقية: معدل نجاح 99.51%، وتقييم 4.8 من 5 على G2.
  • البروتوكولات والاستهداف: HTTP وHTTPS وSOCKS5، مع تضمين الاستهداف بحسب الدولة.
كيفية توجيه بروكسي إعادة توجيه nginx لحركة مرور العميل

ما الفرق بين بروكسي إعادة التوجيه nginx والبروكسي العكسي؟

يوضع بروكسي إعادة التوجيه أمام العملاء ويوجّه طلباتهم إلى الخارج نحو أي وجهة، بينما يوضع البروكسي العكسي أمام الخوادم ويقبل الطلبات الواردة نيابة عنها. اتجاه حركة المرور هو الفرق كله.

تذكّر هذه الملاحظة، لأن معظم دروس nginx تصف الحالة العكسية:

  • بروكسي إعادة التوجيه. يُعد العميل لإرسال حركة المرور عبره، مما يخفي العميل عن الهدف. وهذا ما تضبطه باستخدام curl -x أو حقل البروكسي في المتصفح.
  • البروكسي العكسي. يتصل العميل بصورة عادية باسم مضيف عام، ويوجّه nginx الطلب إلى مجموعة خلفية وراءه، ولا يعلم العميل بوجود بروكسي.

للمزيد من المقارنة، راجع دليلنا حول البروكسي العكسي مقابل بروكسي إعادة التوجيه. ويتناول بقية هذا المقال حالة إعادة التوجيه فقط.

ما الذي تحتاجه قبل البدء؟

تحتاج إلى خادم Linux مزود بعنوان IP عام، مع تثبيت nginx، ولـ HTTPS تحتاج إلى إصدار من nginx يتضمن وحدة CONNECT. يعمل توجيه HTTP العادي على أي nginx قياسي.

تحقق مما إذا كان الملف التنفيذي لديك يدعم CONNECT بالفعل:

nginx -V 2>&1 | grep -o proxy_connect
# empty output means the module is not compiled in

لا يملك nginx القياسي توجيهاً لأسلوب HTTP CONNECT الذي يتطلبه إنشاء نفق HTTPS، لذلك لا تستطيع المتصفحات وcurl إنشاء نفق TLS عبر إصدار غير معدّل. لإضافته، طبّق الرقعة وأعد تجميع nginx باستخدام ngx_http_proxy_connect_module المفتوحة المصدر:

git clone https://github.com/chobits/ngx_http_proxy_connect_module
cd nginx-1.27.0
patch -p1 < ../ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_102101.patch
./configure --add-module=../ngx_http_proxy_connect_module
make && make install

طابق ملف الرقعة مع إصدار nginx لديك، إذ يسرد مستودع الوحدة الرقعة المتوافقة مع كل إصدار.

كيف تعد بروكسي إعادة توجيه nginx خطوة بخطوة؟

عرّف كتلة خادم مخصصة تستمع على منفذ بروكسي، وتضبط محلل DNS، وتوجّه كل طلب إلى المضيف الذي طلبه العميل. ابدأ بـ HTTP العادي، ثم أضف توجيهات CONNECT لـ HTTPS.

هذا إعداد بسيط لاستخدام nginx كبروكسي إعادة توجيه لحركة مرور HTTP:

server {
    listen 8888;
    resolver 1.1.1.1 ipv6=off;

    location / {
        proxy_pass http://$http_host$request_uri;
        proxy_set_header Host $http_host;
        proxy_buffers 256 4k;
    }
}

سطر resolver مهم لأن nginx يحل اسم المضيف الهدف الديناميكي وقت الطلب. وسّع الآن الكتلة نفسها لإنشاء نفق HTTPS بأسلوب CONNECT. يفعّل هذا المثال لبروكسي إعادة توجيه nginx عبر HTTPS أسلوب CONNECT ويقصره على منافذ TLS القياسية:

server {
    listen 8888;
    resolver 1.1.1.1 ipv6=off;

    proxy_connect;
    proxy_connect_allow            443 563;
    proxy_connect_connect_timeout  10s;
    proxy_connect_read_timeout     10s;
    proxy_connect_send_timeout     10s;

    location / {
        proxy_pass http://$http_host$request_uri;
        proxy_set_header Host $http_host;
    }
}

بروكسي إعادة التوجيه المفتوح مصدر خطر، لذا اقصره على العملاء المعروفين. وإدراج عناوين IP المسموح بها هو أبسط أسلوب للتحكم:

location / {
    allow 198.51.100.0/24;
    deny  all;
    proxy_pass http://$http_host$request_uri;
}

للوصول القائم على بيانات الاعتماد بدلاً من قواعد IP، اربط nginx بطبقة مصادقة. يشرح دليلنا حول مصادقة البروكسي أسلوب اسم المستخدم وكلمة المرور ومصافحة HTTP 407 المرتبطة به.

كيف تتحقق من عمل بروكسي إعادة توجيه nginx وتعالج الأخطاء الشائعة؟

وجّه curl إلى البروكسي باستخدام العلامة -x واطلب خدمة تعرض عنوان IP، فاستجابة تعرض عنوان IP العام لخادم البروكسي تؤكد مرور حركة المرور عبره. اختبر HTTP وHTTPS كلّاً على حدة.

curl -x http://203.0.113.10:8888 http://httpbin.org/ip
curl -x http://203.0.113.10:8888 https://httpbin.org/ip

أضف تنسيق سجل كي ترى كل طلب مُوجّه وهدفه في المنبع أثناء تصحيح الأخطاء:

log_format proxy '$remote_addr [$time_local] '
                 '"$request" $status $body_bytes_sent '
                 'upstream=$upstream_addr';
access_log /var/log/nginx/forward_proxy.log proxy;

عند فشل اختبار، راجع الأسباب المعتادة:

  • يعيد HTTPS الرمز 400 أو يتوقف. لم تُجمّع وحدة CONNECT، أو أن proxy_connect مفقود. أعد التحقق باستخدام nginx -V.
  • أخطاء 502 أو حل الأسماء. توجيه resolver غير موجود أو يشير إلى خادم DNS لا يمكن الوصول إليه.
  • الرمز 403 للعملاء المسموحين. عنوان IP الطالب خارج نطاق allow لديك.
  • 407 Proxy Authentication Required. يتوقع المنبع بيانات اعتماد، راجع خطأ HTTP 407.

كيف تربط nginx بمجموعة بروكسيات سكنية؟

اربط nginx ببروكسي في المنبع عبر توجيه حركة مروره إلى بوابة سكنية تحمل ترويسة Proxy-Authorization. هذا هو الجسر الذي يحول عنوان IP ثابتاً لخادم واحد إلى وصول لمجموعة دوارة من عناوين IP الحقيقية.

تخيّل التصميم بوصفه بنية بروكسي من 3 طبقات، إذ إن تسمية الطبقات تبقي حدود الثقة والتدوير واضحة:

  • الطبقة 1، العميل. النص البرمجي أو المتصفح لديك، مُعد باستخدام -x لاستعمال nginx.
  • الطبقة 2، بروكسي إعادة توجيه nginx. تحكم مركزي وتسجيل وقواعد وصول على عنوان IP واحد تملكه.
  • الطبقة 3، المجموعة السكنية. تدوير واستهداف جغرافي عبر عناوين IP حقيقية كثيرة، وهو ما لا يستطيع nginx توفيره بمفرده.

يبدو التسليم الأدنى إلى بوابة البروكسيات السكنية كما يلي، حيث إن رمز Basic هو ترميز base64 لبيانات login:password:

server {
    listen 8890;

    location / {
        proxy_pass http://gw.dataimpulse.com:823;
        proxy_set_header Proxy-Authorization "Basic bG9naW46cGFzc3dvcmQ=";
        proxy_set_header Host $http_host;
    }
}

كن واقعياً بشأن المقايضة: للتدوير البحت، توجيه عميلك مباشرة إلى gw.dataimpulse.com:823 أبسط من إضافة قفزة nginx. ولا يستحق الإعداد المتسلسل استخدامه إلا حين تريد nginx في المنتصف للتسجيل المركزي أو التخزين المؤقت أو التحكم المشترك بالوصول عبر فريق.

أي إعداد بروكسي يناسب مهمتك؟

استخدم بروكسي إعادة توجيه nginx وحده عندما تتحكم في العملاء ويكفي عنوان IP واحد للخروج، وأضف مجموعة سكنية عندما تحتاج إلى التدوير أو التغطية الجغرافية أو مقاومة الحظر. يتوقف القرار على عدد عناوين IP المتميزة التي تتطلبها مهمتك.

فيما يلي مصفوفة القرار بعبارات واضحة:

  • استخدم بروكسي إعادة توجيه nginx وحده عندما تركز حركة المرور الصادرة، أو ترشّح الطلبات أو تسجّلها، أو تشارك عنوان IP واحداً للخروج ضمن فريق داخلي.
  • تجنب nginx وحده عندما يحد الهدف من المعدل أو يحظر حسب IP، أو عندما تحتاج لأن تنشأ الطلبات من دول عديدة، إذ إن nginx يوجّه من عنوان IP لخادم واحد ولا يستطيع التدوير.

تعرض المقارنة أدناه الاثنين جنباً إلى جنب.

العامل بروكسي إعادة توجيه nginx خدمة بروكسيات سكنية
عناوين IP للخروج عنوان IP واحد للخادم دوارة، أكثر من 90 مليون عنوان IP
الاستهداف الجغرافي حيث يوجد الخادم 195 دولة، مع تضمين الاستهداف بحسب الدولة
مقاومة الحظر منخفضة، يسهل حظر عنوان IP واحد مرتفعة، عناوين IP لمستخدمين حقيقيين تتدوّر
جهد الإعداد إنشاء nginx وترقيعه وإعداده بيانات اعتماد البوابة، دون إنشاء
الأفضل لـ الخروج المركزي والتسجيل التجريف والاختبار والتحقق من الإعلانات

للأتمتة الأثقل، يغطي دليلنا حول أفضل ممارسات تجريف الويب التدوير والتحكم بالمعدل، بينما تناسب بروكسيات مراكز البيانات أو البروكسيات المحمولة المهام التي تكون فيها التكلفة أو عناوين IP لشبكات الاتصالات أهم من دقة الطابع السكني.

ما قيود ومخاطر بروكسي إعادة توجيه nginx؟

لبروكسي إعادة توجيه nginx قيود فعلية: فهو يوجّه من عنوان IP واحد، ودعم HTTPS غير مدمج، كما أن النسخة المفتوحة خطر أمني. معرفة ذلك تبقي التوقعات واقعية.

  • عنوان IP واحد، دون تدوير. يخرج كل طلب من عنوان الخادم نفسه، لذلك فإن أي هدف يقيّد بحسب IP سيخفّض معدلك أو يحظرك سريعاً.
  • يتطلب HTTPS إصداراً مخصصاً. يعتمد إنشاء نفق CONNECT على وحدة خارجية ورقعة متوافقة مع الإصدار، مما يعقد الترقيات.
  • خطر البروكسي المفتوح. من دون قواعد السماح أو المصادقة، يستطيع أي شخص يعثر على المنفذ توجيه حركة المرور عبر خادمك، مما يعرّضك لإساءة الاستخدام والمخاطر القانونية.
  • لا توجد تغطية جغرافية. موقع الخروج ثابت حيث يعمل الخادم، لذا يحتاج الاختبار الخاص بمناطق محددة إلى خوادم أكثر، كما أنك تتحمل جميع أعمال الترقيع والمراقبة وضمان وقت التشغيل.

nginx ليس منتجاً من DataImpulse، ولا تبيع DataImpulse واجهة API مُدارة للتجريف أو بروكسي ويب مجانياً. حين يناسبك nginx شغّله بنفسك، وحين تحتاج إلى التوسع، تستمد DataImpulse عناوين IP الخاصة بها بوصفها بروكسيات أخلاقية من مستخدمين يوافقون على ذلك ويحصلون على مقابل.

بروكسي إعادة التوجيه مقابل البروكسي العكسي في لمحة

الأسئلة الشائعة

هل يمكن أن يعمل nginx كبروكسي إعادة توجيه مباشرة؟

يمكنه توجيه HTTP العادي باستخدام كتلة خادم proxy_pass في أي إصدار قياسي. يتطلب إنشاء نفق HTTPS عبر أسلوب CONNECT تجميع الوحدة الخارجية ngx_http_proxy_connect_module، وهي ليست جزءاً من nginx الافتراضي.

ما الفرق بين بروكسي إعادة توجيه nginx ومدير بروكسي nginx؟

بروكسي إعادة توجيه nginx هو إعداد خام تكتبه بنفسك، بينما مدير بروكسي nginx واجهة ويب منفصلة موجهة غالباً إلى مضيفي البروكسي العكسي وSSL. لا يوفر مدير البروكسي ميزة عامة لبروكسي إعادة التوجيه أو تدوير IP.

لماذا لا يستطيع بروكسي إعادة توجيه nginx تدوير عناوين IP؟

يوجّه nginx حركة المرور من عنوان IP العام الوحيد للخادم الذي يعمل عليه. يتطلب التدوير عبر عناوين كثيرة مجموعة من عناوين IP الحقيقية، وهو ما تقدمه خدمة البروكسيات السكنية بدلاً من نسخة nginx واحدة.

هل من الآمن تشغيل بروكسي إعادة توجيه nginx مفتوح؟

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

كيف أربط nginx ببروكسي سكني؟

وجّه حركة مرور nginx إلى البوابة السكنية وأرفق ترويسة Proxy-Authorization التي تحمل اسم المستخدم وكلمة المرور بترميز base64. وفي حالات كثيرة، يكون توجيه العميل مباشرة إلى البوابة أبسط ما لم تحتج nginx للتسجيل أو التحكم المشترك.

متى لا يكون DataImpulse الخيار المناسب؟

إذا كنت تحتاج إلى بروكسيات ISP ثابتة، أو واجهة API مُدارة بالكامل للتجريف، أو الوصول إلى المواقع المصرفية والحكومية، فإن DataImpulse ليس الأداة المناسبة. يركز على بروكسيات سكنية ومحمولة ومن مراكز البيانات دوارة لجمع البيانات العامة والوصول إلى المحتوى.

هل تحتاج إلى تدوير لا يستطيع nginx توفيره؟

عندما لا يكفي IP لخادم واحد، تضيف DataImpulse أكثر من 90 مليون عنوان IP سكني ومحمول ومن مراكز البيانات دوار في 195 دولة، مع الدفع بحسب الاستخدام بدءاً من 1 دولار لكل GB وحركة مرور لا تنتهي صلاحيتها. أنشئ حساباً للحصول على بيانات اعتماد البوابة وتوجيه nginx أو عميلك مباشرة إلى المجموعة.


Share article: