V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lslqtz
V2EX  ›  问与答

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

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

    我觉得可能行的办法:用 proxy_store,然后后台另一个进程扫。如果不想要缓存的话就删掉。这个方法只适用于同 URL 下请求不频繁的情况。不过看你这个问题大概是 API,那就不行了。
    lslqtz
        8
    lslqtz  
    OP
       2017-05-01 15:35:16 +08:00
    @ryd994 是的 目前我用的就是 proxy_store
    主要是担心扫会有性能问题,因为未来会有大量文件。
    然后这个不是 API。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6243 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:31 · PVG 10:31 · LAX 18:31 · JFK 21:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.