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