我有一个名为example-dev.com
的S3存储桶,用于网络托管。
我的S3存储桶有几个名为client-site.com
或big-project.com
的子文件夹。因此,在S3上,访问client-site.com
的开发主页的网址为example-dev.com.s3-website-us-east-1.amazonaws.com/client-site.com/index.html
。这会占用大约十几个网站,随着客户来去,网站列表会定期更改。
我尝试将原始S3网址映射到我的example-dev.com
自定义域的子域。我想要:
client-site.com
.example-dev.com
/index.html
在
提供文件 example-dev.com.s3-website-us-east-1.amazonaws.com/
client-site.com
/index.html
我会使用DNS作为映射,但每个站点都有一个子文件夹,文件夹会定期更改。
如果可能的话,我想使用无服务器架构来做这件事。我有一个版本的这个版本在节点服务器上使用http-proxy
工作正常,但我想看看如果没有VPS就可以。我想我的意思是使用API网关和/或Lambda,但是我很难绕过API网关而且我不知道Lambda是否能够以相同的方式重新映射请求http -proxy确实。
非常感谢任何帮助!
答案 0 :(得分:1)
除非我遗漏了某些内容,否则您听起来并不需要API网关。
听起来您需要进入DNS并创建名为client-site.com.example-dev.com
的CNAME条目,并直接指向S3存储桶。在这种情况下,您必须为每个子文件夹创建一个S3存储桶'。我不知道这是否可以改变。
但这可以通过DNS完成,而不是为了映射请求路径而支付任何类型的代理。
答案 1 :(得分:0)
一种解决方案是在主机ec2上安装nginx,并使用proxypass将请求代理到s3内容。这样您就可以使用友好的url client-site.com.example-dev.com继续访问内容。您的DNS记录现在必须指向主机ec2机器,它将使用nginx将请求路由到适当的后端s3内容,具体取决于访问的URL。
您还可以为不同的客户端提供多个侦听器
安装nginx
for trip in myJsonArray
{
if let tripDict = trip as? NSDictionary{
if let name = tripDict.value(forKey: "name"){
self.tripNameArray.append(name as! String)
if let name = tripDict.value(forKey: "image"){
if let imgName = (name as? String){
self.tripImageArray.append((imgName as? String)!)
}
else{
// append default image
self.tripImageArray.append("default-img.jpg")
}
}
else{
// append default image
self.tripImageArray.append("default-img.jpg")
}
OperationQueue.main.addOperation ({
self.tableView.reloadData()
})
}
}
Nginx配置应包含:
yum nginx install