全球主机交流论坛备用站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

全球云38元起免备案V2EX搬瓦工VPS
SEO查询超级PING网站测速
Virmach特价鸡乌云漏洞吾爱破解
查看: 135|回复: 8

有懂nginx的大佬么?我这个配置文件为什么不起作用

[复制链接]

716

主题

1203

回帖

5566

积分

论坛元老

Rank: 8Rank: 8

积分
5566
发表于 7 天前 | 显示全部楼层 |阅读模式
20230417
我想部署程序的时候,不影响线上使用的人,就想访问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;
    }
MJJ,你的签名掉了~~~
回复

使用道具 举报

5

主题

161

回帖

573

积分

高级会员

Rank: 4

积分
573
发表于 7 天前 | 显示全部楼层
请求是POST吗,是的话得加上non_idempotent,还有api后面不要接斜杠,直接proxy_pass http://api;
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

7

主题

420

回帖

1107

积分

金牌会员

Rank: 6Rank: 6

积分
1107
发表于 7 天前 | 显示全部楼层
5038和5039都指向同一个源,源端出问题了,你为什么会认为5038可以用呢。应该想办法解决源程序为什么挂了
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

28

主题

804

回帖

2336

积分

金牌会员

Rank: 6Rank: 6

积分
2336
发表于 7 天前 | 显示全部楼层
多此一举啊,都在同一台机上意义不大,起码搞2个域名分开2台机器
不过还真没用过backup,帮不到你。
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

39

主题

328

回帖

1053

积分

金牌会员

Rank: 6Rank: 6

积分
1053
发表于 7 天前 | 显示全部楼层
本帖最后由 misakafa 于 2025-4-13 22:43 编辑

后端监听的端口是分开的程序?
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

716

主题

1203

回帖

5566

积分

论坛元老

Rank: 8Rank: 8

积分
5566
 楼主| 发表于 6 天前 | 显示全部楼层
幽影寻秋 发表于 2025-4-13 21:51
5038和5039都指向同一个源,源端出问题了,你为什么会认为5038可以用呢。应该想办法解决源程序为什么挂了 ...

我是2个端口都是docker,5039是常用软件,我更新的时候,先再启动一份5038,然后删除5039,更新5039,更新成功后,删除我5038这个docker。让程序更新时候用户也能正常使用。
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

0

主题

946

回帖

2280

积分

金牌会员

Rank: 6Rank: 6

积分
2280
发表于 7 天前 | 显示全部楼层
NGINX的负载你要先理解一个基本原理。
1.NGINX 是不会检测你后端的HTTP 状态代码,也就是说,你说的出错,是程序出错?50X 一类的?那些NGINX是不管的,
2. 他只检测你的后端程序的端口是否能连接上,能的话就认为他是可用的。仅此而已。
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

7

主题

371

回帖

1097

积分

金牌会员

Rank: 6Rank: 6

积分
1097
发表于 6 天前 | 显示全部楼层
你的配置方式走的被动检查
编译下 nginx_upstream_check_module ,用http协议健康检查实现主动探测,检查可用才路由请求
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

7

主题

420

回帖

1107

积分

金牌会员

Rank: 6Rank: 6

积分
1107
发表于 6 天前 | 显示全部楼层
斌斌 发表于 2025-4-14 16:40
我是2个端口都是docker,5039是常用软件,我更新的时候,先再启动一份5038,然后删除5039,更新5039,更 ...

那你思路错了吧,nginx使用一个固定端口,5039也好,其它也好,然后代理你的docker
端口a,你要更新的时候在启动一个端口b,把5039转到a,更新完了再把5039转向b,这样不影响对外服务器端口,对内你怎么改都行(由nginx配置灵活转发)
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

展开

QQ|Archiver|手机版|小黑屋|全球主机交流论坛备用站

GMT+8, 2025-4-20 00:49 , Processed in 0.050903 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表