Nginx 读取 secret 和 webhook 标头

Nginx 读取 secret 和 webhook 标头

来自 Github 的 Webhook 正在通过 Nginx 代理。

Webhook 使用机密,并且标头以 X-Hub-Signature-256 的形式发送。

我想要发出 Nginx 过滤请求,即我需要 Nginx 获取 webhook 标头值并将其与 $SECRET_TOKEN 进行比较。如果密钥正确,它将发送 200,如果不正确,它将发送 403。

我想到过这样的事情,但找不到实现它的方法:

server {
  listen 80;
  server_name _;

  location /payload {
      
      #Read the header sent by the webhook
      #If the header content matches $SECRET_TOKEN I defined on Nginx then return 200
      #Else, return 403 
  }
}

请帮助实现这个伪,因为我在网上找不到任何示例。

提前致谢。

答案1

http级别上,创建一个map

map $http_x_hub_signature_256 $retcode {
    <token> 200;
    default 403;
}

您的位置是:

location /payload {
    return $retcode;
}

相关内容