Nginx 是什么?有哪些用途?
2023年2月4日
💎 加入 E+ 成長計畫 如果你喜歡我們的內容,歡迎加入 E+,獲得更多深入的軟體前後端內容
何谓 Nginx?
Nginx 是一个非同步框架的网页服务器,可以做到
- 反向代理
- 负载均衡
- http 快取
Nginx 比起 Apache 属于轻量级且高并发、处理静态档案的效率较高、耗费的记忆体较少、负载效能好,很适合做前端服务器使用。
反向代理 Reverse Proxy
反向代理的好处在于能够将 Client 不需知道 Application Server 的真实位置,仅需要透过 Nginx 反向代理的方式就能够向后面的 Application Server 发送请求,而 Application Server 也不需要知道是哪一个 Client 的 Request ,仅需回传 Response 即可。 (如下图所示)
负载均衡 Load Balance
为了因应大流量,一台 Application Server 是无法应付的,因此会需要同时开多个 Application Server 。而 Nginx 能够自动的将 Client 的 Request 分送到不同 Application Server 上,而分送的演算法可以自己设计,最常使用的是 Round Robin 演算法,而其他的演算法也包含 Least Connections 、Least Time 、 IP Hash 等。
HTTP 快取
为了能够提高效能,Nginx 会利用 http 快取的机制做优化。流程如下:
- Client 发出 Request ,Nginx 会将 Request 的资讯做 hash,并判断此 hash key 是否存在于记忆体中:① → ②
- 若 hash key 不存在于记忆体中:Nginx 会向 Application Server 索取档案位置,再去索取档案。 ③ → ④ → ⑤
- 若存在于记忆体中:Nginx 会直接索取档案。 ③ → ⑤
- 将档案回传给 Client