在同一臺伺服器上執行 Node Js 和 Apache
Apache
是最流行的 Web 伺服器之一,它允許我們處理客戶端請求並通過 HTTP 提供內容。Apache 是開源的,易於與 MYSQL 和 PHP 等其他技術一起使用。
預設情況下,Apache 伺服器配置為偵聽埠
。但是,它也可以使用 TLS 配置偵聽埠 443
。
Node JS 是一個 JavaScript 執行時,它在 JavaScript 程式碼中建立伺服器端應用程式。Node JS 還使我們能夠建立簡單的 HTTP 伺服器,我們可以使用這些伺服器通過各種 HTTP
方法提供靜態內容。
Node JS 中的 HTTP
模組允許我們建立一個伺服器來監聽特定的埠號並響應客戶端。下面是我們如何使用 HTTP
模組提供的 HTTP.createServer()
方法建立一個簡單的伺服器。
const http = require('http');
const requestListener =
function(req, res) {
res.writeHead(200);
res.end('Hello, World!');
}
const server = http.createServer(requestListener);
server.listen(8080);
在上面的示例中,我們建立了一個接受請求和響應物件作為引數的函式。響應物件返回一個 200 response
程式碼和一個帶有 Hello world
文字的簡單有效負載。
最後,我們還使用 HTTP.createServer()
方法建立了一個伺服器,該方法在發出請求時呼叫 requestListener
物件。使用 listen()
方法,我們可以讓伺服器監聽 埠 8080
。
我們無法處理相同的請求,因為 Node JS 伺服器和 Apache 都配置為在不同的埠上執行。儘管我們可以更改埠號並在不同的埠號上執行,但計算機被設計為只有一個程序在一個埠上偵聽,而不是更多。
但是,我們可以選擇讓 Apache 伺服器作為反向代理伺服器
執行,並讓 Node JS 伺服器單獨負責服務客戶端請求。代理伺服器是用於將請求定向到不同伺服器的中間伺服器。
反向代理伺服器
通常位於防火牆後面,通常用於負載平衡,通過快取和壓縮入站資料提供加速,並使用 SSL 加密提供額外的安全性。
首先,我們將首先建立一個簡單的 Node JS 伺服器,偵聽埠 8080
,例如我們之前建立的那個。
const http = require('http');
const requestListener =
function(req, res) {
res.writeHead(200);
res.end('Hello, World!');
}
const server = http.createServer(requestListener);
server.listen(8080);
我在我的程式碼中使用了 index.js
作為主檔案。但是,你可以隨意命名。
我將執行以下命令來啟動並執行伺服器。
node index.js
要檢視來自伺服器的響應,我將導航到 http://localhost:8080/
。
我們將使用 Apache httpd.conf
中的 ProxyPass
指令將特定 URL 上的所有請求通過管道傳輸到我們的 Node.JS 應用程式。
這種方法允許我們通過使本地伺服器充當代理來將遠端伺服器對映到本地伺服器。在這種情況下,本地伺服器稱為反向代理或閘道器
。
但是,我們首先需要從 Apache Friends 下載並安裝 XAMPP
才能開始。XAMPP
是一個跨平臺的 Web 伺服器解決方案,主要由 MariaDB 和 Apache HTTP 伺服器組成。
現在 XAMPP 已安裝,開啟 XAMPP 控制面板並通過單擊 Start 啟動 Apache 服務。然後,單擊 Admin 按鈕後的 Config 按鈕並選擇 Apache httpd.conf
選項。
它將開啟一個記事本文件。主要的 Apache HTTP 伺服器配置檔案包含為伺服器提供指令的配置指令。
要將我們的 Node JS 伺服器對映到 Apache 伺服器,我們將在開頭新增 URL /isaactonyloi http://localhost:8080/
和 ProxyPass 指令,即伺服器根 URL,如下所示。不要忘記儲存。
最後,我們必須在 Dynamic shared
物件下啟用同一文件下的兩個模組。
我們將啟用兩個物件,即 proxy_http_module modules/mod_proxy_http.so
和 proxy_module modules/mod_proxy.so
,只需刪除註釋符號 #
並讓它們出現如下所示。
你可能會發現 proxy_module modules/mod_proxy.
已啟用。為了使更改生效,我們需要儲存它們並通過單擊停止按鈕並在控制面板中再次單擊開始按鈕來重新啟動我們的 Apache 伺服器。
現在要使用 Apache HTTP 伺服器作為代理訪問來訪問來自 Node JS 伺服器的響應,請使用 URL http://localhost/isaactonyloi
。響應應如下所示。
Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.
LinkedIn