前言
大家好,我是老馬。很高興遇到你。
我們為 java 開發者實現了 java 版本的 nginx
https://github.com/houbb/nginx4j
如果你想知道 servlet 如何處理的,可以參考我的另一個專案:
手寫從零實現簡易版 tomcat minicat
手寫 nginx 系列
如果你對 nginx 原理感興趣,可以閱讀:
從零手寫實現 nginx-01-為什麼不能有 java 版本的 nginx?
從零手寫實現 nginx-02-nginx 的核心能力
從零手寫實現 nginx-03-nginx 基於 Netty 實現
從零手寫實現 nginx-04-基於 netty http 出入參最佳化處理
從零手寫實現 nginx-05-MIME型別(Multipurpose Internet Mail Extensions,多用途網際網路郵件擴充套件型別)
從零手寫實現 nginx-06-資料夾自動索引
從零手寫實現 nginx-07-大檔案下載
從零手寫實現 nginx-08-範圍查詢
從零手寫實現 nginx-09-檔案壓縮
從零手寫實現 nginx-10-sendfile 零複製
從零手寫實現 nginx-11-file+range 合併
從零手寫實現 nginx-12-keep-alive 連線複用
從零手寫實現 nginx-13-nginx.conf 配置檔案介紹
從零手寫實現 nginx-14-nginx.conf 和 hocon 格式有關係嗎?
從零手寫實現 nginx-15-nginx.conf 如何透過 java 解析處理?
從零手寫實現 nginx-16-nginx 支援配置多個 server
場景
假設我們有兩個 http 服務
localhost:3000
localhost:3001
實際對應生產的等價的多臺服務,如何透過 nginx 代理,讓請求均衡的請求到每一臺上面嗎。
接下來我們來模擬一下整個流程。
nodejs 建立第1個 http 服務
Node.js 最簡單的入門例子是一個基礎的 Web 伺服器,它使用 Node.js 內建的 http
模組來響應 HTTP 請求。
以下是建立這樣一個伺服器的步驟:
-
安裝 Node.js:確保你已經在系統上安裝了 Node.js。你可以透過在終端執行以下命令來檢查 Node.js 是否已安裝以及其版本號:
node -v
-
建立一個新的 JavaScript 檔案:在你的文字編輯器中,建立一個名為
app.js
的新檔案。 -
編寫程式碼:在
app.js
檔案中,輸入以下程式碼:const http = require('http'); // 引入 http 模組 // 建立一個 HTTP 伺服器 const server = http.createServer((req, res) => { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello, World!\n'); // 響應請求併傳送一個字串 }); // 伺服器監聽 3000 埠 server.listen(3000, '127.0.0.1', () => { console.log('Server running at http://127.0.0.1:3000/'); });
-
執行你的伺服器:在終端中,導航到
app.js
檔案所在的目錄,然後執行以下命令:node app.js
-
訪問伺服器:
$ curl http://127.0.0.1:3000/
Hello, World!
nodejs 建立第 2 個 http 服務
-
編寫程式碼:在
app2.js
檔案中,輸入以下程式碼:const http = require('http'); // 引入 http 模組 // 建立一個 HTTP 伺服器 const server = http.createServer((req, res) => { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello, World! FROM 127.0.0.1:3001\n'); // 響應請求併傳送一個字串 }); // 伺服器監聽 3001 埠 server.listen(3001, '127.0.0.1', () => { console.log('Server running at http://127.0.0.1:3001/'); });
-
執行你的伺服器:在終端中,導航到
app.js
檔案所在的目錄,然後執行以下命令:node app2.js
-
訪問伺服器:
$ curl localhost:3001
Hello, World! FROM 127.0.0.1:3001