我正在尝试通过配置为代理的Nginx服务器将请求传递给PayPal NVP Sandbox Api(https://api-3t.sandbox.paypal.com/nvp)。
nginx配置是
server {
listen 80;
server_name localhost;
error_log /var/log/nginx/error_pp.log debug;
location / {
#proxy_pass https://google.com:443; # works
proxy_pass https://api-3t.sandbox.paypal.com:443;
}
}
没有代理的测试请求类似于
$ curl https://api-3t.sandbox.paypal.com/nvp
结果
ACK=Failure&L_ERRORCODE0=81002&L_SHORTMESSAGE0=Unspecified%20Method&L_LONGMESSAGE0=Method%20Specified%20is%20not%20Supported&L_SEVERITYCODE0=Error
使用代理
$ curl localhost/nvp
我没有回答,日志显示错误请求:
127.0.0.1 - - [23/Feb/2016:08:28:50 -0500] "HEAD /nvp HTTP/1.1" 400 0 "-" "curl/7.29.0" "-"
我希望与直接请求(ACK=Failure...
)相同的结果。
如果我为proxy_pass
使用不同的网址(比如google),一切正常(当然我会得到不同的回复)。在PayPal api或nginx文档中搜索结束时没有结果。
如果可以进行此设置或如何解决此问题,是否有人有线索?
感谢您的帮助!
此致 丹尼斯
答案 0 :(得分:0)
终于找到了答案:我需要添加
proxy_http_version 1.1;
nginx默认发送1.0,但paypal需要1.1。
我的请求的最小配置是
server {
listen 80;
server_name localhost;
# PayPal:
ssl_protocols TLSv1.2;
proxy_http_version 1.1;
location / {
proxy_pass https://api-3t.sandbox.paypal.com:443;
proxy_cache_bypass 1;
proxy_no_cache 1;
proxy_read_timeout 60s;
}
}