เมื่อคุณอายุมากขึ้นเรื่อย ๆ คุณไม่ต้องการบำรุงรักษาเซิร์ฟเวอร์มากกว่าหนึ่งเครื่องเพื่อโฮสต์ไซต์และบล็อกไม่กี่แห่งเช่นนี้ ตรวจสอบดูว่า ให้เข้ารหัสใบรับรองต่ออายุแม้ในไซต์เก่าที่ล้าสมัยและอื่นๆ อย่างน้อยมันก็เป็นจริงสำหรับฉัน :) และฉันตัดสินใจย้ายไปยังแพลตฟอร์มที่มีการจัดการเต็มรูปแบบ สำหรับการดูครั้งแรกที่เก็บข้อมูลบนคลาวด์ของ Google เป็นวิธีแก้ปัญหาที่ดีพอ แต่หลังจากสร้างบัคเก็ตและทำบทช่วยสอนที่สมบูรณ์ ฉันเข้าใจว่าการเปิดใช้งาน https นั้นไม่ง่ายเลย (โดยใช้โหลดบาลานซ์และอื่น ๆ ) ไม่ถูก (มันâà0.025 USD ต่อ 5 กฎแรกต่อชั่วโมง =>18 USD ต่อเดือน) เพิ่งใช้ Google Cloud Run กับ API ไม่กี่ตัวและจ่ายเพียงสำหรับเวลาที่ใช้/CPU/RAM แต่ในกรณีที่เว็บไซต์ไม่ค่อยมีการใช้งาน แม้แต่ Free Tier ก็เพียงพอที่จะโฮสต์บางเว็บไซต์ได้อย่างแน่นอน ฟรี หลังจากอ่านเอกสารแล้ว มันดูเรียบง่ายมาก คุณไม่จำเป็นต้องระบุข้อมูลรับรองด้วยตนเองภายในอินสแตนซ์คอนเทนเนอร์ของ Cloud Run (จัดการเต็มรูปแบบ) เมื่อใช้ไลบรารีไคลเอ็นต์ GCP! PS: หากคุณต้องการรหัสสุดท้ายเพื่อปรับใช้คอนเทนเนอร์ของคุณเอง โปรดไปที่ github.com/kanocz/gclwebgcs ก่อนอื่นเราต้องฟังพอร์ตที่จัดทำโดย ตัวแปร PORT env: http.ListenAndServe + os.Getenv(ไม่มีพอร์ต) ทาง GCS env เราจะระบุชื่อที่เก็บข้อมูล Google Cloud Storage (ต้องอยู่ในโครงการเดียวกัน ctx : = context.Background() ไคลเอนต์, err := storage.NewClient(ctx) bucket = client.Bucket(os.Getenv(âÃÂÃÂGCS และอ่านวัตถุที่จะส่ง: obj := bucket.Object(r.URL.Path[1 // แถบ firstobjAttrs, err := obj.Attrs(ctx) obj = obj.ReadCompressed(จริง) // เราไม่ใช้âÃÂàไม่ต้องการคลายและบีบอัดอีกครั้งสำหรับการถ่ายโอน // คัดลอกส่วนหัว w.HeaderSet(âÃÂÃÂContent-EncodingâÃÂÃÂ, objAttrs.ContentEncoding) w.HeaderSet(âÃÂàความยาวเนื้อหาâÃÂÃÂ, strconv.Itoa(int(objAttrs.Size w.HeaderSet(âÃÂÃÂContent-DispositionâàÃÂ, objAttrs.ContentDisposition) w.HeaderSet(âÃÂÃÂCache-ControlâÃÂÃÂ, objAttrs.CacheControl) w.HeaderSet(à ¢ÃÂÃÂETagâÃÂÃÂ, objAttrs.Etag) // และส่งตัวอ่านข้อมูล ข้อผิดพลาด := obj.NewReader(ctx) io.Copy(w, ผู้อ่าน) จริงๆ สำหรับการให้บริการเว็บไซต์ เราจำเป็นต้องมีดัชนีเซิร์ฟเวอร์, จัดการกับข้อผิดพลาดที่ไม่พบ และอื่นๆ แต่ก็ไม่ซับซ้อนเช่นกัน อย่าลืมที่จะสร้าง go.mod เพื่อช่วย Google Cloud Build :) กว่าการปรับใช้กับคอนเทนเนอร์รีจิสตรีก็แค่ gcloud สร้างการส่ง --tag gcr.io/project1/gclwebgcs (ขอเปลี่ยน project1พร้อมชื่อโครงการของคุณ) และสร้าง/ปรับปรุงบริการโดยใช้ gcloud เบต้าเรียกใช้ --image gcr.io/project1/gclwebgcs \ --platform จัดการ --set-env-vars=GCS=GCSbucketName serviceName อย่าลืมอัปโหลดไฟล์ไปที่ GCSbucketName ในโครงการเดียวกันและกำหนดชื่อโดเมนให้กับบริการใหม่ ใบรับรอง ssl จะได้รับและจัดการโดยอัตโนมัติ! ThatâÃÂÃÂs ทั้งหมด :)