如何在本地开发人员环境中模拟aws cloudfront多个起源



Cloudfront有一个很好的特性,允许不同的路径到达不同的原点。我们使用它来支持一个纯客户端单页应用程序,该应用程序从S3和ajax提供给多个服务,简单的示例设置如下:

mydistribution.cloudfront.net/path1——比;负载均衡器A服务服务A

mydistribution.cloudfront.net/path2——比;负载均衡器B服务服务B

mydistribution.cloudfront.net/frontend——比;S3桶,承载单页应用JS/CSS/HTML,使AJAX调用服务

我正在寻找一种方法来设置一个本地环境来模仿这部分行为,以便同一url/端口上的不同本地路径可以解析到不同端口上的不同本地运行服务。重要的是,CORS和其他跨域问题(在非本地设置中不存在,因为所有事情都发生在同一个域/端口上)不会影响本地开发。如何最好地做到这一点?

例如(右边的所有东西都已经设置好并在正确的端口上运行)

localhost: 8080/path1——比;运行8091的本地web应用服务器

localhost: 8080/path2——比;8090端口上的本地web应用服务器

localhost: 8080/前端——比;本地节点服务器,端口为8081HTML/JS/CSS

你要找的是一个反向代理。Nginx将非常适合这一点。它相信这实际上是CloudFront在幕后使用的(尽管您也可以在Apache中实现相同的功能)。他们在这里解释了如何设置一些基本的反向代理场景:https://www.nginx.com/resources/admin-guide/reverse-proxy/

这只是NGINX所能做的事情的冰山一角。您可以完全控制入站和出站标头。这是一个非常强大的平台。

查看一些nginx配置示例:

location /path1/ {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://localhost:8091;
}
location /path2/ {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://localhost:8090;
}
location /frontend/ {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://localhost:8081;
}

最新更新