nginx:基于http头的limit_req

nginx:基于http头的limit_req,nginx,Nginx,我们提供了一些JSON Web API。用户可以在我们的网页上创建API密钥,然后将该密钥用作HTTP头属性。但是,我们将允许在没有密钥的情况下访问以供试用。在这种情况下,如何设置nginx配置 sample request curl -H 'x-api-key:xxxx' https://api.xxx.com/xxx 我们需要同时设置(1)和(2) 更新1 这几乎是同一个问题 我找到了这种方法,它很有效,但仍然不确定这个设置是否理想(看起来很奇怪…)。如果你能给我任何建议,我将不胜感

我们提供了一些JSON Web API。用户可以在我们的网页上创建API密钥,然后将该密钥用作HTTP头属性。但是,我们将允许在没有密钥的情况下访问以供试用。在这种情况下,如何设置nginx配置

sample request

curl  -H 'x-api-key:xxxx' https://api.xxx.com/xxx
我们需要同时设置(1)和(2)


更新1

这几乎是同一个问题


我找到了这种方法,它很有效,但仍然不确定这个设置是否理想(看起来很奇怪…)。如果你能给我任何建议,我将不胜感激

map $http_x_api_key $limit {
    ""     $binary_remote_addr;
    default     ""; 
}

limit_req_zone $limit zone=limit_req_by_ip:10m rate=1r/s;
limit_req_log_level error;
limit_req_status 503;

location / {
    limit_req zone=limit_req_by_ip burst=10 nodelay;
}
map $http_x_api_key $limit {
    ""     $binary_remote_addr;
    default     ""; 
}

limit_req_zone $limit zone=limit_req_by_ip:10m rate=1r/s;
limit_req_log_level error;
limit_req_status 503;

location / {
    limit_req zone=limit_req_by_ip burst=10 nodelay;
}