当前位置:首页技术记录一个域名反代多个域名,反代并缓存图片

一个域名反代多个域名,反代并缓存图片

在这个配置中,我们在 Server 块中定义了多个域名(image1.example.com 和 image2.example.com)反向代理到同一个服务器 backend_server 上。我们使用了 proxy_pass 指令将请求转发到后端服务器,并使用了 proxy_set_header 给请求附加了 Host 字段以便后端服务器识别请求来自于哪个域名。并且在 Location 块中定义了缓存配置,同时使用 if 条件语句根据当前域名设定不同的缓存路径和缓存键值,保证不同域名缓存的图片在不同的文件夹里。注意缓存路径必须在 proxy_cache_path 前面已经声明过,否则会报错。

http {
    # 定义缓存路径和缓存的有效期
    proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:100m inactive=60m;
    proxy_cache_key "$scheme$request_method$host$request_uri";
    proxy_cache_valid 200 60m;

    # 定义多个域名反向代理到同一个服务器
    server {
        listen 80;
        server_name image1.example.com image2.example.com;

        # 反代到同一个服务器上,根据 Host 字段转发请求
        location / {
            add_header Cache-Control "public";
            proxy_pass http://backend_server$request_uri;
            proxy_set_header Host $http_host;
        }

        # 根据不同域名设置不同的缓存路径和缓存键值
        if ($http_host = "image1.example.com") {
            proxy_cache_path /path/to/cache1 levels=1:2 keys_zone=my_cache1:100m inactive=60m;
            proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
        }

        if ($http_host = "image2.example.com") {
            proxy_cache_path /path/to/cache2 levels=1:2 keys_zone=my_cache2:100m inactive=60m;
            proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
        }
    }
}
个人中心
搜索