收藏
回答

支付下单链接nginx代理后访问报502错误

阿里云服务器A 公网配置nginx(使用的阿里云免费ssl证书)  阿里云服务器B 阿里云服务器C 没有开公网  但是可以访问到内网服务器A, 调用商户下单支付请应用部署在服务器BC上,现在把链接配置在服务器Anginx下   访问报502 ,到服务器Acurl 支付链接https://api.mc***/pay/unifiedorder正常 提醒需要post方法, 配置nginxcurl访问配置后的路径也是报502 ;同类型配置的miniJsCode访问都是正常的  

Nginx配置如下:   


Nginx error日志:

2019/03/22 10:38:34 [error] 5343#0: *32 upstream prematurely closed connection while reading response header from upstream, client: 172.18.xxx.xxx, server: localhost, request: "GET /shopMiniMch HTTP/1.1", upstream: "https://163.177.89.203:443/pay/unifiedorder", host: "172.18.xx.xxx"

请问这种问题是什么原因,是阿里云免费ssl不支持 还是https://pay/u不支持代理,或者是nginx配置不正常呢?有没有其他人遇到过这样的问题


最后一次编辑于  03-22
回答关注问题邀请回答
收藏

1 个回答

  • 微信支付技术助手
    微信支付技术助手
    03-25

    您好,请参考:

    Nginx 502错误的原因比较多,是因为在代理模式下后端服务器出现问题引起的。这些错误一般都不是nginx本身的问题,一定要从后端找原因!

    1.首先,把后端代码恢复到上一次没报错之前的版本,因为nginx报错不一定绝对是nginx的问题,先把系统恢复成可以运行的状态,这是控制变量法呀。

    2.重新加载nginx的配置文件

    nginx -c /usr/local/webserver/nginx/conf/nginx.conf

    如果你不能全局运行nginx命令,请加上nginx的路径。-c后面的参数为nginx配置文件所在路径这是要求nginx重新添加配置文件地址。

    nginx -s reload

    重新加载文件

    3.重新运行,可以看到会出现如下错误:

    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

    nginx: [emerg] still could not bind()

    可以看到,是进程端口被占用了,可以看系统是否已有nginx在运行。

    运行命令:ps -aux | grep nginx

    然后对照,发现第一个和第二个的pid分别为130616,130635,kill掉即可。

    kill 130616

    kill 130635

    问题解决,再次运行nginx,一切正常



    03-25
    赞同
    回复