nginx反向代理缓存教程。
nginx反向代理缓存教程。
2024-09-06 05:28
Nginx反向代理缓存配置教程 Nginx 作为高效、稳定的反向代理服务器,广泛应用于负载均衡、静态资源缓存等场景。配置反向代理缓存不仅能够提高服务响应速度,还能显著减轻后端服务器的压力。
Nginx反向代理缓存配置教程
Nginx 作为高效、稳定的反向代理服务器,广泛应用于负载均衡、静态资源缓存等场景。配置反向代理缓存不仅能够提高服务响应速度,还能显著减轻后端服务器的压力。在以下教程中,将详细讲解如何通过 Nginx 配置反向代理缓存,并分析每个步骤的原理和作用。

Nginx 安装
在 Linux 服务器(以 Ubuntu 为例)上安装 Nginx,首先需要确保系统软件包是最新的:
sudo apt update
sudo apt install nginx
解释:
sudo apt update
: 更新本地软件源列表,以确保获取最新的软件包信息。sudo apt install nginx
: 安装 Nginx 软件包。
配置反向代理缓存
安装完成后,接下来对 Nginx 进行缓存相关配置。Nginx 的配置文件位于 /etc/nginx/nginx.conf
。需要在 http
块中添加缓存配置。
1. 打开 Nginx 配置文件
sudo nano /etc/nginx/nginx.conf
2. 添加缓存配置
在 http
块中,添加以下内容:
http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
...
}
详细解释:
-
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
proxy_cache_path
:指定缓存的存储路径为/var/cache/nginx
。levels=1:2
表示缓存文件目录层级为两层,方便大量缓存文件的组织和管理。keys_zone=my_cache:10m
:定义一个名为my_cache
的缓存区域,大小为 10MB,用于存储缓存的元数据(如缓存键、有效期等)。max_size=10g
:设置缓存目录最大可用空间为 10GB。inactive=60m
:缓存文件如果 60 分钟内未被访问,则会被标记为过期。use_temp_path=off
:禁用临时路径,以提高磁盘 I/O 性能,直接写入缓存路径。
-
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_key
:设置缓存键的组成部分,用于区分不同的请求。使用了协议类型($scheme
)、请求方法($request_method
)、主机名($host
)和请求 URI($request_uri
)作为唯一标识符。
-
proxy_cache_valid 200 302 10m;
proxy_cache_valid
:针对状态码 200 和 302 的响应,设置缓存时间为 10 分钟。
-
proxy_cache_valid 404 1m;
- 针对 404 响应,设置缓存时间为 1 分钟。这样可以减少无效请求对后端服务器的压力。
3. 配置反向代理服务器
在 Nginx 配置文件中,server
块定义了反向代理的行为。将缓存应用到反向代理上,可以大幅度提高性能。
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
}
}
详细解释:
-
proxy_pass http://backend_server;
proxy_pass
:指定 Nginx 将所有请求转发给后端服务器(backend_server
)。backend_server
可以是域名或 IP 地址,例如http://127.0.0.1:8080
。
-
proxy_set_header Host $host;
proxy_set_header
:将客户端请求的Host
头信息传递给后端服务器,确保后端能够识别来自哪个域名的请求。
-
proxy_cache my_cache;
proxy_cache
:启用缓存功能,指定使用my_cache
区域(即之前在http
块中定义的缓存区域)。
-
proxy_cache_valid 200 302 10m;
- 针对 200 和 302 响应,设置缓存时间为 10 分钟。
-
proxy_cache_valid 404 1m;
- 针对 404 响应,设置缓存时间为 1 分钟。
-
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
proxy_cache_use_stale
:在出现错误(如 500、502、503、504),或者与后端服务器通信超时时,Nginx 可以返回已过期的缓存内容(即陈旧缓存),确保服务的稳定性。
保存并关闭配置文件
编辑完成后,按 Ctrl + O
保存文件,按 Ctrl + X
退出编辑器。
检查 Nginx 配置是否正确
在重新加载 Nginx 配置之前,建议通过以下命令检查配置的正确性:
sudo nginx -t
解释:
nginx -t
:测试 Nginx 配置文件是否存在语法错误或其他问题。如果输出结果为syntax is ok
和test is successful
,则说明配置文件正确无误。
重新加载 Nginx 配置
确认配置无误后,通过以下命令重新加载 Nginx,使新的配置生效:
sudo systemctl reload nginx
解释: