全球主机交流论坛

标题: 后端ip发送变化的时候,应如何自动更新后端ip,避免502错误 [打印本页]

作者: joyanhui    时间: 2012-12-23 11:20
标题: 后端ip发送变化的时候,应如何自动更新后端ip,避免502错误
本帖最后由 joyanhui 于 2012-12-23 11:24 编辑

  1. server
  2.         {
  3.                 listen       80;
  4.                 server_name 123.com www.123.com;
  5.                 location /
  6.                         {
  7.                                 proxy_pass http://domina.3322.com:7780/; #反代的网站的域名,采取动态IP
  8.                                 proxy_set_header Host $host;
  9.                         }                access_log off;
  10.         }
复制代码
每次后端服务器ip发送变化 都会出现502错误。

试过
1、重启nscd
2、重启nginx

都不行,最后重启 前端nginx服务器才可以。。。

除了重启服务器,应该有别的方法可以搞定的吧?
作者: vagaa    时间: 2012-12-23 11:20
友情帮顶!
作者: 小茶几    时间: 2012-12-23 11:24
没遇到过好像
作者: lazyzhu    时间: 2012-12-23 11:35
本帖最后由 lazyzhu 于 2012-12-23 11:50 编辑

location加个
resolver 8.8.8.8;
dns更新时间依据域名TTL,也可以自己指定时间:
resolver 8.8.8.8 valid=60s;

补充:proxy_pass 后面一定要有变量才有效。
作者: wormcy    时间: 2012-12-23 11:40
还是小灰灰给力
作者: joyanhui    时间: 2012-12-23 12:04
lazyzhu 发表于 2012-12-23 11:35
location加个
resolver 8.8.8.8;
dns更新时间依据域名TTL,也可以自己指定时间:

proxy_pass  就是指定的后端的ip,怎么设置成变量呢?
作者: lazyzhu    时间: 2012-12-23 12:09
joyanhui 发表于 2012-12-23 12:04
proxy_pass  就是指定的后端的ip,怎么设置成变量呢?


我以为proxy_pass后面是域名呢,域名的IP会变化了。

如果是IP且知道是哪些IP的话,可以用Upstream
http://wiki.nginx.org/HttpUpstreamModule
作者: lazyzhu    时间: 2012-12-23 12:14
joyanhui 发表于 2012-12-23 12:04
proxy_pass  就是指定的后端的ip,怎么设置成变量呢?

你的http://domina.3322.com:7780/是IP吗?我倒了。。

proxy_pass http://domina.3322.com:7780/;
改成:
set $backend http://domina.3322.com:7780/;
proxy_pass $backend;
作者: wdlth    时间: 2012-12-23 12:21
upstream呗
作者: seanhuang    时间: 2012-12-23 12:29
有个502自动脚本转向。。搜搜
作者: joyanhui    时间: 2012-12-23 12:29
lazyzhu 发表于 2012-12-23 12:14
你的http://domina.3322.com:7780/是IP吗?我倒了。。

proxy_pass http://domina.3322.com:7780/;

域名ttl是10秒

经过测试 无效,时间已经超过10分钟,依旧是502

  1. server
  2.         {
  3.                 listen       80;
  4.                 server_name 123.com www.123.com;
  5.     resolver 8.8.8.8;
  6.                 location /
  7.                         {
  8.                                 set $backend http://domain.3322.org:7780/;
  9.                               proxy_pass $backend;

  10.                                 proxy_set_header Host $host;
  11.                         }                access_log off;
  12.         }
复制代码

作者: joyanhui    时间: 2012-12-23 12:30
seanhuang 发表于 2012-12-23 12:29
有个502自动脚本转向。。搜搜

我不能502错误之后 就reboot服务器啊。
作者: joyanhui    时间: 2012-12-23 12:32
seanhuang 发表于 2012-12-23 12:29
有个502自动脚本转向。。搜搜

我不能502错误之后 就reboot服务器啊。
我现在是寻找不reboot的方法
作者: joyanhui    时间: 2012-12-23 12:33
wdlth 发表于 2012-12-23 12:21
upstream呗

ddns 不知道后端的ip哦
作者: seanhuang    时间: 2012-12-23 12:35
不是reboot。。这么说吧。比如你的后端出现502.你在前端设置脚本。502情况下。前端反向到其他指定IP
作者: lazyzhu    时间: 2012-12-23 12:36
joyanhui 发表于 2012-12-23 12:29
域名ttl是10秒

经过测试 无效,时间已经超过10分钟,依旧是502

我本地已经测试过有效了,检查可能的其它问题

作者: wdlth    时间: 2012-12-23 12:43
joyanhui 发表于 2012-12-23 12:33
ddns 不知道后端的ip哦

upstream 也可以设置域名的,再说你加进hosts也行吧,DDNS更新后就写进hosts。
作者: joyanhui    时间: 2012-12-27 08:37
wdlth 发表于 2012-12-23 12:43
upstream 也可以设置域名的,再说你加进hosts也行吧,DDNS更新后就写进hosts。

我用lazyzhu的方法测试,确实无效,重新换了一台前段的vps测试也是不行。
一会试试您的方案。




欢迎光临 全球主机交流论坛 (https://fd.vvwvv.eu.org/) Powered by Discuz! X3.4