2016-08-16 60 views
0

Cloudfront具有允許不同路徑轉至不同來源的功能。我們用這個供電是從S3和AJAXs提供多種服務純粹的客戶端單頁的應用程序,用一個簡單的例子設置之中:如何在本地開發人員環境中模擬aws cloudfront多個來源

mydistribution.cloudfront.net/path1 - >負載平衡器服務服務A

mydistribution.cloudfront.net/path2 - >負載平衡器乙服務服務B

mydistribution.cloudfront.net/frontend ---> S3桶承載單個頁面應用JS/CSS/HTML這使AJAX調用服務

我正在尋找一種方法來設置本地環境來模仿此部分行爲,以便同一網址/端口上的不同本地路徑可以解析爲不同端口上不同的本地運行服務。重要的是,CORS和其他跨域問題(不存在於非本地設置中,因爲所有事情都發生在同一個域/端口上)不會影響本地開發。這最好如何實現?

例如(全部在右邊的東西都已經建立並在右側端口上運行)

本地主機:8080 /路徑1 - >本地Web應用程序服務器上運行8091

本地主機:8080 /路徑 - 端口>本地Web應用程序服務器8090

本地主機:8080 /前端 - >端口8081服務 的HTML/JS/CSS本地節點服務器

回答

1

您要找的是一個反向代理。 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; 
} 
+0

我們結束了使用Node.js的模塊反向代理實現,因爲它符合我們的本地堆棧更好,但實際上這種做法使接受的答案。謝謝。 – Peter

相關問題