Ковбой возвращает 400 без заголовков

Конечная точка AWS HealthCheck не отправляет никаких заголовков, из-за чего Cowboy (v 1.1.2) возвращает 400. Это вызывает перезапуск контейнера.

Есть ли способ обойти проблему?

Связанная проблема с github: https://github.com/phoenixframework/phoenix/issues/2437

запрос curl для воспроизведения ошибки:

   curl http://localhost:4000/ping  -H 'Host:'

Бревно:

[error] Cowboy returned 400 and there are no headers in the connection.

This may happen if Cowboy is unable to parse the request headers,
for example, because there are too many headers or the header name
or value are too large (such as a large cookie).

You can customize those values when configuring your http/https
server. The configuration option and default values are shown below:

    protocol_options: [
      max_header_name_length: 64,
      max_header_value_length: 4096,
      max_headers: 100
    ]

конфигурация конечной точки:

 config :my_app, MyAppWeb.Endpoint,
   load_from_system_env: true,
   url: [host: System.get_env("MY_HOST"), port: 443],
   force_ssl: [rewrite_on: [:x_forwarded_proto]]

person stefkin    schedule 20.10.2017    source источник
comment
Заголовок хоста требуется в протоколе HTTP: developer.mozilla. org / en-US / docs / Web / HTTP / Headers / Host   -  person narrowtux    schedule 22.10.2017


Ответы (1)


В итоге я запустил сервер со следующей конфигурацией конечной точки:

config :my_app, MyAppWeb.Endpoint,
  load_from_system_env: true,
  http: [port: 4000]

и проблема была решена.

Вероятно, это как-то связано с тем, что ковбой запускал https-сервер за ELB.

person stefkin    schedule 23.10.2017