AWS 應用程序部署基礎知識:安裝NGINX
譯文【51CTO.com快譯】
介紹
在本系列“AWS應用程序部署基礎”的前一篇文章中,我們建立了PostgreSQL數(shù)據(jù)庫,然后通過Node.JS應用程序連接到它。
但是,Nodejs應用程序正在同一臺計算機上運行,數(shù)據(jù)庫訪問是本地的。這是一個完全有效的設置,因為它在同一臺機器上,所以訪問很簡單。但是,在不同的機器上運行應用程序和數(shù)據(jù)庫是一種非常常見的設置,我們將在本系列的后面部分介紹這條路徑。今天,我們將主要關注我們希望在公共子網(wǎng)中的 EC2 實例上運行的 Web 服務器。
如果您還記得我們的 VPC 設置,我們還有一個公共 EC2 實例,我們目前將其用作 Bastian 服務器(又名跳轉主機)和 NAT 實例?,F(xiàn)在,是將它用作 NGINX Web 服務器。這是一個 Amazon Linux EC2 實例。
在現(xiàn)實生活中,可能希望在單獨的 EC2 實例上運行 NGINX,但是,過程是相同的,為了節(jié)省一些時間和成本,我將使用已經(jīng)運行的 EC2 實例(公共子網(wǎng))。
架構圖
下面是更新的圖表,顯示了將要設置的 NGINX。
在 Amazon Linux EC2 上安裝 NGINX
1. SSH 到 Bastian 服務器(公共 Amazon Linux EC2 實例)
- ssh -i ./fm-keypair.pem ec2-user@ip-address-machine //SSH to Bastian Server
2. Amazon Linux 上的更新包
- sudo yum update // (ubuntu) sudo apt-get update
3. 在Amazon Linux 上安裝 NGINX
- sudo yum install nginx // (Ubuntu) sudo apt-get install nginx
4. 使用 Bash 測試安裝
安裝完成,測試一下,以確認可以正在工作。
- nginx -v
- sudo service nginx status
這是操作的輸出:
訪問Web服務器
NGINX 通常帶有一個默認的網(wǎng)站和配置文件,配置為提供默認的網(wǎng)站。
因此,可以使用 curl 在本地訪問這個網(wǎng)站:
根據(jù)結果,可以看到接收到了默認網(wǎng)站的 HTML。實際上,如果我們看到了附加到這個實例的安全組,那么:
也可以看到安全組已經(jīng)配置了入站 HTTP 規(guī)則,從而可以從世界任何地方訪問此網(wǎng)頁。接下來,試一下在 Web 瀏覽器中使用 Bastian-host(與 NGINX 相同的 EC2)的 Elastic-IP 訪問它:
連接 NGINX 與 Node.js 應用程序
接下來做個簡單的測試,使用 NGINX 反向代理功能將 NGINX 與 Node.js 應用程序連接起來:
這樣,就可以在 PostgreSQL 中獲取產(chǎn)品數(shù)據(jù)了。
準備 Node.JS 應用程序
使用PM2來運行Nodejs 應用程序,PM2 將在后臺繼續(xù)運行節(jié)點服務器。
在私有子網(wǎng)中的 EC2 上安裝 PM2(Node.JS 應用程序運行和運行應用程序的地方):
- 1. ssh to ubuntu EC2
- 2. sudo npm install pm2 -g // Install pm2
- 3. pm2 start server.js // Run the Server app
輸出結果為:
pm2的其他相關指令如下:
- >> pm2 stop server.js
- >> pm2 restart server.js
另外,在 pm2 網(wǎng)站上還可以查找更多命令。
讓我們看看私有子網(wǎng)中連接到 Ubuntu EC2 機器的安全組:
因此,所有來自公共子網(wǎng)的流量都是允許的。在這一點上,我想做的另一項測試是查看是否可以從公共子網(wǎng)(Bastian-host)中的 EC2 實例訪問 Node.JS 應用程序。
可以看到,如預期的那樣,我們能夠從公共 EC2 機器與 Node 應用程序(在私有 EC2 端口 3000 上運行)進行通信。
接下來,設置 NGINX 反向代理。
NGINX 配置
盡量保持細節(jié)簡單和基本,可以在網(wǎng)上找到有關各種配置的更多信息。
更新 Nginx 配置文件以進行代理配置:
- sudo nano /etc/nginx/nginx.conf
在 nano 編輯器中打開配置文件,向下滾動直到看到一個服務器塊,點擊為節(jié)點應用程序添加位置 和代理路徑信息,如下所示(請注意在端口 3000 上運行 Node.JS 應用程序的 Ubuntu EC2 機器的私有 IP 地址):
- location /nodeapp/{ proxy_pass http://10.0.2.99:3000/; }
這是公共 EC2 實例上的 Nginx 配置文件。
按 Ctrl+X 保存并關閉文件,重新啟動 NGINX 服務。
- sudo service nginx restart
現(xiàn)在,讓我們嘗試使用瀏覽器訪問節(jié)點應用程序端點:
可以看到,我們能夠收到預期的數(shù)據(jù)。
以下是當前工作負載的更新圖表:
NGNIX 是一個輕量級且易于使用的 Web 服務器??梢韵蜻\行在不同EC2實例上的不同服務引入多個位置塊和代理調(diào)用。
總結
在本文中,我們在公有子網(wǎng)中的 EC2 實例上安裝了 NGINX。然后進行反向代理配置,將來自上一個post的請求傳遞給Node.JS應用程序,因為該應用程序可以連接到 PostgreSQL 數(shù)據(jù)庫,所以我們可以通過 HTTP 訪問數(shù)據(jù)。
這是一個非?;镜?、常見的web服務器、應用程序和數(shù)據(jù)庫設置,在下一篇文章中,我們將添加更多應用程序、配置并根據(jù)需要增強此設計。
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】