我们在 heroku 上使用 haproxy 在我们所有的各种微服务(也在 heroku 上)之间进行路由,因此我们在配置中只需要一个 url。
我正在尝试使用这个技巧:
http://discourse.haproxy.org/t/how-do-i-serve-a-single-static-file-from-haproxy/32
提供一个 robots.txt 来禁止所有内容搜索我们的 API(所有身份验证均受保护;这是为了性能而不是安全原因)。
这似乎是最轻量级的方法,而且在本地运行良好(通过“heroku local”启动)。但是,在我们的实际 heroku 环境中访问 /robots.txt 会出现 503 服务器响应中断。
haproxy.cfg 代码片段:
frontend http-in
bind *:"${PORT}"
monitor-uri /robots.txt
errorfile 200 "${STATIC_PATH}/robots.http"
errorfile 503 "${STATIC_PATH}/robots.http"
其中 STATIC_PATH 在 heroku 中定义为“/app/static”。
静态/robots.http:
HTTP/1.0 200 Found
Cache-Control: no-cache
Connection: close
Content-Type: text/plain
User-Agent: *
Disallow: /
我知道 haproxy 正在查找 robots.http,因为如果我将环境变量设置为无效路径,haproxy 就会拒绝启动。根据文档,它应该将此响应保存在内存中,并在 monitor-uri 匹配时提供该响应。
如果删除“errorfile 200”行,haproxy 将返回其默认服务器 OK 页面,因此 monitor-uri 正确匹配,并且 200 是它尝试返回的响应。
出现“errorfile 503”条目的原因是: http://comments.gmane.org/gmane.comp.web.haproxy/19803 但这并没有什么区别。
还有其他建议吗?之前有人尝试过吗?
谢谢,B