Google Cloud Storage Proxy. لاستضافة مواقع ثابتة خاصة باستخدام كائنات تخزين السحابة الخاصة بـ Google.
تريد تقديم مواقع ثابتة باستخدام دلاء GCS الخاصة بك ، لكنك تريد تقييد الوصول إليها.
ستتصرف هذه الخدمة العكسية للوكالة الصغيرة كخادم HTTP بسيط لمجموعة من دلاء GCS. ثم يمكنك استخدام أي طريقة مناسبة لتقييد الوصول إليها. على سبيل المثال ، وضعه خلف nginx ، caddy أو VPN.
يتطلب الوصول إلى كائنات GCS الخاصة عبر المتصفح رموزًا خاصة مشفرة في عنوان URL. سيؤدي ذلك إلى كسر معظم المواقع الثابتة (إن لم يكن كلها) ، حيث لا يمكنها إنشاء هذه الرموز أو التنبؤ بـ URI من أي أصول تطلبها أو روابط إليها. ومع ذلك ، فإن جعل كائن تخزين عام يعني أنه لا توجد طريقة لتقييد الوصول إليه.
سيخدم هذا الوكيل العكسي كائنًا خاصًا عبر HTTP على المتوقع (النسبي) ، URI ولن يقيد الوصول إلى هذه الكائنات على الإطلاق. ومع ذلك ، من خلال وضع هذا الخادم خلف وكيل عكسي آخر ، مثل Nginx أو وضعه على VPN ، ستتمكن من التحكم في الوصول بطريقة تناسب احتياجاتك.
NB (إذا كان لديك GCLOUD SDK مثبتة
gcloud info
في قذيتك للتحقق من تسجيل الدخول ، والحصول على مجموعة معرف المشروع الصحيحة).
يتوقع TARGET_BUCKETS
env var قائمة مفصولة بفاصلة من الدلاء ، على سبيل المثال:
TARGET_BUCKETS='bucket-one,bucket-two'
سيتم رمي الخادم ما لم يتم تعريف واحد أو أكثر من Target_Buckets.
سيؤدي تعيين HISTORY
Env var إلى True إلى بدء تشغيل الخادم في وضع التاريخ ، للحصول على دعم أفضل للسبا. سوف يستجيب مع ملف index.html
لدلو الجذر لأي مسار لا يحتوي على ملحق ملف.
npm install
TARGET_BUCKETS="bucket-name" npm start
بمجرد تشغيل الخادم ، للوصول إلى كائن خاص في دلو ، يجب تقديم طلب إلى:
<proxy-host>:<proxy-port>/<bucket-name>/<file-path>
إذا كان مسار الملف موجودًا في الدلو ، وكان لدى الخادم مسبقًا لقراءته ، فسيقوم الوكيل العكسي بإرسال محتوياته كاستجابة. إذا لم يتم استرداد الملف لأي سبب من الأسباب ، فسيقوم الخادم بإرجاع 404.
إذا لم يكن الدلو المطلوب في قائمة Target_Buckets ، فسوف يعيد 403 ، بغض النظر عن دلو حقيقي أم لا.
يتم دعم طريقة طلب الحصول فقط حاليًا.
وجود وضع دلو واحد يعني أنه لا توجد حاجة إلى بادئة جميع الطلبات بمسار اسم دلو ، لذا فإن طلب <proxy-host>:<proxy-port>/<file-path>
سيطلب مسار الملف من دلو الهدف الواحد.
يستخدم هذا المشروع Micro ، مما يعني أننا نستخدم أدوات Micro-dev الممتازة ، في التطوير.
TARGET_BUCKETS="bucket-name" npm run dev
تستخدم ADC حساب الخدمة الافتراضية الذي يوفر محرك المحرك ومحرك Kubernetes ومحرك التطبيقات والسحابة ، للتطبيقات التي تعمل على هذه الخدمات.
من إعداد المصادقة للخادم إلى تطبيقات إنتاج الخادم
بسبب ما سبق ، أوصيك باستخدام محرك COMPUTE أو محرك Kubernetes أو محرك التطبيق حيث سيتم التعامل مع المصادقة لك.
لقد قمت بتزويد Dockerfile للبدء دون الحاجة إلى تثبيت العقدة. لن يعمل هذا محليًا لأنه لا يقوم بإعداد أي مصادقة مع Google Cloud SDK.
ومع ذلك ، عند نشر مصادقة مثيل محرك VM Compute. لمعرفة كيفية نشر صورة Docker على مثيل VM ، تحقق من هذا الدليل. لا تنسى تعيين متغير بيئة TARGET_BUCKETS
، والذي يمكن القيام به من خلال اتباع هذا الدليل.