Domain-Name-System

AWS Route53 和 Lambda:為無伺服器應用程序將 Naked HTTP 請求重定向到 HTTPS WWW

  • January 20, 2019

問題

我有一個在“無伺服器”AWS Lambda 函式上執行的站點。Route53 將請求路由到連接到 Lambda 函式的 API 網關。

這樣做的問題是您無法設置傳統的伺服器重定向。

例子

例如,我按照這個問題/答案路由http://<my_domain>.comhttps://www.<my_domain>.com,我正在使用 S3 儲存桶的 A 記錄別名,該儲存桶設置為靜態站點重定向到https://www.<my_domain>.com

問題

如何在 Lambda 等無伺服器環境https://<my_domain>.com中重定向到?https://www.<my_domain>.com

您必須在 lambda 函式中執行重定向。

我確定 URL 中使用的實際主機名已傳遞給 Lambda,可能是event.headers.Host. 因此,在您的 Lambda 中,您必須執行類似 python 的程式碼:

def lambda_handler(event, context):
   if not event['headers']['Host'].startswith('www'):
       return PermanentRedirect('www.'+event['headers']['Host']+event['path'])

但是,如果我是你,我會將非 www 主機名指向不同的 API 網關,其中有一個 Lambda 專用於執行到 www 的重定向。然後在您的實際工作人員lambda 中,您不必擔心重定向。

希望有幫助:)

引用自:https://serverfault.com/questions/947954