nginx服务配置
nginx服务配置
# 定义缓存路径和区域
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g
inactive=60m use_temp_path=off;
# 定义上游服务器组(负载均衡)
upstream backend_servers {
# 使用IP哈希实现会话保持
ip_hash;
# 后端服务器,weight表示权重
server 192.168.1.101:8080 weight=3; # 这台服务器处理更多请求
server 192.168.1.102:8080 weight=2;
server 192.168.1.103:8080 weight=1; # 这台服务器处理较少请求
server 192.168.1.104:8080 backup; # 备份服务器,只有当其他都不可用时才启用
}
server {
listen 80;
server_name example.com;
# 隐藏Nginx版本信息
server_tokens off;
# 静态文件服务 - 直接由Nginx处理,不代理到后端
location /static/ {
alias /var/www/static/;
expires 30d; # 客户端缓存30天
access_log off;
}
# API接口 - 启用缓存
location /api/ {
# 启用缓存
proxy_cache my_cache;
# 缓存规则:200响应码缓存10分钟,404缓存1分钟
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
# 只有GET和HEAD请求被缓存
proxy_cache_methods GET HEAD;
# 当多个请求同时到达时,只让一个请求去后端,其他等待结果
proxy_cache_lock on;
proxy_cache_lock_timeout 5s;
# 跳过某些请求的缓存(如带认证头的)
proxy_cache_bypass $http_authorization;
# 设置缓存键(可根据业务需求定制)
proxy_cache_key "$scheme$request_method$host$request_uri$http_authorization";
# 代理到后端服务器组
proxy_pass http://backend_servers;
# 隐藏真实服务器信息 - 设置代理头
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
# 超时设置
proxy_connect_timeout 30s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
# 启用压缩
gzip on;
gzip_types application/json;
}
# 动态内容 - 不缓存
location / {
proxy_pass http://backend_servers;
# 隐藏真实服务器信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 超时设置
proxy_connect_timeout 30s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
}
# 健康检查端点(可选)
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1; # 只允许本地访问
allow 192.168.1.0/24; # 或者内网IP段
deny all;
}
}
🔧 配置说明
1. 负载均衡效果
- 请求到达
example.com时,Nginx 会按照3:2:1的权重比例分发到三台后端服务器 - 使用
ip_hash确保同一用户的请求总是发往同一台后端服务器(会话保持) - 当 101、102、103 都宕机时,104 备份服务器会自动启用
2. 隐藏真实服务器
- 后端服务器只看到来自 Nginx 的请求,不知道真实客户端 IP
- 通过
proxy_set_header将客户端真实 IP 传递给后端 server_tokens off隐藏 Nginx 版本信息
3. 缓存策略
- 静态文件:直接由 Nginx 服务,不经过后端
- API 接口:缓存 GET 请求的响应,减少后端压力
- 动态内容:不缓存,直接代理到后端
🚀 部署步骤
创建缓存目录:
sudo mkdir -p /var/cache/nginx
sudo chown -R nginx:nginx /var/cache/nginx
检查配置语法:
nginx -t
重载配置:
nginx -s reload
📊 验证配置
- 检查负载均衡:
# 多次访问观察请求分发
curl http://example.com/api/test
检查缓存:
查看缓存目录是否生成文件:
ls -la /var/cache/nginx/
检查状态:
curl http://example.com/nginx_status
这样的配置能够有效提升网站性能、增强安全性,并提高系统的可用性。根据你的具体业务需求,可以调整缓存时间、负载均衡策略等参数。

浙公网安备 33010602011771号