Сервер nginx предоставляет простой интерфейс REST, используя экземпляр PostgreSQL в качестве бэкэнда. Nginx должен вставить данные POST (уже в формате JSON) в таблицу базы данных. К сожалению, $request_body
, содержащий данные POST, заполняется nginx только в fastcgi_pass
, proxy_pass
,…
ngx_form_input тоже не помогает, так как ожидает данные POST в формате ключ-значение. Я попытался ngx_echo , но это приводит к внутренней ошибке сервера:
location ~ "^/api/v1/dummy/$" {
auth_basic "Restricted";
auth_basic_user_file /usr/local/etc/nginx/.htpasswd;
if ($request_method != POST) {
return 405;
}
client_max_body_size 100k;
client_body_buffer_size 100k;
echo_read_request_body;
postgres_pass postgresql;
postgres_escape $json =$request_body;
postgres_query POST "INSERT INTO mytable (data) VALUES ('$json')";
postgres_rewrite POST changes 201;
postgres_rewrite POST no_changes 204;
}
Кажется, что ngx_echo не работает вместе с ngx_postgres. Существуют ли другие способы получения данных тела запроса?