node.js伺服器

zyToJH發表於2024-03-15

Node.js釋出於2009年5月,由Ryan Dahl開發,是一個基於Chrome V8引擎的JavaScript執行環境,使用了一個事件驅動、非阻塞式I/O模型, [1]讓JavaScript 執行在服務端的開發平臺,它讓JavaScript成為與PHP、Python、Perl、Ruby等服務端語言平起平坐的指令碼語言。簡單來說,就是讓原本執行在客戶端的Javascript指令碼能在伺服器執行,構建一個網站。最近取證練習中遇到了node.js的網站,一開始並不知道如何下手,到後來的漸漸清晰起來,所以對node.js網站做個總結

拿到的網站原始碼

後臺資料庫

一般重構網站從資料庫開始

這裡使用的是mongodb

直接1過濾27017的mongodb埠號,可以發現伺服器中確實存在mongo的服務,只是在docker容器中

利用navicat等視覺化工具實現mongodb的連線,注意MongoDB不需要密碼

資料庫解決,還是比較簡單的!

網站原始碼啟動

重要的配置檔案config.js

記錄了網站的有關資訊,包括啟動埠,資料庫等等!

node.js的網站內建http服務,不需要nginx、apache等web伺服器進行代理,但也可以使用!

我們啟動docker服務後可以發現有兩個執行的容器,一個是,mongodb的資料庫容器,另一個就是node.js的網站容器,這裡發現網站使用8000埠,再透過容器的埠對映到宿主機的80埠

當我們外部需要訪問網站的頁面的時候,只需要相對應的伺服器ip+80埠即可,不需要啟動像nginx的服務軟體

這裡有個小心思,出題人故意在伺服器上安裝了nginx,其實並不是作為一個網站的代理功能,讓我誤以為網站是透過nginx服務啟動的。

透過find /的命令深度搜尋nginx的配置檔案,發現不但宿主機上存在nginx服務,docker容器內還有一個nginx服務,其實這些都是不需要的

開啟最後一個配置檔案

發現定義了一個網站重定向,但並不是指向我們的node.js網站的

我們再排除docker容器內的nginx服務

發現該容器並沒有進行埠對映,相當於無效的容器!

所以,該node.js網站使用node.js內建的http服務與客戶端連線,我們直接訪問80即可

相關文章