> For the complete documentation index, see [llms.txt](https://kk-5.gitbook.io/interview/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kk-5.gitbook.io/interview/nginx.md).

# Nginx

**Nginx常见负载均衡方式**

轮询（默认）：按照每个请求时间的顺序的分配到后端服务器

ip\_hash：每个请求按访问ip的hash结果分配

weight：按照权重轮询，权重值越高，轮询几率越大

fair（三方）：按后端服务器的响应时间来分配请求，响应时间短的优先分配

url\_hash（三方）：根据url的hash结果进行分配

**健康检查**

Nginx的健康检查主要体现在对后端服务提供健康检查，且功能被集成在upstream模块中，共有两个指令

max\_fails:定义定义可以发生错误的最大次数

fail\_timeout：nginx在fail\_timeout设定的时间内与后端服务器通信失败的次数超过max\_fails设定的次数，则认为这个服务器不在起作用；在接下来的 fail\_timeout时间内，nginx不再将请求分发给失效的server。

Nginx在检测到后端服务器故障后，nginx依然会把请求转向该服务器，当nginx发现timeout或者 refused后，会把改请求会分发到 upstream的其它节点，直到获得正常数据后，nginx才会把数据返回给用户，这也便体现了nginx的异步传输，而lvs/haproxy /apache责无法做到这些（在lvs/haproxy/apache里，每个请求都只有一次机会，假如用户发起一个请求，结果该请求分到的后端服务器 刚好挂掉了，那么这个请求就失败了）
