linux - 如何优化此 nginx 代理缓存配置?

标签 linux ubuntu nginx proxy reverse-proxy

我想在 Nginx 反向代理中缓存所有 *.html 文件,所以我添加了配置:

# Original configuration
location = / {
    proxy_pass   http://192.168.12.12:91;
    proxy_set_header        Host $host;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
}

# Added for cache
location ~ \.html {
    proxy_pass   http://192.168.12.12:91;
    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_cache cache_one;
    proxy_cache_key $host$uri$is_args$args;
    proxy_cache_valid 200 301 302 1m;
    proxy_cache_valid any 1m;
    expires     1m;
}

重复两次proxy_passproxy_set_header感觉不好

我该如何优化它?谢谢!

最佳答案

嵌套位置是使用正则表达式创建位置的正确方法,它应该可以实现您想要实现的目标。

location / {
    proxy_pass          http://192.168.12.12:91;
    proxy_set_header    Host $host;
    proxy_set_header    X-Real-IP $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;

    location ~* \.html$ {
        proxy_cache          cache_one;
        proxy_cache_key      $host$uri$is_args$args;
        proxy_cache_valid    any 1m;
        expires              1m;
    }
}

我不确定嵌套位置是否真的使用外部位置 block 中的选项。如果没有(我现在无法对此进行测试),您可以创建单独的文件。

location / {
    include proxy.conf;

    location ~* \.html$ {
        include              proxy.conf;
        proxy_cache          cache_one;
        proxy_cache_key      $host$uri$is_args$args;
        proxy_cache_valid    any 1m;
        expires              1m;
    }
}

proxy.conf

    proxy_pass          http://192.168.12.12:91;
    proxy_set_header    Host $host;
    proxy_set_header    X-Real-IP $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;

这肯定会奏效。

关于linux - 如何优化此 nginx 代理缓存配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17259419/

相关文章:

python - 使用 AWS 部署 Django

apache - Ubuntu 16.04 上的数学

python-3.x - Zipline 导入错误。没有名为 zipline.transforms 的模块

nginx - Map指令中的变量插值

linux - SED 不打印最后的输入

linux - 如何更新终端上特定行的文本?

python - 可以用uwsgi协议(protocol)调用http吗?

nginx - 使用 nginx 将域添加到 Set-Cookie

linux - 将 bash 数据保存到 Redis

xml - 根据搜索父叶字符串从 xml 中查找并打印特定字符串