我们正在集成一个第三方支付网关,该网关在成功交易时发送IPN请求。因此,我们已经构建了一个API端点来处理在dev-env中运行良好的请求。在
现在的问题是,当我们在API服务器前面使用nginx时,它会得到301个重定向。当我们使用一个代理隧道,如ngrok,它通过ngrok服务器代理http请求时,请求通过nginx成功地传递到我们的API服务器,但是当IPN POST请求直接服务于nginx时,它将获得301重定向。为了更深入地挖掘,我们使用python SimpleHttpServer截获请求,从而找到http报头的区别:
['Host: 35.154.216.72:4040\r\n', 'Accept: /\r\n', 'Content-Length: 1030\r\n', 'Content-Type: application/x-www-form-urlencoded\r\n', 'Expect: 100-continue\r\n']
['Host: 543fdf1c.ngrok.io\r\n', 'Accept: /\r\n', 'Content-Length: 1013\r\n', 'Content-Type: application/x-www-form-urlencoded\r\n', 'X-Forwarded-For: 2a01:4f8:192:22ec::2\r\n']
我们假设问题出在Expect: 100-continue
头上。那么问题是有没有办法用Nginx来处理这个问题呢?或者对于这样的场景,行业标准的解决方案是什么?在
仅供参考:Nginx配置:
location /api/ {
proxy_set_header Expect $http_expect;
client_body_in_file_only on;
proxy_pass_request_headers on;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Upgrade $http_upgrade;
#proxy_set_header Connection 'upgrade';
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_pass_header X-CSRFToken;
#proxy_pass_header csrftoken;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://kk-api;
}
IPN终结点是/api/v1/ipn
目前没有回答
相关问题 更多 >
编程相关推荐