Nginx负载均衡、location匹配
nginx的日志
``` #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; remote_addr 访问ip地址 remote_user 访问的用户 time_local 本地时间 request 包括请求方式 请求地址 请求协议版本 status 状态码 body_bytes_sent 发送的大小 http_user_agent 用户的请求头 http_x_forwarded_for ```
禁止访问
``` 可以写在server或者location里面 deny 192.168.21.1; allow 192.168.21.131; deny 192.168.21.0/24; ```
反向代理
- 起到保护网站安全的作用
- 可以缓存静态文件
- 实现负载均衡 F5 A10 lvs haproxy nginx
``` upstream django { server 192.168.21.128:81; } server { listen 80 default_server; listen [::]:80 default_server; server_name _; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://django; } ```
权重
weight
``` upstream django { server 192.168.21.128:81 weight=3; server 192.168.21.131:81 } server { listen 80 default_server; listen [::]:80 default_server; server_name _; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://django; } } 得到的结果是: 访问128的3次,才访问131的一次 ```
ip_hash
每个请求的ip做hash运算,这样每个固定的访客都会被负载到后端固定的机器
``` upstream django { ip_hash; server 192.168.21.128:81 server 192.168.21.131:81 } ```
backup
当前面的都访问不到,则请求backup的备份,只要有一个通,则不会走backup
``` upstream django { server 192.168.21.128:81; server 192.168.21.131:81; server 192.168.21.131:82 backup; } ```
nginx location匹配规则
``` location = / { 精确匹配/ ,后面不能带其他的东西 [ configuration A ] } location / { 所有的以/开头的地址 [ configuration B ] } location /documents/ { 只匹配/documents/ [ configuration C ] } location ^~ /images/ { # 匹配以/images/开头。 ~严格大小写 [ configuration D ] } location ~* \.(gif|jpg|jpeg)$ { 以(gif|jpg|jpeg)结尾的文件 ~* 不区分大小写 [ configuration E ] } 优先级 = > 完整路径 > ^~ > / ```
location分离
``` server { listen 80 ; server_name www.taobao.com taobao.com; location / { proxy_pass http://192.168.21.131:82; } location ~*\.(jpg|gif|png)$ { root /data/img; } ```
status
``` location /status { stub_status on; } ```
压缩
```
gzip on
提高响应速度,节省带宽
```
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~