请教一下下面这个nginx反代缓存静态文件有问题吗
本帖最后由 t9913085 于 2017-12-26 19:32 编辑已经解决 本帖最后由 t9913085 于 2017-12-24 14:24 编辑
我看到有些参考代码
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
会写成location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)?$
这两者有什么差别吗 t9913085 发表于 2017-12-24 14:21
我看到有些参考代码
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
这里用的应该是正则,至于“?”具体什么意思,我也不太懂,大概就是前面(GIF | JPG | JPEG | PNG | BMP | SWF | JS | CSS)可有可无吧 本帖最后由 t9913085 于 2017-12-24 15:00 编辑
litter123 发表于 2017-12-24 14:54
这里用的应该是正则,至于“?”具体什么意思,我也不太懂,大概就是前面(GIF | JPG | JPEG | PNG | BMP ...
谢谢,
再问一下,
我这段代码可以做到只缓存并读取静态文件gif|jpg|jpeg|png|bmp|swf|js|css的目的吗?
因为用了两段反代代码 有问题呀,你这写法,充分验证了我之前说过的 “模板只会害人”。
你既然是反代了,proxy_set_header Host $Host; 这里就不该写 $Host 了,有两种改法:1.把 $Host 这个值改为你要反代的目标的 host(具体的值);2.干脆去掉这行,如果没特殊需求,建议去掉。
上面这个都只是小问题,你这个配置最大的问题在于反代一丁点都不会有缓存:
location 不是无脑照搬的,并且是有固定匹配规则的,你分开写到两个 location 里面,两个规则不会被同时匹配的,最后结果就是:你访问 gif 等等根本就不会反代,你访问其它路径会经过反代,但是不会经过 proxy_cache。
最后,给你一个链接,我是已经写的够详细了:
https://sometimesnaive.org/article/webfield/nginx/enable-proxy_cache 南琴浪 发表于 2017-12-24 15:20
有问题呀,你这写法,充分验证了我之前说过的 “模板只会害人”。
你既然是反代了,proxy_set_header Host ...
活捉野生大佬yc011t 南琴浪 发表于 2017-12-24 15:20
有问题呀,你这写法,充分验证了我之前说过的 “模板只会害人”。
你既然是反代了,proxy_set_header Host ...
不过我测试了,虽然有两个location,但是的确生成了缓存文件
/home/cache/nginx_proxy_temp 这个目录没有写入,
但是 /home/cache/nginx_proxy_cache 有写入文件 不过我去仔细摸索一下你的链接文章 t9913085 发表于 2017-12-24 15:38
不过我测试了,虽然有两个location,但是的确生成了缓存文件
/home/cache/nginx_proxy_temp 这个目录没有 ...
生成文件是因为你的第二个 location 能缓存,但是是不会经过反代的,所以缓存的也是错误内容。 南琴浪 发表于 2017-12-24 15:44
生成文件是因为你的第二个 location 能缓存,但是是不会经过反代的,所以缓存的也是错误内容。 ...
看了一下location处理的优先级问题,貌似没有问题,应该会反代并且缓存
http://www.nginx.cn/115.html
页:
[1]
2