Nginx 日志 proxy_passed 自定义标头

Nginx 日志 proxy_passed 自定义标头

在我的位置,我设置了以下代码:

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 密钥。

相关内容