概述
web server 就是提供 web 相關服務的伺服器,例如在主機上執行 web server,它能幫主機開一個 80 port,讓使用者能透過主機IP與之建立連線,再透過 web client 與使用者互動,這也就是我們再熟悉不過的 client-server 架構。
Node.js、Golang、Python,都可以透過程式直接跑一個 web server 起來,這類程式語言起的 Web Server 可以處理靜態跟動態解析,通常會被稱為 Application Server。
而 Web Server (Nginx、Apache..),只能拿來處理靜態資源,其主要功能為負載平衡、代理(proxy),此外,Web Server 處理靜態資源的能力是遠遠高於 Application Server 。
動態解析﹔把需求轉發到 Application Server,由Application Server 處理完後,再丟 response 回去,由 Web Server 進行回應,最後才回到 Client 端。
負載平衡﹔在高流量的狀況下,只靠一個 Application Server 是肯定會炸掉的,所以需要開起多個 Application Server 來分擔流量,負載平衡就是負責 request 的分發,決定 request 要被分到哪一個 Application Server 處理。