Nginx句柄Expect:100-continue header

时间:2019-04-23 11:47:47

标签: python nginx http-headers nginx-reverse-proxy nginx-config

我们正在集成一个第三方付款网关,该网关在成功交易后会发送一个IPN请求。因此,我们建立了一个API端点来处理在dev env中可以正常工作的请求。

现在的问题是,当我们在API服务器的前端使用nginx时,它会获得301重定向。当我们使用类似ngrok的代理隧道(通过ngrok服务器代理http请求)时,该请求成功通过nginx传递到我们的API服务器,但是当IPN POST请求直接提供给我们的nginx时,它将获得301重定向。为了更深入地了解,我们使用python SimpleHttpServer拦截了请求,使我们发现了HTTP标头的不同之处:

  • 没有ngrok(直接到nginx)
  

['主机:35.154.216.72:4040\r\n','接受: / \ r \ n','内容长度:   1030 \ r \ n','内容类型:application / x-www-form-urlencoded \ r \ n',   '期望:100-继续 \ r \ n']

  • 使用ngrok
  

['主机:543fdf1c.ngrok.io \ r \ n','接受: / \ r \ n','内容长度:   1013 \ r \ n','内容类型:application / x-www-form-urlencoded \ r \ n',   'X-Forwarded-For:2a01:4f8:192:22ec :: 2 \ r \ n']

我们假设问题在于Expect: 100-continue标头。那么问题是有什么办法可以用Nginx处理呢?或针对这种场景的行业标准解决方案是什么?

仅供参考:Nginx conf:

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

0 个答案:

没有答案