定義
NGINX(發音為「engine-x」)是一款高效能的開源網頁伺服器與反向代理,支撐著現代網路中相當大比例的流量。它可直接提供靜態檔案,將流量代理至 PHP-FPM、Node.js 及 Python WSGI/ASGI 伺服器等應用程式後端,終止 SSL/TLS 連線,在多台上游伺服器之間進行負載平衡,並快取 HTTP 回應以減輕後端負擔。NGINX 是大多數 VPS 與專用 Linux 主機上的預設網頁伺服器,因其非同步、事件驅動的架構,已取代 Apache 成為高流量網站的標準選擇:少量固定數目的工作行程(worker process)透過非阻塞式 I/O 各自處理數千個連線,而非 Apache 傳統上每個連線配置一個行程或執行緒的模式,後者在負載下會耗用遠多記憶體。這項差異在並行使用者超過數百人時最為關鍵;對於小型宣傳網站而言,選擇哪一種幾乎沒有影響。大多數受管理的 WordPress 主機底層都運行 NGINX,通常搭配 FastCGI 快取使用,不過基於 .htaccess 的設定方式並不適用於 NGINX。
運作方式
NGINX 透過一個階層式文字檔案(nginx.conf)進行設定,用以定義伺服器、位置(location)、上游伺服器(upstream)與快取。它可以單純作為網頁伺服器、單純作為反向代理,或兩者兼具。NGINX Plus 是付費的商業版本,提供額外功能;而大多數網站實際運行的是開源版本的 NGINX。
這點為何重要
在靜態內容與反向代理方面,NGINX 比 Apache 更快速、更輕量。對於高流量網站而言,這項差異至關重要:NGINX 能在中階硬體上處理數萬個並行連線。目前大多數正式營運環境的技術堆疊都會在應用程式伺服器前端使用 NGINX,Apache 則多保留用於舊系統相容性考量。