NGINX 是一款高性能的开源 Web 服务器和反向代理服务器,常用于处理高并发场景,其功能丰富且灵活。以下是 NGINX 的常用功能及详细说明:
一、静态资源服务器
功能说明:直接处理 HTML、CSS、JavaScript、图片、视频等静态文件请求,无需通过后端应用服务器,提升响应速度。
应用场景:
• 托管网站静态资源(如博客、企业官网)。
• 分离动态与静态资源,减轻后端压力。
配置示例:
location /static/ {
root /var/www/html; # 静态资源存放路径
index index.html; # 默认索引文件
autoindex on; # 开启目录浏览(测试环境使用,生产环境建议关闭)
expires 30d; # 设置缓存过期时间(减少重复请求)
}
二、反向代理
功能说明:作为客户端和后端服务器之间的中间层,将客户端请求转发到不同的后端服务器(如 Tomcat、Node.js、Django 等),隐藏真实服务器地址,提高安全性。
应用场景:
• 负载均衡:将请求分发到多个后端服务器,避免单点故障。
• 跨域请求处理:通过代理转发解决浏览器跨域限制。
配置示例:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server; # 转发到后端服务器(如 http://127.0.0.1:8080)
proxy_set_header Host $host; # 传递客户端真实域名
proxy_set_header X-Real-IP $remote_addr; # 传递客户端真实 IP
}
}
三、负载均衡
功能说明:通过算法将请求均匀分配到多个后端服务器,提升系统吞吐量和可用性。
常用负载均衡算法:
1. 轮询(默认):依次将请求分配到各个服务器。
2. 加权轮询:为不同性能的服务器设置权重(weight),权重越高分配请求越多。
3. IP 哈希:根据客户端 IP 地址进行哈希计算,确保同一客户端始终访问同一服务器(用于保持会话状态)。
4. 最少连接:将请求分配给当前连接数最少的服务器。
配置示例(加权轮询):
upstream backend {
server 192.168.1.1 weight=3; # 高配置服务器权重设为 3
server 192.168.1.2 weight=1; # 低配置服务器权重设为 1
}
server {
location / {
proxy_pass http://backend;
}
}
四、HTTP 缓存
功能说明:通过配置 expires、Cache-Control 等响应头,控制客户端(浏览器)或代理服务器对资源的缓存策略,减少重复请求和带宽消耗。
核心指令:
• expires:设置资源过期时间(如 expires 7d 表示 7 天后过期)。
• proxy_cache:配置代理缓存(用于缓存后端服务器响应结果,减少后端压力)。
应用场景:
• 缓存不常更新的静态资源(如图片、CSS、JS)。
• 降低动态请求的重复处理(需结合后端逻辑)