Create flask app & configure nginx - Deploy Flask application on EC2 p.4
جدول المحتويات:
- المتطلبات الأساسية
- باستخدام Nginx كوكيل عكسي
- تمرير طلب رؤوس
- تكوين Nginx كبروكسي عكسي إلى خادم بروكسي بخلاف HTTP
- خيارات وكيل عكس Nginx الشائعة
- استنتاج
الوكيل العكسي هو خدمة تأخذ طلب العميل ، وترسل الطلب إلى واحد أو أكثر من الخوادم الوكيلة ، وتجلب الاستجابة ، وتقدم استجابة الخادم إلى العميل.
بسبب أدائها وقابليتها للتوسعة ، غالبًا ما يتم استخدام NGINX كوكيل عكسي لخوادم HTTP وغير HTTP. تكوين الوكيل العكسي النموذجي هو وضع Nginx أمام تطبيقات Node.js أو Python أو Java.
يمنحك استخدام Nginx كبديل عكسي العديد من المزايا الإضافية:
- Load Balancing - يمكن لـ Nginx إجراء موازنة تحميل لتوزيع طلبات العملاء عبر الخوادم الوكيلة ، مما يعمل على تحسين الأداء وإمكانية التوسع والموثوقية. التخزين المؤقت - باستخدام Nginx كوكيل عكسي ، يمكنك تخزين نسخ الصفحات المعروضة مسبقًا لتسريع أوقات تحميل الصفحة. إنه يعمل عن طريق تخزين المحتوى الذي تم استلامه من استجابات الخوادم الوكيلة مؤقتًا واستخدامه للرد على العملاء دون الحاجة إلى الاتصال بالخادم الوكيل للحصول على نفس المحتوى في كل مرة. SSL Termination - يمكن أن يعمل Nginx كنقطة نهاية SSL للاتصالات مع العملاء. سيقوم بمعالجة وفك تشفير اتصالات SSL الواردة وتشفير استجابات الخادم الوكيل. الضغط - إذا لم يرسل الخادم الوكيل الاستجابات المضغوطة ، يمكنك تكوين Nginx لضغط الاستجابات قبل إرسالها إلى العملاء. تخفيف هجمات هجمات DDoS - يمكنك قصر الطلبات الواردة وعدد الاتصالات لكل عنوان IP فردي على قيمة عادية للمستخدمين العاديين. يسمح لك Nginx أيضًا بحظر أو تقييد الوصول استنادًا إلى موقع العميل وقيمة رؤوس الطلبات مثل "User-Agent" و "Referer".
توضح هذه المقالة الخطوات المطلوبة لتكوين Nginx كبديل عكسي.
المتطلبات الأساسية
نحن نفترض أن لديك Nginx مثبتًا على خادم Ubuntu أو CentOS أو Debian.
باستخدام Nginx كوكيل عكسي
لتكوين Nginx كوكيل عكسي لخادم HTTP ، افتح ملف تكوين كتلة خادم المجال وحدد موقعًا وخادمًا وكيلًا بداخله:
server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:8080; } }
يتم تعيين عنوان URL للخادم
proxy_pass
باستخدام توجيه
proxy_pass
ويمكنه استخدام
HTTP
أو
HTTPS
كبروتوكول أو اسم مجال أو عنوان IP ومنفذ اختياري و URI كعنوان.
يطلب التكوين أعلاه من Nginx تمرير جميع الطلبات إلى موقع
/app
إلى الخادم الوكيل على
http://127.0.0.1:8080
.
/etc/nginx/sites-available
، بينما في CentOS في دليل
/etc/nginx/conf.d
.
لتوضيح كيفية عمل توجيهات
location
و
proxy_pass
بشكل أفضل ، دعنا نأخذ المثال التالي:
server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:8000/wordpress/; } }
إذا قام زائر بالوصول إلى
http://example.com/blog/my-post
، فسوف يقوم Nginx بإرسال هذا الطلب إلى
http://node1.com:8000/wordpress/my-post
.
عندما يحتوي عنوان الخادم الوكيل على URI ، (
/wordpress/
) ، يتم استبدال URI للطلب الذي تم تمريره إلى الخادم الوكيل بواسطة URI المحدد في التوجيه. إذا تم تحديد عنوان الخادم الوكيل دون URI ، يتم تمرير URI للطلب الكامل إلى الخادم الوكيل.
تمرير طلب رؤوس
عندما يقوم Nginx بتقديم طلب ، فإنه يقوم تلقائيًا بتعريف حقلين للرأس في الطلبات التي تم إرسالها من العميل
Host
Connection
ويزيل الرؤوس الفارغة. يتم تعيين
Host
إلى متغير
$proxy_host
، ويتم تعيين
Connection
للإغلاق.
لضبط أو ضبط رؤوس الاتصالات التي يتم الاتصال بها ، استخدم توجيه
proxy_set_header
، متبوعًا بقيمة الرأس. يمكنك العثور على قائمة بجميع رؤوس الطلبات المتاحة والقيم المسموح بها هنا. إذا كنت ترغب في منع مرور الرأس إلى الخادم الوكيل ، فاضبطه على سلسلة فارغة
""
.
في المثال التالي ، نقوم بتغيير قيمة حقل رأس
Host
إلى
$host
وإزالة حقل رأس
Accept-Encoding
عن طريق تعيين قيمته إلى سلسلة فارغة.
location / { proxy_set_header Host $host; proxy_set_header Accept-Encoding ""; proxy_pass http://localhost:3000; }
كلما قمت بتعديل ملف التكوين ، يجب عليك إعادة تشغيل خدمة Nginx لتصبح التغييرات نافذة المفعول.
تكوين Nginx كبروكسي عكسي إلى خادم بروكسي بخلاف HTTP
لتكوين Nginx كبديل عكسي لخادم بروكسي بخلاف HTTP ، يمكنك استخدام التوجيهات التالية:
-
fastcgi_pass- الوكيل العكسي لخادم FastCGI.uwsgi_pass- الوكيل العكسي لخادم uwsgi.scgi_pass- الوكيل العكسيscgi_pass.memcached_pass- الوكيل العكسي لخادم Memcached.
أحد الأمثلة الأكثر شيوعًا هو استخدام Nginx كبديل عكسي لـ PHP-FPM:
server { #… other directives location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }
خيارات وكيل عكس Nginx الشائعة
أصبح تقديم المحتوى عبر HTTPS معيارًا في الوقت الحاضر. في هذا القسم ، سنقدم لك مثالًا لتهيئة الوكيل العكسي HTTPS Nginx بما في ذلك المعلمات ورؤوس وكيل Nginx الموصى بها.
location/ { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }
-
proxy_http_version 1.1- يحدد إصدار بروتوكولproxy_http_version 1.1افتراضيًا إلى 1.0. بالنسبة إلى Websockets واتصالاتkeepalive، يلزمك استخدام الإصدار 1.1.proxy_cache_bypass $http_upgrade- يحدد الشروط التي بموجبها لن تؤخذ الاستجابة من ذاكرة التخزين المؤقت.Upgrade $http_upgradeConnection "upgrade"- حقول الحقول هذه مطلوبة إذا كان التطبيق الخاص بك يستخدم Websockets.Host $host- يحتوي متغير$hostبترتيب الأسبقية التالي على: اسم المضيف من سطر الطلب أو اسم المضيف من حقل رأس طلبHostأو اسم الخادم المطابق لطلب.X-Real-IP $remote_addr-X-Real-IP $remote_addrتوجيه عنوان IP الخاص بالزائر الحقيقي إلى الخادم الوكيل.X-Forwarded-For $proxy_add_x_forwarded_for- قائمة تحتوي على عناوين IP لكل خادم تم توكيل العميل من خلاله.X-Forwarded-Proto $scheme- عند استخدامه داخل كتلة خادم HTTPS ، تتم إعادة كتابة كل استجابة HTTP من الخادم الوكيل إلىX-Forwarded-Host $host- يحدد المضيف الأصلي الذي طلبه العميل.X-Forwarded-Port $server_port- يحدد المنفذ الأصلي الذي طلبه العميل.
استنتاج
لقد تعلمت كيفية استخدام Nginx كوكيل عكسي. لقد أوضحنا لك أيضًا كيفية تمرير معلمات إضافية إلى الخادم وتعديل وتعيين حقول رأس مختلفة في الطلبات التي يتم تقديمها.
إنجن إكسما رد الفعل العكسي؟ مستخدمو IPhone 3GS راضٍ جدًا - استطلاع الرأي
وجد استطلاع جديد للرأي أن 99 في المائة من 200 مشارك أبدوا رضاهم عن الجهاز. إنها ليست ردة فعل عكسية بقدر ما هي Lovefest.
وكيل شركة MySQL يقول إن Oracle يجب أن تبيع قاعدة بيانات
يجب على أوراكل بيع قاعدة بيانات MySQL لقاعدة البيانات مفتوحة المصدر إلى الجهة الخارجية المناسبة ، أحد مؤسسيها ومنشئها Michael "Monty" Widenius وقال في أحد المدوّنات: b> b>> يجب على أوراكل أن تحلّ مشاكل القلق بشأن استحواذها على شركة صن مايكروسيستمز عن طريق بيع MySQL قاعدة بيانات مفتوحة المصدر إلى طرف ثالث مناسب ، كما قال أحد مؤسسيها ومُنشئها مايكل مونتي Widenius.
باستخدام ساعة أبل في اتجاه التاج العكسي: إيجابيات وسلبيات
هل يجب عليك استخدام Apple Watch في اتجاه عكسي؟ نقول لك إيجابيات وسلبيات.







