![](/img/trans.png)
[英]Aws ec2 - how to setup load balancer to match docker container on ec2 instance
[英]AWS SSL on EC2 instance without Load Balancer - NodeJS
是否可以在沒有load balancer
情況下運行 EC2 實例,偵聽port 443
? 我現在正在我的Node.JS
應用程序中嘗試,但是當我使用https://
調用頁面時它不起作用。 但是,如果我將其設置為port 80
,則http://
一切正常。
我早些時候使用load balancer
和route53
,但我不想再為 ELB 支付 18 美元/月,尤其是當我只有一台服務器運行時。
感謝您的幫助
有可能嗎? 是的,當然。 聽起來您在 ELB 上安裝了 SSL 證書,現在您已經刪除了 ELB。 您現在必須在 EC2 服務器上安裝 SSL 證書。 如果沒有 ELB 或 CloudFront 分配,您將無法使用 AWS ACM SSL 證書。 如果您不想為這些服務中的任何一個付費,則必須在其他地方獲得 SSL 證書。
你是對的,如果它只是一個實例並且你覺得你不需要為流量的大幅增加做好准備,那么你不應該為 ELB 付費。
從高層次的角度來看,您必須完成以下步驟:
對於我們的項目(很像描述的其他海報),我們使用了以下設置:
這種設置對我們來說非常有效。 在這個設置中,我們可以在不使用亞馬遜負載均衡器的情況下設置 SSL。
一旦你有了你的證書文件,就沒有那么難了。 你甚至可以在沒有 Nginx 的情況下做到這一點。
讓我們首先創建一個快速的網絡服務器
const app = express();
例如,您可以將靜態網站放在文件夾中。
const wwwFolder = express.static(path.join(__dirname, '/../www'));
app.use(wwwFolder);
接下來,你基本上需要閱讀你的證書文件
const key = readFileSync(__dirname + '/ssl/privkey.pem', 'utf8');
const cert = readFileSync(__dirname + '/ssl/cert.pem', 'utf8');
const ca = readFileSync(__dirname + '/ssl/chain.pem', 'utf8');
const serverOptions: https.ServerOptions = { key, cert, ca };
最后,您使用這些證書創建一個 https 服務器。
const server = https.createServer(serverOptions, app);
server.listen(httpsPort, () => log.debug("createWebServers", `server is listening on port ${httpsPort}`));
出於安全原因,可能無法直接偵聽端口 443。相反,例如使用 4201 之類的端口,然后使用端口轉發。
如果你使用 systemd 來啟動/停止你的服務,那么這個端口轉發可以在你的服務配置文件中定義。 一個簡單的解決方案:
[Unit]
Description=my.service
After=network.target
[Service]
Type=simple
TimeoutSec=0
User=ubuntu
PermissionsStartOnly=true
ExecStartPre=/sbin/iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 4201
ExecStart=/usr/local/bin/node /home/ubuntu/project/server.js
ExecStopPost=/sbin/iptables -t nat -D PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 4201
Restart=on-failure
[Install]
WantedBy=multi-user.target
有多種方法可以創建和刷新證書文件。 所以,我不會在這里詳細介紹。 但最重要的是,您不需要亞馬遜證書來完成它。 LetsEncrypt 是免費且簡單的,並且運行良好。
通常我還會添加一個 http 服務器(沒有 HTTPS)並應用重定向。 然后我也為此使用端口轉發。 因此,我在服務文件中添加了第二個端口轉發規則。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.