Назад | Перейти на главную страницу

Haproxy - использование monitor-uri на Heroku

Мы используем 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 но это не имело значения.

Есть другие предложения? Кто-нибудь еще пробовал это раньше?

Спасибо, Б