1

We're using haproxy on heroku to route between all our various micro-services (also on heroku) so we only need one url in the configs.

I'm trying to use this trick:

http://discourse.haproxy.org/t/how-do-i-serve-a-single-static-file-from-haproxy/32

to serve up a robots.txt to disallow everything from trawling our API (all auth protected; this is for performance rather than security reasons).

This seems like the most lightweight way of doing this, and it works beautifully locally (launched via "heroku local"). However, going to /robots.txt on our actual heroku environment gives a 503 Server Response Interrupted.

haproxy.cfg snippet:

frontend http-in
 bind *:"${PORT}"
 monitor-uri /robots.txt
 errorfile 200 "${STATIC_PATH}/robots.http"
 errorfile 503 "${STATIC_PATH}/robots.http"

Where STATIC_PATH is defined in heroku as "/app/static".

static/robots.http:

HTTP/1.0 200 Found
Cache-Control: no-cache
Connection: close
Content-Type: text/plain

User-Agent: *
Disallow: /

I know haproxy is finding robots.http, because if I set the env var to an invalid path, haproxy refuses to start. From the documentation, it should then hold this response in memory and serve it when monitor-uri is matched.

If remove the "errorfile 200" line, haproxy serves back its default server OK page, so monitor-uri is correctly matching, and 200 is the response it's attempting to return.

The "errorfile 503" entry is there because of this: http://comments.gmane.org/gmane.comp.web.haproxy/19803 but it made no difference.

Any other suggestions? Anybody else tried this before?

Thanks, B

cruise
  • 11
  • 1

0 Answers0