كيفية إعداد Nginx كوكيل عكسي

دليل لتكوين Nginx كوكيل عكسي، يشرح التثبيت، وإعداد قوائم حظر الخادم، وتوجيه الطلبات إلى الخوادم الخلفية، وإدارة الرؤوس، │ بالإضافة إلى التكوين الاختياري لبروتوكول SSL/TLS من أجل تعزيز الأمان والأداء.

Intermediate

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

فوائد استخدام Nginx كوكيل عكسي

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

1. تثبيت Nginx

إذا لم يكن Nginx مثبتًا بالفعل على الخادم الخاص بك، فيمكنك تثبيته باستخدام مدير الحزم الخاص بنظام التوزيع الخاص بك.

  • لنظامي Ubuntu/Debian: bash sudo apt update sudo apt install nginx
  • بالنسبة لـ CentOS/RHEL/Fedora: bash sudo dnf install nginx # or yum for older versions

بعد التثبيت، قم بتشغيل خدمة Nginx وقم بتمكينها لتبدأ عند التشغيل:

sudo systemctl start nginx
sudo systemctl enable nginx

يمكنك التحقق من تشغيل Nginx بالانتقال إلى http://localhost في متصفح الويب الخاص بك.

2. تحديد موقع ملفات تكوين Nginx

توجد ملفات تكوين Nginx عادةً في /etc/nginx/. عادةً ما يكون ملف التكوين الرئيسي هو nginx.conf. غالبًا ما ستجد sites-available يحتوي على تكوينات المواقع الفردية، والتي يتم بعد ذلك ربطها رمزيًا بـ sites-enabled لتفعيلها.

3. تكوين كتلة الخادم

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

يبدو كتلة الخادم الأساسية للوكيل العكسي كما يلي:

server {
    listen 80; # Nginx listens on port 80 for incoming HTTP requests
    server_name your_domain.com www.your_domain.com; # Replace with your domain name

    location / {
        proxy_pass http://backend_server_ip:port; # Forward requests to your backend server
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

شرح التوجيهات:

  • listen 80;: سيستمع Nginx لطلبات HTTP الواردة على المنفذ 80.
  • server_name: يحدد أسماء النطاقات التي يجب أن يستجيب لها كتلة الخادم هذه.
  • location /: تحدد هذه الكتلة كيفية معالجة الطلبات المطابقة للمسار الجذري (/). يمكنك إنشاء كتل location لمسارات مختلفة (على سبيل المثال، location /api/).
  • proxy_pass: هذا هو التوجيه الأساسي للوكالة العكسية. يطلب من Nginx إعادة توجيه الطلبات إلى عنوان IP ومنفذ الخادم الخلفي المحدد.
  • proxy_set_header: هذه التوجيهات ضرورية لتمرير معلومات العميل الأصلية (مثل عنوان IP والمضيف) إلى الخادم الخلفي، وهو ما قد يكون مفيدًا للتسجيل ومنطق التطبيق.

4. تمكين التكوين

إذا قمت بإنشاء ملف تكوين جديد في sites-available/، فأنت بحاجة إلى تمكينه عن طريق إنشاء رابط رمزي إلى sites-enabled/:

sudo ln -s /etc/nginx/sites-available/my_reverse_proxy /etc/nginx/sites-enabled/

5. اختبار تكوين Nginx

قبل إعادة تشغيل Nginx، احرص دائمًا على اختبار التكوين للتأكد من عدم وجود أخطاء في بناء الجملة:

sudo nginx -t

إذا نجح الاختبار، ستظهر رسالة تشير إلى أن بناء الجملة صحيح وأن الاختبار قد نجح.

6. إعادة تحميل Nginx

لتطبيق التكوين الجديد، أعد تحميل Nginx:

sudo systemctl reload nginx

7. اختبار الوكيل العكسي

افتح متصفح ويب وانتقل إلى http://your_domain.com (أو عنوان IP الخاص بخادمك إذا لم يكن لديك نطاق مُعد). يجب أن يقوم Nginx الآن بتوجيه طلبك إلى الخادم الخلفي، ويجب أن ترى المحتوى الذي يقدمه تطبيقك الخلفي.

يوفر هذا الإعداد الأساسي أساسًا لاستخدام Nginx كوكيل عكسي. يمكنك تخصيصه بشكل أكبر باستخدام ميزات مثل إنهاء SSL/TLS، وموازنة الحمل، والتخزين المؤقت، وقواعد التوجيه الأكثر تقدمًا.