【发布时间】:2020-10-18 23:03:20
【问题描述】:
nginx 服务器提供一个简单的 REST 接口,使用 PostgreSQL 实例作为后端。 nginx 应该将 POST 数据(已经是 JSON 格式)插入到数据库表中。不幸的是,包含 POST 数据的 $request_body 仅在 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 一起使用。还有其他方法可以获取请求正文数据吗?
【问题讨论】:
标签: postgresql rest nginx openresty