在我的位置,我设置了以下代码:
set $clientapikey "<my client api key>";
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT';
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://$api_route/$path$is_args$args;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
proxy_set_header clientapikey $clientapikey;
proxy_ssl_session_reuse off;
proxy_set_header Host $http_host;
proxy_redirect off;
我想记录 proxy_pass 发送至远程 url 的标头,以查看我的密钥是否确实已发送到远程服务器($api_route
)。
我尝试记录:
log_format 'Sent-Headers: "clientapikey: '
'$upstream_http_clientapikey '
'$http_clientapikey" ';
但是 $upstream_http_clientapikey 和 $http_clientapikey 似乎都不允许我访问正确的发送标头。
答案1
我认为唯一你可以做的事情就是只记录$clientapikey
。但那将具有一个众所周知的值,因此我认为它对您调试此问题没有太大用处。在这种情况下,我会先在 nginx 服务器上使用 curl 仔细检查 API 服务器标头格式。我敢打赌,API 服务器实际上正在等待 HTTP Auth 标头。
curl -v -h 'clientapikey: my client api key' -X POST http://apiendpoint
nb 顺便说一句,http://
应该不鼓励使用 api 端点调用,因为这会允许任何人读取您的客户端 api 密钥。