我很抱歉给您带来不便,因为我对 HAProxy 还很陌生,现在我遇到了一个问题,虽然这可能不是什么大问题,但由于我对这个工具还很陌生,所以我不知道如何解决它。
我之前使用的是 HAProxy 1.8.8 版,现在升级到 2.0.5 版,之前/etc/haproxy/haproxy.cfg
在 HAProxy 1.8.8 版上可以正常工作,但现在在 HAProxy 新版本 2.0.5 上却无法正常工作。从日志中/var/log/haproxy.log
我收到此错误消息
Aug 30 19:59:21 haproxy2002 haproxy[2726]: [ALERT] 241/195921 (2726) : config: frontend 'http': Unable to convert message in HTX for HTTP return code 503.
Aug 30 19:59:21 haproxy2002 haproxy[2726]: [ALERT] 241/195921 (2726) : config: backend 'video-upload': Unable to convert message in HTX for HTTP return code 503.
Aug 30 19:59:21 haproxy2002 haproxy[2726]: [ALERT] 241/195921 (2726) : config: backend 'video-upload-merchant': Unable to convert message in HTX for HTTP return code 503.
Aug 30 19:59:21 haproxy2002 haproxy[2726]: [ALERT] 241/195921 (2726) : config: backend 'video-upload-premium': Unable to convert message in HTX for HTTP return code 503.
Aug 30 19:59:21 haproxy2002 haproxy[2726]: [ALERT] 241/195921 (2726) : config: backend 'contents-upload': Unable to convert message in HTX for HTTP return code 503.
Aug 30 19:59:21 haproxy2002 haproxy[2726]: [ALERT] 241/195921 (2726) : config: proxy 'stats': Unable to convert message in HTX for HTTP return code 503.
Aug 30 19:59:21 haproxy2002 haproxy[2726]: [ALERT] 241/195921 (2726) : config: proxy 'stats2': Unable to convert message in HTX for HTTP return code 503.
Aug 30 19:59:21 haproxy2002 haproxy[2726]: [ALERT] 241/195921 (2726) : config: proxy 'stats3': Unable to convert message in HTX for HTTP return code 503.
Aug 30 19:59:21 haproxy2002 haproxy[2726]: [ALERT] 241/195921 (2726) : config: proxy 'stats4': Unable to convert message in HTX for HTTP return code 503.
Aug 30 19:59:21 haproxy2002 haproxy[2726]: [ALERT] 241/195921 (2726) : Fatal errors found in configuration.
请帮助我
答案1
假设错误是由errorfile指令引起的。
errorfile 500 /etc/haproxy/errors/500.http
errorfile 503 /etc/haproxy/errors/503.http
我遇到了同样的问题,这是因为我们在 .http 文件中没有 HTTP 标头,而只有 html。
我必须在文件开头添加标题
HTTP/1.1 500 Internal Error
Cache-Control: no-cache
Connection: close
Content-Type: text/plain
Retry-After: 60
<blank line>
<rest of file content>
希望这可以帮助。
这里有一些例子:https://github.com/ingshtrom/haproxy-htx-conversion-issue(感谢作者)原文出处:https://discourse.haproxy.org/t/is-this-a-bug-unable-to-convert-message-in-htx/4304
答案2
除了 HTTP 标头的要求(包括标头和正文之间的空行)之外,您还可能会被文件中的 BOM(字节顺序标记)绊倒。
如果将文件保存为 UTF-8,则它可能在开头包含 BOM(取决于编辑器和您的选项),这是 HAProxy 不喜欢的。
解决方案是将其保存为不带 BOM 的 UTF-8(例如,您可以使用 EditPlus 之类的编辑器执行此操作,或者在 Linux 上使用 pico 重新编写)。