簡體   English   中英

Nodejs的AWS Loadbalancer代理

[英]AWS Loadbalancer Proxy for Nodejs

我已將負載均衡器配置為將請求路由到運行NodeJs服務器的兩個Ec2實例。 我需要將來自http(端口80)和https(端口443)的請求定向到NodeJ中EC2實例的http(端口80)。 我已將ssl證書上傳到AWS,並將負載均衡器配置為使用ssl證書。 問題是來自http端口的請求不會自動路由到https。 它必須是服務器端腳本或剪切我需要在server.js中寫入,應該將http路由到https,我試圖這樣做,它會遇到無限重定向。 所以問題 -

  • 是否有任何指南可以從AWS執行此操作?
  • 如果沒有,那么如何實現這一點,任何指針或建議將不勝感激。

在服務器端,您可以檢查X-Forwarded-Proto (原始請求協議),如果它是heaving值http您可以使用https協議將重定向(http 302)發送到URL。

雖然使用ALB(應用程序負載均衡器,您可以指定一組規則,也許可以在那里執行...)

我找不到AWS的指南,但在我找到它的情況下,我會繼續搜索並更新答案。

通常,當您在Node.js中編寫應用程序時,您可以指定應用程序運行的端口。 這意味着您將需要兩個不同的服務器監聽。 當您的應用程序在端口80(HTTP)上收到請求時,它應該重定向到您的HTTPS服務器,就像在答案中一樣。

可能與您的問題相關的另一點是,在生產環境中,您通常不會將端口綁定到Node.js服務器,因為它不是生產就緒的。 您可能希望使用反向代理和負載均衡器,如Nginx或HAProxy。

如果您正在使用AWS ALB(應用程序負載均衡器),他們今天宣布了http-> https重定向。 看一下: https//exampleloadbalancer.com/redirect_demo.html

將您的ELB置於Cloudfront后面並在您的發行版設置中選擇將HTTP轉發到HTTPS。 在此輸入圖像描述 以下文檔將非常有用https://docs.aws.amazon.com/waf/latest/developerguide/tutorials-ddos-cross-service-ELB.html

這種方法有兩個好處:

1 - 您的問題將得到解決

2 - 您可以使用功能強大的CDN,有關Cloudfront的更多信息,請參閱https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html

更新:

您可以通過編輯ELB中的監聽器設置將流量從HTTP轉發到HTTPS。 在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM