Nginx 實戰-04-nginx 不同的地址訪問不同的服務

老马啸西风發表於2024-06-02

前言

大家好,我是老馬。很高興遇到你。

我們為 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 請求。

以下是建立這樣一個伺服器的步驟:

  1. 安裝 Node.js:確保你已經在系統上安裝了 Node.js。你可以透過在終端執行以下命令來檢查 Node.js 是否已安裝以及其版本號:

    node -v
    
  2. 建立一個新的 JavaScript 檔案:在你的文字編輯器中,建立一個名為 app.js 的新檔案。

  3. 編寫程式碼:在 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/');
    });
    
  4. 執行你的伺服器:在終端中,導航到 app.js 檔案所在的目錄,然後執行以下命令:

    node app.js
    
  5. 訪問伺服器

$ curl http://127.0.0.1:3000/
Hello, World!

nodejs 建立第 2 個 http 服務

  1. 編寫程式碼:在 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/');
    });
    
  2. 執行你的伺服器:在終端中,導航到 app.js 檔案所在的目錄,然後執行以下命令:

    node app2.js
    
  3. 訪問伺服器

$ curl localhost:3001
Hello, World! FROM 127.0.0.1:3001

相關文章