阿里云服务器A 公网配置nginx(使用的阿里云免费ssl证书) 阿里云服务器B 阿里云服务器C 没有开公网 但是可以访问到内网服务器A, 调用商户下单支付请应用部署在服务器BC上,现在把链接配置在服务器A的 nginx下 访问报502 ,到服务器A上curl 支付链接https://api.mc***/pay/unifiedorder正常 提醒需要post方法, 配置nginx后curl访问配置后的路径也是报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配置不正常呢?有没有其他人遇到过这样的问题
您好,请参考:
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,一切正常