在 Nginx 中缓存上游服务器返回的 HTML、CSS 和 JS 文件可以通过配置代理缓存来实现。下面是一个基本的示例配置,展示了如何设置 Nginx 以缓存来自上游服务器(如应用服务器或其他 HTTP 服务)的静态文件。
Nginx 配置示例
http {
# 定义缓存路径和相关参数
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://upstream_server; # 替换为你的上游服务器地址
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_cache my_cache;
proxy_cache_valid 200 60m; # 对于200响应,缓存60分钟
proxy_cache_valid 404 1m; # 对于404响应,缓存1分钟
add_header X-Cache-Status $upstream_cache_status; # 添加自定义头部查看缓存状态
}
location ~* \.(html|css|js)$ {
expires 30d; # 设置过期时间为30天
add_header Cache-Control "public, max-age=2592000";
}
}
}
配置说明
proxy_cache_path
: 定义了 Nginx 缓存的位置和相关参数。levels
: 缓存目录结构的层级。keys_zone
: 指定一个共享内存区域来存储有关已缓存内容的信息。max_size
: 设置最大缓存大小。inactive
: 在此时间内未被访问的内容将被删除。
server
: 创建一个监听特定端口的虚拟主机。location /
: 所有请求都转发到上游服务器,同时开启代理缓存。location ~* \.(html|css|js)$
: 对于 HTML、CSS 和 JS 文件进行额外处理,例如设置过期时间和 Cache-Control 策略。add_header X-Cache-Status ...
: 可以帮助调试和监控哪些内容是从缓存中提供的,哪些是直接从上游获取的。
注意事项
- 确保 Nginx 有权限写入指定的缓冲路径
/var/cache/nginx/
. - 根据需要调整
max_size
,inactive
, 和其他参数以适应你的需求。 - 每次更新后,重启 Nginx 或重新加载配置文件 (
nginx -s reload
)。
希望这个示例能帮到你!如果你有其他具体问题,请告诉我。
内容由零声教学AI助手提供,问题来源于学员提问