Nginx基础概念
Nginx基础概念
- Nginx是一个web服务器
- 监听http端口
- 静态或者动态的网站内容
- 反向代理
- 负载均衡
- 后端路由
- eg:如果后端unhealthy的时候,可以做一些其他的事情,比如说使用其他的后端服务
- 缓存(caching)
- 减少和后端的一些的重复的调用
- 网管API
- 限制请求
- 路由匹配 (根据API版本来路由匹配)
- timeout in nginx
- frontend timeouts (用户向nginx请求是发生的timeout)
- client_header (读取用户https请求头部的timeout,默认60s)
- client_body
- send (默认60s,传输时间太长,导致超时,关闭链接)
- keepalive (默认75s,不会让idle的链接一直空闲在那里,eg:如果一个链接太久不用了,就会被关闭)
- lingering (用户可以发送请求,但是Nginx不会给回response,一直等待,网络超时,链接关闭)
- resolver (DNS域名解析超时,默认30s
- backend timeout
- proxy_connect (NGINX和backend链接时,会有healthcheck,检查这个backend service是否正常工作,尽可能把这个设置的小,一般来说,不要超过75s)
- proxy_send (定义为两次连续的写操作之间的时间,接下来的是content超过了设置的时间没有发送给backend,这样nginx到backend的链接就会超时,关闭)
- 可以释放当前链接,以供其他的client建立链接
- proxy_read (和写超时相反,nginx读后端返回数据时超时, 返回数据的时间太慢,proxy nginx将会关闭链接,有利于节约链接时长)
- proxy_next_upstream (默认0s,一般设置在4-5s左右,不需要太长的时候去决定使用哪一个上游服务)
- keepalive (减少空闲时间,如果太长时间没有数据的传输,关闭链接,一般设置为60s
- frontend timeouts (用户向nginx请求是发生的timeout)
- nginx 4 layer or 7 layer Load balancing
- layer 4/7都是参考 OSI model,主要操作TCP/Ip或者application
- layer 4 -> TCP/IP,当Nginx不用关心具体的协议时,这时Nginx可以用作第四层的代理(操作流)
- layer 7 -> application,当NGINX需要转发后端的链接或者获取一些cache,或者向http的头部中添加信息,这时Nginx可以被用作是应用层的代理(操作内容)
- TLS(Transport layer security,一种E2E的加密协议,比如说我们知道的对称密钥加密,协议只能保证数据在传输过程中不被监听或者篡改) Termination vs. TLS passThrough
- Termination就是在请求传输到Nginx的时候,Nginx会做解密操作,然后在转发到后端的接口(Nginx为https,BE为http,在cloud中不需要加密,服务之间可以直接通信),如果Nginx和BE都是https,那么Nginx在转发数据时,就需要先解密然后在加密(TLS origination),这两种模式的应用场景是啥?
- passThrough,不信任Nginx,不对数据做任何操作,只有TCP层的检查,检查,resource IP&port,destination IP&port,NGINX不知道传输的内容,这样可能更加的安全,Nginx在这种模式中就是充当一个隧道的作用,不好的地方,每一个http call都需要建立一个tunnel,这样会造成比较大的花销
- NGINX internal architecture
- NGINX会根据服务器的硬件CPU核心数来设置worker processor,比如说当前电脑的核心数是2 cores,那么worker processors将会被设置为4个(hyper threading disable,那么processor和核心数将会只有一一对应,这个设置取决于你电脑的配置),worker processor加解密数据,路由转发等等。
- kernel TLS ktls
- Question:每个processor是如何分配的,如果当前的processor都被占用了,如何等待?
- Title: Nginx基础概念
- Author: Xiao Qiang
- Created at : 2023-03-22 12:25:07
- Updated at : 2025-03-08 10:49:30
- Link: http://fdslk.github.io/tech/ops/proxy/2023/03/22/ops-nginx/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments