负载均衡
akf 扩展立方体

支持的反向代理

缓存
upstream & server

加权 round-robin 负载均衡算法

对上游服务使用 keepalive

hash 负载均衡


一致性 hash
hash 的问题
使用缓存时, 所有缓存会失效


一致性 hash: 扩容前

一致性 hash: 扩容后

一致性 hash 模块
还是 upstream_hash 模块

最少连接算法
upstream_least_conn 模块

使用共享内存, 让负载均衡策略在所有 worker 间生效
upstream_zone 模块

upstream 模块间的顺序

反向代理
proxy 模块
代理 http

proxy 指令


一些修改 请求 的指令
- proxy_method
- proxy_http_version
- proxy_set_header
- proxy_pass_request_header
- proxy_pass_request_body
- proxy_set_body


临时文件路径


与上游服务器建立连接

tcp keepalive

http keepalive

修改 source ip
- 应该是有多个网卡, 这里可以指定一个?

接收上游 http 响应头部


禁用上游响应头部功能


上游返回失败时的处理办法

对上游使用 ssl
双向认证

对下游使用证书

验证下游证书

对上游使用证书

验证上游证书

ssl 模块的变量


缓存

浏览器缓存

etag


if-none-match

if-modified-since

expires 指令

not_modified 过滤模块



配置 nginx 使用缓存

缓存什么样的响应

- upstream_cache_status
缓存流程

- x-accel-expires
set-cookie

接收上游响应

合并回源请求

使用 stale 陈旧缓存

立刻使缓存失效

uwsgi fastcgi scgi




memcached 反向代理


websocket 反向代理

协议升级



缺点

分片


http2





grpc 反向代理


stream 反向代理
7个阶段

ssl

变量



系统变量

proxy protocol
- 利用该协议, 在 tcp 中附加真实 ip 信息

流程

realip 模块

stream 中 ssl


变量


ssl_preread 模块

- alpn

udp 反向代理

透传 ip 地址


dsr 方案



