檔案總覽
📌 有懂nginx的大佬么?我这个配置文件为什么不起作用共 9 樓
主帖斌斌
🕐 2025-4-13 21:33:16
我想部署程序的时候,不影响线上使用的人,就想访问5039端口接口出错的时候,自动切换5038,是个备用的接口,但是我测试了不起作用。

如果我5039无法访问,nginx 就502错误。怎么设置才能正常?首选一个接口,有问题自动换另一个?

upstream api {

server localhost:5039;

server localhost:5038 backup;

}



location / {

proxy_pass http://api/;

proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

proxy_next_upstream_tries 2;

}
#? 樓hanada
🕐 2025-4-13 21:47:19
请求是POST吗,是的话得加上non_idempotent,还有api后面不要接斜杠,直接proxy_pass http://api;
#? 樓幽影寻秋
🕐 2025-4-13 21:51:02
5038和5039都指向同一个源,源端出问题了,你为什么会认为5038可以用呢。应该想办法解决源程序为什么挂了
#? 樓jekyll
🕐 2025-4-13 22:15:13
多此一举啊,都在同一台机上意义不大,起码搞2个域名分开2台机器

不过还真没用过backup,帮不到你。
#? 樓misakafa
🕐 2025-4-13 22:34:53
本帖最后由 misakafa 于 2025-4-13 22:43 编辑

后端监听的端口是分开的程序?
#? 樓斌斌
🕐 2025-4-14 16:40:32
幽影寻秋 发表于 2025-4-13 21:51

5038和5039都指向同一个源,源端出问题了,你为什么会认为5038可以用呢。应该想办法解决源程序为什么挂了 ...
#? 樓pykane
🕐 2025-4-14 16:52:51
NGINX的负载你要先理解一个基本原理。

1.NGINX 是不会检测你后端的HTTP 状态代码,也就是说,你说的出错,是程序出错?50X 一类的?那些NGINX是不管的,

2. 他只检测你的后端程序的端口是否能连接上,能的话就认为他是可用的。仅此而已。
#? 樓打酱油的
🕐 2025-4-14 16:59:28
你的配置方式走的被动检查

编译下 nginx_upstream_check_module ,用http协议健康检查实现主动探测,检查可用才路由请求
#? 樓幽影寻秋
🕐 2025-4-14 21:59:33
斌斌 发表于 2025-4-14 16:40

我是2个端口都是docker,5039是常用软件,我更新的时候,先再启动一份5038,然后删除5039,更新5039,更 ...