Мы используем haproxy на heroku для маршрутизации между всеми нашими различными микросервисами (также на heroku), поэтому нам нужен только один URL-адрес в конфигурациях.
Я пытаюсь использовать этот трюк:
http://discourse.haproxy.org/t/how-do-i-serve-a-single-static-file-from-haproxy/32
для обслуживания файла robots.txt, чтобы запретить всем перебирать наш API (все аутентификации защищены; это для производительности, а не из соображений безопасности).
Это кажется наиболее легким способом сделать это, и он прекрасно работает локально (запускается через "heroku local"). Однако переход к /robots.txt в нашей реальной среде heroku дает 503 Server Response Interrupted.
фрагмент 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, потому что, если я установил для env var недопустимый путь, haproxy откажется запускаться. Судя по документации, он должен сохранить этот ответ в памяти и обслуживать его при сопоставлении monitor-uri.
Если удалить строку «errorfile 200», haproxy вернет страницу OK своего сервера по умолчанию, так что monitor-uri правильно совпадает, а 200 - это ответ, который он пытается вернуть.
Запись "errorfile 503" существует по этой причине: http://comments.gmane.org/gmane.comp.web.haproxy/19803 но это не имело значения.
Есть другие предложения? Кто-нибудь еще пробовал это раньше?
Спасибо, Б