斌斌 发表于 7 天前

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

我想部署程序的时候,不影响线上使用的人,就想访问5039端口接口出错的时候,自动切换5038,是个备用的接口,但是我测试了不起作用。<br />
如果我5039无法访问,nginx 就502错误。怎么设置才能正常?首选一个接口,有问题自动换另一个?<br />
upstream api {<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;server localhost:5039;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;server localhost:5038 backup;<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
location / {<br />
&nbsp; &nbsp; proxy_pass http://api/;<br />
&nbsp; &nbsp; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;<br />
&nbsp; &nbsp; proxy_next_upstream_tries 2;<br />
&nbsp; &nbsp; }

hanada 发表于 7 天前

请求是POST吗,是的话得加上non_idempotent,还有api后面不要接斜杠,直接proxy_pass http://api;

幽影寻秋 发表于 7 天前

5038和5039都指向同一个源,源端出问题了,你为什么会认为5038可以用呢。应该想办法解决源程序为什么挂了

jekyll 发表于 7 天前

多此一举啊,都在同一台机上意义不大,起码搞2个域名分开2台机器<br />
不过还真没用过backup,帮不到你。

misakafa 发表于 7 天前

<i class="pstatus"> 本帖最后由 misakafa 于 2025-4-13 22:43 编辑 </i><br />
<br />
后端监听的端口是分开的程序?

斌斌 发表于 6 天前

<div class="quote"><blockquote><font size="2"><a href="https://hostloc.com/forum.php?mod=redirect&goto=findpost&pid=16328790&ptid=1402650" target="_blank"><font color="#999999">幽影寻秋 发表于 2025-4-13 21:51</font></a></font><br />
5038和5039都指向同一个源,源端出问题了,你为什么会认为5038可以用呢。应该想办法解决源程序为什么挂了 ...</blockquote></div><br />
我是2个端口都是docker,5039是常用软件,我更新的时候,先再启动一份5038,然后删除5039,更新5039,更新成功后,删除我5038这个docker。让程序更新时候用户也能正常使用。

pykane 发表于 7 天前

NGINX的负载你要先理解一个基本原理。<br />
1.NGINX 是不会检测你后端的HTTP 状态代码,也就是说,你说的出错,是程序出错?50X 一类的?那些NGINX是不管的,<br />
2. 他只检测你的后端程序的端口是否能连接上,能的话就认为他是可用的。仅此而已。<br />

打酱油的 发表于 6 天前

你的配置方式走的被动检查<br />
编译下 nginx_upstream_check_module ,用http协议健康检查实现主动探测,检查可用才路由请求

幽影寻秋 发表于 6 天前

<div class="quote"><blockquote><font size="2"><a href="https://hostloc.com/forum.php?mod=redirect&goto=findpost&pid=16330158&ptid=1402650" target="_blank"><font color="#999999">斌斌 发表于 2025-4-14 16:40</font></a></font><br />
我是2个端口都是docker,5039是常用软件,我更新的时候,先再启动一份5038,然后删除5039,更新5039,更 ...</blockquote></div><br />
那你思路错了吧,nginx使用一个固定端口,5039也好,其它也好,然后代理你的docker<br />
端口a,你要更新的时候在启动一个端口b,把5039转到a,更新完了再把5039转向b,这样不影响对外服务器端口,对内你怎么改都行(由nginx配置灵活转发)
页: [1]
查看完整版本: 有懂nginx的大佬么?我这个配置文件为什么不起作用