V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Macv1994
V2EX  ›  程序员

Nginx 静态资源代理问题

  •  
  •   Macv1994 ·
    weijiang1994 · 2023-02-10 12:20:08 +08:00 · 1849 次点击
    这是一个创建于 661 天前的主题,其中的信息可能已经有所发展或是发生改变。

    后端服务跑在 docker 里面,创建容器的时候没有映射卷,采用曲线救国的方式把容器内的文件夹手动拷贝到宿主机中,但是如果增加新的文件,宿主机中没有会导致 404 ,有没有办法在 404 的时候,直接将请求转发到后端程序处理呀?

    网上有修改容器配置文件的方式,但是生产环境中容器太多了,停止会导致很多服务异常,所以不考虑这种方案。

    我现在想的方案是 NGINX 静态资源 404 的时候,直接把请求转到后端服务去处理,但是不知道配置文件咋写,有咩有大佬指教一下。

    13 条回复    2023-02-11 10:51:42 +08:00
    julyclyde
        1
    julyclyde  
       2023-02-10 12:26:16 +08:00
    所以,你为啥要用容器呢
    mango88
        2
    mango88  
       2023-02-10 12:56:14 +08:00
    试试 try_files
    loading
        3
    loading  
       2023-02-10 12:57:03 +08:00 via Android
    docker 就是为了伸缩,你另起一个新的,把旧的换下来。
    SixGod66
        4
    SixGod66  
       2023-02-10 12:57:30 +08:00
    干好看到过:
    location / {
    try_files /system/maintenance.html
    $uri $uri/index.html $uri.html
    @mongrel;
    }
    location @mongrel {
    proxy_pass http://mongrel;
    }
    lhbc
        5
    lhbc  
       2023-02-10 13:01:43 +08:00 via Android
    这里有坑啊
    如果容器里的文件有更新版本,那你宿主中的内容是没有更新的
    如果不能维持一致性,那直接映射端口到容器吧
    Macv1994
        6
    Macv1994  
    OP
       2023-02-10 14:14:26 +08:00 via Android
    @lhbc 我是打算写个定时任务拷贝,如果宿主找不到,就转到后端去处理。
    litchinn
        7
    litchinn  
       2023-02-10 16:14:49 +08:00
    改容器痛半小时,不改痛 3 年,我赞成 3 楼
    zliea
        8
    zliea  
       2023-02-10 16:27:40 +08:00
    一般上在集群中的 Nginx 容器:
    1. 要么这个 Nginx 只为一个项目所用,每次发版,都是新的镜像;
    2. 要么 Nginx 作为统一的静态资源服务器,这个 Nginx 的存储一定要挂载出来,甚至推荐性能比较好的共享存储。
    “网上有修改容器配置文件的方式,但是生产环境中容器太多了,停止会导致很多服务异常,所以不考虑这种方案。”
    这个你修改一个容器又不影响其他容器,甚至你可以全都改好了再进行替换都是可以的。
    ThirdFlame
        9
    ThirdFlame  
       2023-02-10 16:43:38 +08:00
    nginx 不应该是反代进去么,然后静态文件缓存。 这不是所有问题都解决了。
    yc8332
        10
    yc8332  
       2023-02-10 17:42:31 +08:00
    难道你们的容器都不销毁的吗?正常不都是再次发布的时候就会启新的销毁旧的吗
    aaronkk
        11
    aaronkk  
       2023-02-10 17:47:19 +08:00
    有坑不及时处理后面只会越来越坑的,容器如果哪天跑崩了,就算你定时任务拷贝也会有丢失风险。
    dqzcwxb
        12
    dqzcwxb  
       2023-02-10 17:48:13 +08:00
    容器不就是准备随时销毁吗 不能销毁那不是多此一举
    seers
        13
    seers  
       2023-02-11 10:51:42 +08:00 via Android
    sidecar 把资源拉进容器,这是标准做法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1434 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:28 · PVG 01:28 · LAX 09:28 · JFK 12:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.