用 Nginx 做反向代理时,有一些出现错误后返回 200 的脚本/文件想要不缓存应该怎么做?

2017-04-30 23:50:15 +08:00
 lslqtz
我自己是想判断文件实现,但是判断文件 Nginx 里面的变量试过似乎没法用。
各位 V 友有什么好的方法实现么?
3145 次点击
所在节点    问与答
8 条回复
ryd994
2017-05-01 00:55:31 +08:00
cache control
lslqtz
2017-05-01 01:00:41 +08:00
@ryd994 是反向代理的缓存,不是浏览器的缓存来着...
而且我是希望不超过某个大小的文件才不缓存
baskice
2017-05-01 03:58:42 +08:00
能控制源出错不要返回 200 最好
如果不行文件 type 判断可试一试,比如正常返回 js,错误变 plan text 这样
ryd994
2017-05-01 05:19:36 +08:00
@lslqtz 你能控制源么?
nullen
2017-05-01 08:02:26 +08:00
同 @ryd994,如果能控制源的话,cache-control: no-cache。判断文件内容用 lua 处理可以达到目的。
lslqtz
2017-05-01 12:42:45 +08:00
@ryd994 @nullen 不能控制源
@baskice 可是我觉得应该也没法判断。。
ryd994
2017-05-01 13:17:17 +08:00
不考虑非官方插件的话无解
Nginx 本来都没有读响应体的办法
Nginx 的目标一直是快而小,想要检查相应体的话就要 buffer 整个响应体。而 Nginx 是尽可能左耳进右耳出。这个需求和反代的通常需求是相违背的。你可能需要自己做个缓存后端

我觉得可能行的办法:用 proxy_store,然后后台另一个进程扫。如果不想要缓存的话就删掉。这个方法只适用于同 URL 下请求不频繁的情况。不过看你这个问题大概是 API,那就不行了。
lslqtz
2017-05-01 15:35:16 +08:00
@ryd994 是的 目前我用的就是 proxy_store
主要是担心扫会有性能问题,因为未来会有大量文件。
然后这个不是 API。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/358296

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX