mtls客户端,curl发送请求成功,nginx转发400 "Bad Request"

我在请求一个需要mtls的银行系统,我可以直接用postman和curl这两个工具在携带cert和key的情况下发送请求可以正常得到数据。但是,当我用nginx转发带有证书和密钥的请求时,它发出了一个错误,status: 400 , body: {"message": "Bad Request"}

在携带客户端证书和密钥发送请求的情况下。

这是直接用postman请求银行,是成功的

img

这是用curl直接请求,是成功的

img

这是nginx配置,nginx转发时报错了

img

因为证书是银行给我们的,是他们自签名证书,我怀疑是这样的问题,同样的情况,我用nginx请求另一家银行是成功的

nginx中的proxy_pass没有配置正确,没有带上后缀pix/oauth2

如果后端真是的服务器设置有类似防盗链或者根据http请求头中的host字段来进行路由或判断功能的话,如果反向代理层的nginx不重写请求头中的host字段,将会导致请求失败,报400错误,解决办法: location中设置 proxy_set_header Host $http_host;