部落格

  • 網站後端架構解析:Web Server vs. Application Server

    把「名詞」與「角色」拆開,就不會混在一起。

    1. 最常被混淆的三層

    角色:「Web 伺服器 / Web Server」

    Nginx專門「收 HTTP 請求、回靜態檔」
    Apache httpd也可當反向代理/負載平衡器
    IISWindows 上的同類產品

    角色:「應用伺服器 / Application Server」

    Tomcat 跑 Java Servlet/JSP、WebSocket
    Django (WSGI)跑 Python Web App (需搭配 WSGI container)
    Node.js 本身即可跑 HTTP Server,也可只當語言執行環境

    角色:「整合包 / 套裝環境」

    XAMPPApache + MariaDB + PHP + Perl 的懶人包

    2. 誰來運行誰?

    • 絕對不會說「XAMPP 是 Tomcat 的容器」。
      XAMPP 裡面其實已包含 Apache (Web 伺服器) 與 MariaDB,「沒有」Tomcat;
      如果還想跑 Java,需要額外安裝 Tomcat,讓它和 XAMPP 一起運作。
    • 常見組合關係
      (1) Nginx → 反向代理 → Tomcat
      (2) Nginx → 反向代理 → uWSGI→ Django
      (3) Nginx → 反向代理 → Node.js (cluster)
      在這裡,Nginx 扮演「Web 伺服器/反向代理」,Tomcat / uWSGI / Node 扮演「應用伺服器」。

    3. 專有名詞快速對照

    名詞真正指什麼
    Web Server專指 Nginx、Apache httpd、IIS、caddy 這類「收 HTTP、吐靜態檔或轉包」的軟體。
    Application Server專指「執行開發程式」的容器:Tomcat、Jetty、uWSGI、Gunicorn、Django-dev-server、Node.js 本身。
    XAMPP / LAMP只是「套裝懶人包」,裡面已經打包 Web Server、DB、語言直譯器。
    Django嚴格說是一個「Web 框架」,需要額外的 WSGI Server(uWSGI、Gunicorn)或 runserver 才能對外服務。
    Node.js既是「JavaScript 執行環境」,也內建 http 模組可直接當 Web Server,所以常被簡稱「Node Server」。

    4. 總結
    Nginx / Apache / IIS 是「Web 伺服器」,
    Tomcat / Django / Node.js 是「應用伺服器或執行環境」,
    XAMPP 只是「懶人整合包」。
    它們之間常見「反向代理」關係,而不是「容器」關係。

  • Hello world!

    Welcome to WordPress. This is your first post. Edit or delete it, then start writing!