Nginx 是什么?有哪些用途?

2023年2月4日

💎 加入 E+ 成長計畫 與超過 350+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

何谓 Nginx?

Nginx 是一个非同步框架的网页服务器,可以做到

  • 反向代理
  • 负载均衡
  • http 快取

Nginx 比起 Apache 属于轻量级且高并发、处理静态档案的效率较高、耗费的记忆体较少、负载效能好,很适合做前端服务器使用。

反向代理 Reverse Proxy

反向代理的好处在于能够将 Client 不需知道 Application Server 的真实位置,仅需要透过 Nginx 反向代理的方式就能够向后面的 Application Server 发送请求,而 Application Server 也不需要知道是哪一个 Client 的 Request ,仅需回传 Response 即可。 (如下图所示)

Nginx 反向代理
Nginx 反向代理

负载均衡 Load Balance

为了因应大流量,一台 Application Server 是无法应付的,因此会需要同时开多个 Application Server 。而 Nginx 能够自动的将 Client 的 Request 分送到不同 Application Server 上,而分送的演算法可以自己设计,最常使用的是 Round Robin 演算法,而其他的演算法也包含 Least Connections 、Least Time 、 IP Hash 等。

Nginx Load Balance 机制
Nginx Load Balance 机制

HTTP 快取

为了能够提高效能,Nginx 会利用 http 快取的机制做优化。流程如下:

  1. Client 发出 Request ,Nginx 会将 Request 的资讯做 hash,并判断此 hash key 是否存在于记忆体中:① → ②
    1. 若 hash key 不存在于记忆体中:Nginx 会向 Application Server 索取档案位置,再去索取档案。 ③ → ④ → ⑤
    2. 若存在于记忆体中:Nginx 会直接索取档案。 ③ → ⑤
  2. 将档案回传给 Client
Nginx Cache 机制
Nginx Cache 机制
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們