พร็อกซีของ Google Cloud Reverse สำหรับการโฮสต์ไซต์คงที่ส่วนตัวโดยใช้วัตถุที่เก็บข้อมูลของ Google Cloud ส่วนตัว
คุณต้องการให้บริการไซต์คงที่โดยใช้ถัง GCS ของคุณ แต่คุณต้องการ จำกัด การเข้าถึงพวกเขา
บริการไมโครพร็อกซีย้อนกลับนี้จะทำหน้าที่เป็นเซิร์ฟเวอร์ HTTP อย่างง่ายสำหรับอาร์เรย์ของถัง GCS จากนั้นคุณสามารถใช้วิธีการที่เหมาะสมเพื่อ จำกัด การเข้าถึง เช่นวางไว้ด้านหลัง Nginx, Caddy หรือ VPN
การเข้าถึงวัตถุ GCS ส่วนตัวผ่านเบราว์เซอร์ต้องใช้โทเค็นพิเศษที่เข้ารหัสลงใน URL สิ่งนี้จะทำลายไซต์คงที่มากที่สุด (ถ้าไม่ใช่ทั้งหมด) เนื่องจากพวกเขาไม่สามารถสร้างโทเค็นเหล่านี้หรือทำนาย URI ของสินทรัพย์ใด ๆ ที่ร้องขอหรือลิงก์ไปยัง อย่างไรก็ตามการสร้างวัตถุจัดเก็บข้อมูลสาธารณะหมายความว่าไม่มีวิธีที่จะ จำกัด การเข้าถึง
พร็อกซีย้อนกลับนี้จะให้บริการวัตถุส่วนตัวผ่าน HTTP ตามที่คาดไว้ (ญาติ), URI และจะไม่ จำกัด การเข้าถึงวัตถุเหล่านี้เลย อย่างไรก็ตามด้วยการวางเซิร์ฟเวอร์นี้ไว้เบื้องหลังพร็อกซีย้อนกลับอื่นเช่น Nginx หรือวางไว้ใน VPN คุณจะสามารถควบคุมการเข้าถึงในแบบที่เหมาะสมกับความต้องการของคุณ
NB (หากคุณมี
gcloud info
ที่ติดตั้ง GCloud SDK ในเชลล์ของคุณเพื่อตรวจสอบว่าคุณเข้าสู่ระบบและมีชุดรหัสโครงการที่ถูกต้อง)
TARGET_BUCKETS
env var คาดว่าจะมีรายการที่คั่นด้วยเครื่องหมายจุลภาคของถังเช่น:
TARGET_BUCKETS='bucket-one,bucket-two'
เซิร์ฟเวอร์จะโยนเว้นแต่จะมีการกำหนด target_buckets หนึ่งรายการขึ้นไป
การตั้งค่า HISTORY
env var เป็นจริงจะเริ่มต้นเซิร์ฟเวอร์ในโหมดประวัติเพื่อรองรับสปาที่ดีขึ้น มันจะตอบกลับด้วยไฟล์รูท Buckets index.html
สำหรับเส้นทางใด ๆ ที่ไม่มีนามสกุลไฟล์
npm install
TARGET_BUCKETS="bucket-name" npm start
เมื่อเซิร์ฟเวอร์เปิดใช้งานการเข้าถึงวัตถุส่วนตัวในถังควรทำการร้องขอให้:
<proxy-host>:<proxy-port>/<bucket-name>/<file-path>
หากพา ธ ไฟล์มีอยู่ในถังและเซิร์ฟเวอร์มีการอ่านก่อนการอ่านพร็อกซีย้อนกลับจะส่งเนื้อหาเป็นการตอบกลับ หากด้วยเหตุผลใดก็ตามไฟล์ไม่สามารถเรียกคืนได้จากที่เก็บข้อมูลเซิร์ฟเวอร์จะส่งคืน 404
หากถังที่ร้องขอไม่ได้อยู่ในรายการของ target_buckets จะส่งคืน 403 โดยไม่คำนึงถึงถังจริงหรือไม่
เฉพาะวิธีการขอ GET เท่านั้นที่ได้รับการสนับสนุนในปัจจุบัน
การมีโหมด Bucket เดียวหมายความว่าไม่จำเป็นต้องนำหน้าคำขอทั้งหมดด้วยเส้นทาง Bucket-Name ดังนั้นการร้องขอ <proxy-host>:<proxy-port>/<file-path>
จะขอเส้นทางไฟล์จากที่เก็บเป้าหมายเดียว
โครงการนี้ใช้ไมโครซึ่งหมายความว่าเราจะใช้เครื่องมือ Micro-Dev ที่ยอดเยี่ยมในการพัฒนา
TARGET_BUCKETS="bucket-name" npm run dev
ADC ใช้บัญชีบริการเริ่มต้นที่คำนวณเอ็นจิ้นเครื่องยนต์ Kubernetes เครื่องยนต์แอพและฟังก์ชั่นคลาวด์ให้สำหรับแอพพลิเคชั่นที่ทำงานบนบริการเหล่านั้น
จากการตั้งค่าการรับรองความถูกต้องสำหรับแอปพลิเคชันการผลิตเซิร์ฟเวอร์เป็นเซิร์ฟเวอร์
เนื่องจากข้างต้นฉันขอแนะนำให้คุณใช้เครื่องยนต์คำนวณเครื่องยนต์ Kubernetes หรือเครื่องยนต์แอพที่จะจัดการการรับรองความถูกต้องสำหรับคุณ
ฉันได้จัดหา DockerFile สำหรับการเริ่มต้นโดยไม่จำเป็นต้องติดตั้งโหนด สิ่งนี้จะไม่ทำงานในพื้นที่เนื่องจากไม่ได้ตั้งค่าการรับรองความถูกต้องใด ๆ กับ Google Cloud SDK
อย่างไรก็ตามเมื่อนำไปใช้กับการตรวจสอบอินสแตนซ์อินสแตนซ์ VM ของ Engine Compute สำหรับคุณ หากต้องการดูวิธีการปรับใช้อิมเมจนักเทียบท่าบนอินสแตนซ์ VM ให้ตรวจสอบคู่มือนี้ อย่าลืมตั้งค่าตัวแปรสภาพแวดล้อม TARGET_BUCKETS
ซึ่งสามารถทำได้โดยทำตามคู่มือนี้