Nginx 静态资源代理问题

2023-02-10 12:20:08 +08:00
 Macv1994

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

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

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

1868 次点击
所在节点    程序员
13 条回复
julyclyde
2023-02-10 12:26:16 +08:00
所以,你为啥要用容器呢
mango88
2023-02-10 12:56:14 +08:00
试试 try_files
loading
2023-02-10 12:57:03 +08:00
docker 就是为了伸缩,你另起一个新的,把旧的换下来。
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
2023-02-10 13:01:43 +08:00
这里有坑啊
如果容器里的文件有更新版本,那你宿主中的内容是没有更新的
如果不能维持一致性,那直接映射端口到容器吧
Macv1994
2023-02-10 14:14:26 +08:00
@lhbc 我是打算写个定时任务拷贝,如果宿主找不到,就转到后端去处理。
litchinn
2023-02-10 16:14:49 +08:00
改容器痛半小时,不改痛 3 年,我赞成 3 楼
zliea
2023-02-10 16:27:40 +08:00
一般上在集群中的 Nginx 容器:
1. 要么这个 Nginx 只为一个项目所用,每次发版,都是新的镜像;
2. 要么 Nginx 作为统一的静态资源服务器,这个 Nginx 的存储一定要挂载出来,甚至推荐性能比较好的共享存储。
“网上有修改容器配置文件的方式,但是生产环境中容器太多了,停止会导致很多服务异常,所以不考虑这种方案。”
这个你修改一个容器又不影响其他容器,甚至你可以全都改好了再进行替换都是可以的。
ThirdFlame
2023-02-10 16:43:38 +08:00
nginx 不应该是反代进去么,然后静态文件缓存。 这不是所有问题都解决了。
yc8332
2023-02-10 17:42:31 +08:00
难道你们的容器都不销毁的吗?正常不都是再次发布的时候就会启新的销毁旧的吗
aaronkk
2023-02-10 17:47:19 +08:00
有坑不及时处理后面只会越来越坑的,容器如果哪天跑崩了,就算你定时任务拷贝也会有丢失风险。
dqzcwxb
2023-02-10 17:48:13 +08:00
容器不就是准备随时销毁吗 不能销毁那不是多此一举
seers
2023-02-11 10:51:42 +08:00
sidecar 把资源拉进容器,这是标准做法

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

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

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

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

© 2021 V2EX