首页 新闻 会员 周边

haproxy backend资源组调用规则错误错误问题

0
悬赏园豆:5 [已解决问题] 解决于 2017-12-24 16:33

在新机器上安装haproxy调用后端的3台nginx,两台用作调用动态,一台用作调用静态。

出现资源调用错乱的情况,比如,我一直调用php页面,浏览器会出现404获取503页面,这个时候去看日志显示的是调用到了静态资源服务器上去了,同样访问静态页面的时候也是这样的情况,下面是简单的配置文件

原来动态和静态是放在一个frontend里面定义的,奇怪的是,放在一个frontend定义动静态规则的时候只有一资源可以用访问,不明白是什么原因,haproxy的版本是1.5.18..希望前辈给小弟解答一下。

下面是出错的日志,这是一直访问php页面然后就出现404了,资源调用到静态组上去了

新手没啥豆子,,,

孤岛鱼夫的主页 孤岛鱼夫 | 菜鸟二级 | 园豆:205
提问于:2017-12-23 22:03
< >
分享
最佳答案
0

感觉是好东西啊!!!做企业级信息系统的羡慕你们做互联网的。

haproxy是负载均衡的工具吧? 帮你查了一下503错误:

503 Service Unavailable
由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是暂时的,并且将在一段时间以后恢复。[61]如果能够预计延迟时间,那么响应中可以包含一个Retry-After头用以标明这个延迟时间。如果没有给出这个Retry-After信息,那么客户端应当以处理500响应的方式处理它。

 

默默的等等行内高手!

收获园豆:5
David5201 | 小虾三级 |园豆:534 | 2017-12-24 11:29

问题已经解决了,经过排查存在几个问题如下

1:acl规则书写格式有错误,上图中的写法是错误的。正确的写法如下:

frontend web *:80

acl url_static path_end -i .html
acl php_web path_end -i .php

use_backend static_server if url_static
use_backend phpserver if php_web

也正是这个原因导致了后面其他异常:

因为acl规则写错了,所以每次访问都是调用的默认指定的backend,默认backend后端的两台nginx安装后配置文件中有一段定义静态页面的location段,没有注释,当问题静态页面的时候都去到这上面调用了,

把nginx中的静态location段注释。

孤岛鱼夫 | 园豆:205 (菜鸟二级) | 2017-12-24 16:31

@孤岛鱼夫: 

你错误的写法是:

acl url_staitc path_beg  -i  /

acl url_staitc path_beg  -i  .jpg .gif .png .css .js .html

看来是-i 后面跟的是值。  

hapropxy这个东西看来是从页面属性进行分流啊。html是 static_server ,php页面是phpserver。

David5201 | 园豆:534 (小虾三级) | 2017-12-24 16:57

@David5201: 是的

孤岛鱼夫 | 园豆:205 (菜鸟二级) | 2017-12-24 17:00
其他回答(1)
0

问题已经解决了,经过排查存在几个问题如下

1:acl规则书写格式有错误,上图中的写法是错误的。正确的写法如下:

frontend web *:80

acl url_static path_end -i .html
acl php_web path_end -i .php

use_backend static_server if url_static
use_backend phpserver if php_web

也正是这个原因导致了后面其他异常:

因为acl规则写错了,所以每次访问都是调用的默认指定的backend,默认backend后端的两台nginx安装后配置文件中有一段定义静态页面的location段,没有注释,当问题静态页面的时候都去到这上面调用了,

把nginx中的静态location段注释。

孤岛鱼夫 | 园豆:205 (菜鸟二级) | 2017-12-24 16:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册