文档首页> IDC服务> nginx反向代理缓存教程。

nginx反向代理缓存教程。

发布时间:2024-09-05 08:21       

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/nginxlevels=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

解释