常见Nginx的中间件架构(三)

本文详细介绍了Nginx中负载均衡的配置方法,包括upstream模块的使用,各种调度算法如轮询、加权轮询、ip_hash、least_conn、url_hash等的原理及配置示例,同时解释了如何设置服务器状态如down和backup。

#三、负载均衡
#配置语法
Syntax: upstream name {...};
Default : ——
Context:http

#样例
#upstream backend{
#    server backend1.example.com weight=5;
#    server backend2.example.com:8080;
#    server backend3.example.com ;
#    server unix:/tmp/backend3;
#
#    server backup1.example.com:8080 backup;
#    server backup2.example.com:8080 backup;
#}

#down 当前的server暂时不参与负载均衡
#backup 预留的备份服务器
#max_fails 允许请求失败的次数
#fail_timeout 经过max_fails失败后,服务器暂停时间
#max_counts 限制最大的连接的连接数

#调度算法:
#轮询            按时间顺序逐一分配到不同的后端服务器
#例:
#upstream backend{
#    server backend1.example.com;
#    server backend2.example.com;
#    server backend3.example.com;
#}

#加权轮询        weight值越大,分配到的访问几率越高
#upstream backend{
#    server backend1.example.com weight=5;
#    server backend2.example.com;
#    server backend3.example.com;

#ip_hash        每个请求按访问IP的hash结果分配,这样来自同一个IP的固定访问一个后端服务器
#upstream backend{
#    ip_hash;
#    server backend1.example.com;
#    server backend2.example.com;
#    server backend3.example.com;
#}
#least_conn        最少连接数,哪个机器连接数少就分发
#upstream backend{
#    least_conn;
#    server backend1.example.com;
#    server backend2.example.com;
#    server backend3.example.com;
#}
#url_hash        按照访问的URL的hash结果来分配请求,使每个URL定向到同一个后端服务器
#upstream backend{
#    url_hash;
#    server backend1.example.com;
#    server backend2.example.com;
#    server backend3.example.com;
#}
#hash关键数值    hash自定义的key
#Syntax: hash key [consistent];
#Default : ——
#Context:upstream
#upstream backend{
#    hash $request_uri;
#    server backend1.example.com;
#    server backend2.example.com;
#    server backend3.example.com;
#}

### Nginx 中间件面试常见问题解析 #### 1. Nginx 的基础架构与工作原理 Nginx 采用事件驱动的异步非阻塞架构,能够高效处理高并发请求。其核心模块包括 HTTP 模块、事件模块、邮件模块等。Nginx 通过 master-worker 模型管理进程,其中 master 进程负责管理 worker 进程,而 worker 进程则负责处理具体的网络请求。这种架构使得 Nginx 能够充分利用多核 CPU 资源,提升性能。 ```nginx worker_processes auto; events { worker_connections 1024; } ``` 该配置展示了如何设置 worker 进程数量以及每个 worker 可处理的最大连接数,体现了 Nginx 的并发处理能力[^1]。 #### 2. 反向代理与负载均衡 Nginx 常用于实现反向代理与负载均衡,其通过 `upstream` 模块定义后端服务器组,并结合 `proxy_pass` 指令实现请求转发。常见负载均衡算法包括轮询(默认)、加权轮询、最少连接数(least_conn)、IP 哈希(ip_hash)等。 ```nginx upstream backend { least_conn; server 127.0.0.1:8080 weight=3; server 127.0.0.1:8081; } server { listen 80; location / { proxy_pass http://backend; } } ``` 上述配置展示了如何使用最少连接数算法进行负载均衡,并通过 `weight` 参数实现加权轮询[^1]。 #### 3. 静态资源服务与缓存机制 Nginx 可以高效地处理静态资源请求,如 HTML、CSS、JS、图片等。通过配置 `location` 块,可以定义静态资源的根目录,并结合 `expires` 指令设置缓存策略,提升页面加载速度。 ```nginx location ~ \.(jpg|jpeg|png|gif|ico|css|js)$ { root /data/static; expires 30d; add_header Cache-Control "public, no-transform"; } ``` 此配置通过设置 `expires` 和 `Cache-Control` 头部,实现浏览器缓存控制,减少服务器负载[^1]。 #### 4. 安全性与访问控制 Nginx 提供多种安全机制,包括 IP 白名单、Basic Auth、限制请求方法等。例如,使用 `allow` 和 `deny` 指令可以限制特定 IP 地址的访问权限,而 `auth_basic` 指令则可以实现基于用户名和密码的认证。 ```nginx location /admin { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; allow 192.168.1.0/24; deny all; } ``` 该配置结合了 Basic Auth 和 IP 白名单,增强后台管理接口的安全性[^1]。 #### 5. 高级功能与性能调优 Nginx 支持 SSL/TLS 加密、WebSocket、HTTP/2、Gzip 压缩等高级功能。此外,通过调整 `keepalive`、`sendfile`、`tcp_nopush`、`tcp_nodelay` 等参数,可以进一步优化网络传输性能。 ```nginx http { gzip on; gzip_types text/plain application/json; keepalive_timeout 65; sendfile on; tcp_nopush on; tcp_nodelay off; } ``` 上述配置启用了 Gzip 压缩、保持连接、零拷贝传输等优化策略,提升传输效率[^1]。 ####
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值