在新机器上安装haproxy调用后端的3台nginx,两台用作调用动态,一台用作调用静态。
出现资源调用错乱的情况,比如,我一直调用php页面,浏览器会出现404获取503页面,这个时候去看日志显示的是调用到了静态资源服务器上去了,同样访问静态页面的时候也是这样的情况,下面是简单的配置文件
原来动态和静态是放在一个frontend里面定义的,奇怪的是,放在一个frontend定义动静态规则的时候只有一资源可以用访问,不明白是什么原因,haproxy的版本是1.5.18..希望前辈给小弟解答一下。
下面是出错的日志,这是一直访问php页面然后就出现404了,资源调用到静态组上去了
新手没啥豆子,,,
感觉是好东西啊!!!做企业级信息系统的羡慕你们做互联网的。
haproxy是负载均衡的工具吧? 帮你查了一下503错误:
503 Service Unavailable
由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是暂时的,并且将在一段时间以后恢复。[61]如果能够预计延迟时间,那么响应中可以包含一个Retry-After头用以标明这个延迟时间。如果没有给出这个Retry-After信息,那么客户端应当以处理500响应的方式处理它。
默默的等等行内高手!
问题已经解决了,经过排查存在几个问题如下
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段注释。
@孤岛鱼夫:
你错误的写法是:
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: 是的
问题已经解决了,经过排查存在几个问题如下
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段注释。