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

#Nginx缓存服务
#配置语法
#定义
Syntax: proxy_cache_path path [levels=levels]
[use_temp_path = on|off] keys_zone=name:size [inactive=time]
[max_size=size] [manager_files=number] [manager_sleep=time]
[manager_threshold=time][loader_file=number]
[loader_sleep=time][loader_threshold=time][purger=on|off]
[purger_file=number][purger_sleep=time]
[purger_threshold=time];
Default : ——
Context:http

#使用
Syntax: proxy_cache zone  on|off;
Default : proxy_cache off
Context:http,server,location

#缓存过期周期
Syntax: proxy_cache_valid [code...] time;
Default : proxy_cache off
Context:http,server,location

#缓存维度
Syntax: proxy_cache_key string;
Default : proxy_cache_key $scheme$proxy_host$request_uri;
Context:http,server,location


#例:
#                  存放临时缓存文件  按2层目录分级 开启zone空间名字:大小  最大10g  60分钟之内无访问删除  存放临时文件关闭
#proxy_cache_path /opt/app/cache levels=1:2 keys_zone=imooc_cache:10m max_size=10g inactive=60m use_temp_path=off;
# location / {
#       proxy_cache imooc_cache;
#                         状态200、304的周期是12h
#       proxy_cache_valid 200 304 12h;
#                         其他状态10m
#       proxy_cache_valid any 10m;
#       proxy_cache_key $host$uri$is_args$args;
#                                返回头可以看出是否命中
#       add_header  Nginx-Cache "$upstream_cache_status";  
#       
#       proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
#       include proxy_params;
#    }

#部分页面不缓存
Syntax: proxy_no_cache string;
Default : ——
Context:http,server,location
#例:
#if($request_uri ~ ^/(url3|login|register|password\/reset)){
#    set $cookie_nocache 1;
#}
# location / {
#       proxy_cache imooc_cache;
#                         状态200、304的周期是12h
#       proxy_cache_valid 200 304 12h;
#                         其他状态10m
#       proxy_cache_valid any 10m;
#       proxy_cache_key $host$uri$is_args$args;
#        proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
#        proxy_no_cache $http_pragma $http_authorization;
#                                返回头可以看出是否命中
#       add_header  Nginx-Cache "$upstream_cache_status";  
#       
#       include proxy_params;
#    }


#大文件分片请求
#切割成size片
Syntax: slice size;
Default : slice 0;
Context:http,server,location
 

### 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、付费专栏及课程。

余额充值