概述
在現代的Web 應用程式開發中,Nginx 和Node.js 是兩個非常重要的工具,Nginx 作為一個高效能的Web 伺服器,主要用來處理HTTP 請求和靜態檔案的存取;而Node.js 則被廣泛應用於建立高效能的Web 應用程式和服務端API,因其出色的非同步、非阻塞IO 模型和豐富的第三方模組生態而備受青睞。
在本文中,我們將介紹如何在一台Linux 伺服器上同時部署Nginx 和Node.js,並利用Nginx 的反向代理功能來提高我們的Web 應用效能和可靠性,最終實現一個高效率穩定的Web 服務。
準備工作
為了完成這個教學課程,我們需要一台執行 Ubuntu 18.04 LTS 作業系統的伺服器。我們還需要安裝最新版本的 Node.js 和 Nginx。
安裝 Node.js
首先,我們需要為我們的伺服器安裝 Node.js。我們將使用 nvm (Node Version Manager) 來管理我們的 Node.js 版本,因為它可以輕鬆安裝和切換不同的 Node.js 版本。
首先,我們需要使用curl 指令下載nvm 安裝腳本:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.36.0/install.sh | bash
然後,我們執行以下指令來套用設定變更:
source ~/.bashrc
現在,nvm 已經安裝在我們的伺服器上了。
我們可以使用以下指令來檢查可用的Node.js 版本:
nvm ls-remote
然後,我們選擇一個我們想要安裝的Node.js 版本,並使用以下命令來安裝它:
nvm install 14.16.1 // 这里我们选择的是 v14.16.1 版本
現在,我們已經成功安裝了Node.js。
安裝 Nginx
接下來,我們需要安裝 Nginx 伺服器來處理 HTTP 請求和靜態檔案的讀取。在Ubuntu 18.04 上,我們可以使用以下命令來安裝Nginx:
sudo apt-get update sudo apt-get install nginx
安裝完成後,我們可以使用以下命令來啟動Nginx 服務:
sudo systemctl start nginx
然後,我們可以使用以下命令來檢查Nginx 服務狀態:
sudo systemctl status nginx
如果Nginx 服務已經成功啟動,我們應該能夠從瀏覽器存取我們的伺服器的公用IP 位址,並看到Nginx 的預設歡迎頁面。
設定 Nginx 反向代理
現在,我們已經成功安裝了 Nginx 和 Node.js。接下來,我們將使用 Nginx 的反向代理功能來將外部 HTTP 請求轉送到 Node.js 伺服器上的指定連接埠號碼。
編輯Nginx 的設定檔/etc/nginx/nginx.conf,找到http 區段中的server 節點,並在其中加入以下程式碼:
upstream nodejs_backend { server 127.0.0.1:3000; # 这里的端口号需要和我们 Node.js 端口号一致 } server { listen 80 default_server; listen [::]:80 default_server; server_name _; location / { proxy_pass http://nodejs_backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
這裡我們使用了Nginx 的upstream 模組來定義了一個名為nodejs_backend 的upstream server,它指向127.0.0.1:3000,也就是我們將在後面執行的Node.js 伺服器連接埠號碼。
接下來,我們定義了一個名為 default_server 的虛擬主機,它監聽了 80 端口,並將 HTTP 請求轉送到 nodejs_backend 上。其中三個 proxy_set_header 參數用來設定轉送請求的一些額外資訊。
完成上述步驟後,我們需要重新啟動Nginx 服務以使其生效:
sudo systemctl restart nginx
現在,我們已經成功配置了Nginx 的反向代理功能,並準備在Node.js 伺服器上啟動服務來接收來自Nginx 的請求。
建立一個名為app.js 的文件,並使用以下程式碼啟動一個簡單的http 伺服器:
const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200); res.end('Hello, World!'); }); server.listen(3000, () => { console.log('Server running on http://127.0.0.1:3000/'); });
現在,我們使用以下命令啟動我們的Node.js App:
node app.js
運行成功後,我們就能從瀏覽器中存取我們的伺服器的公用IP 位址,並看到我們的Node.js 應用程式輸出了一則"Hello, World!"訊息。
總結
恭喜,我們已經完成了在一台 Linux 伺服器上同時部署 Nginx 和 Node.js 的教學。透過使用 Nginx 的反向代理功能來轉送 HTTP 請求,我們可以在 Node.js 中編寫 Web 應用程式和 API,並透過 Nginx 來處理靜態檔案和負載平衡,從而提高 Web 應用程式的效能和可靠性。
以上是nginx nodejs怎麼部署的詳細內容。更多資訊請關注PHP中文網其他相關文章!