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

用 SSH 内网穿透搭建 web 网站,如何避免静态文件被运营商缓存?

  •  
  •   laojifuli · 2020-09-19 13:02:25 +08:00 · 1966 次点击
    这是一个创建于 1286 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大佬们好,我是新来的

    我有一台服务器 A,内网有 ubuntu 虚拟机 B,A 跟 B 都安装了带宝塔的 lnmp 环境

    我将域名 abc.com 解析到服务器 A,然后在机器 B 上用 SSH 命令配合服务器 A 上的 nginx 反向代理,实现了可以将 abc.com 的内容放在机器 B 上并能外网访问,在服务器 A 上安装域名 abc.com 的 SSL 证书,也能实现 https://abc.com 的访问。

    但是目前有一个很严重的问题,就是我在机器 B 里面改的静态文件,都会被运营商缓存起来,导致每次改图片或者 css 的时候都必须把文件名一起改了才行。

    SSH 内网穿透命令如下:ssh -p 12223 -NCvR 8082:192.168.1.101:80 [email protected]

    求教这里的大佬帮忙看下,感谢。

    20 条回复    2020-09-20 12:13:39 +08:00
    ferock
        1
    ferock  
       2020-09-19 13:10:57 +08:00
    文件后面加上版本号,每次文件更新以后调整版本号

    https://xxx.com/1.css?v=1
    oott123
        2
    oott123  
       2020-09-19 15:10:03 +08:00 via Android   ❤️ 1
    浏览器-( https)-服务器 A-(ssh)-服务器 B

    你的数据传输隧道都是安全可靠的,因而这不是运营商的问题。
    chaodada
        3
    chaodada  
       2020-09-19 15:24:19 +08:00
    @ferock 老铁 这个网址很带劲啊 哈哈哈哈哈哈哈哈
    natashahollyz
        4
    natashahollyz  
       2020-09-19 15:33:44 +08:00
    @chaodada 就因为你,我还打开看了下。。。
    告辞
    chaodada
        5
    chaodada  
       2020-09-19 15:48:56 +08:00 via iPhone
    @natashahollyz #4 哈哈哈哈哈哈哈哈哈😂
    Osk
        6
    Osk  
       2020-09-19 15:57:06 +08:00
    公网 ngx -> ssh tunnel -> 内网 web server

    外部是 ssl 的,nginx 和 web 服务器间是 ssh 隧道,isp 没地方插手啊。


    还是我看错了?
    h503mc
        7
    h503mc  
       2020-09-19 16:26:21 +08:00   ❤️ 1
    @ferock 建议使用 example.com
    laojifuli
        8
    laojifuli  
    OP
       2020-09-19 18:05:49 +08:00
    @ferock 感谢老铁,感觉有点麻烦,我现在是每次把文件重命名,文件名后面加 1,2,3,4,5,,,,,也算是版本号吧
    laojifuli
        9
    laojifuli  
    OP
       2020-09-19 18:08:10 +08:00
    @oott123 是这个传输过程。我想是不是我内网是 80 端口,然后 ssh 转发到服务器的,这个过程运营商会不会能缓存?
    laojifuli
        10
    laojifuli  
    OP
       2020-09-19 18:11:06 +08:00
    @Osk 是这个流程。那大神是否知道,我的这个缓存是哪里来的,我就算把本地的静态文件删掉了,浏览器还是能访问到这个文件。如果不是运营商缓存,我就真不知道是哪里的缓存了:(
    nomansky
        11
    nomansky  
       2020-09-19 18:13:32 +08:00 via iPhone
    要不就是你浏览器的,要不就是你 web 服务器的缓存
    swulling
        12
    swulling  
       2020-09-19 18:17:09 +08:00 via iPhone
    1. 这个不是运营商的缓存
    2. 从描述看大概率是浏览器的缓存,可以通过开发者控制台看到
    3. 给静态资源加版本号是标准做法,大部分前端库都是解决方案
    laojifuli
        13
    laojifuli  
    OP
       2020-09-19 18:17:11 +08:00
    @nomansky 好的,感谢。应该不是浏览器,因为换浏览器,甚至说用 curl 直接抓都能抓到。我从 web 服务器这点看看。
    laojifuli
        14
    laojifuli  
    OP
       2020-09-19 18:18:16 +08:00
    @swulling 应该不是浏览器,因为换浏览器,甚至说用 curl 直接抓都能抓到
    ThirdFlame
        15
    ThirdFlame  
       2020-09-19 18:18:36 +08:00
    服务器 A 上的 nginx 反向代理 勾选了 缓存功能。
    zoikhemlab
        16
    zoikhemlab  
       2020-09-19 20:03:45 +08:00
    @natashahollyz 就因为你,我也打开看了下。。。
    告辞
    laojifuli
        17
    laojifuli  
    OP
       2020-09-19 20:53:49 +08:00
    @ThirdFlame 感谢老铁,我去看看,感觉应该就是这个问题了
    kangsheng9527
        18
    kangsheng9527  
       2020-09-19 23:28:49 +08:00
    http header 设置 nocache,以及 url 产出随机小尾巴。。。
    ferock
        19
    ferock  
       2020-09-20 09:14:35 +08:00
    @chaodada #3

    靠,我闭着眼随便打的。。。。md,还没法修改。
    laojifuli
        20
    laojifuli  
    OP
       2020-09-20 12:13:39 +08:00
    @kangsheng9527 不知道是我设置问题还是宝塔问题,设置 nocache 不行。。。我设置了有 cache,然后缓存时间设置为 0,然后好了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3001 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 14:49 · PVG 22:49 · LAX 07:49 · JFK 10:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.