499服务器响应,微信服务号开发 - Nginx请求返回499 - 问题排查与解决

问题描述:

在进行微信服务号开发时,通过微信后台成功设置了自己服务器的地址,但是发现在微信一发送消息马上返回“该公众号暂时无法提供服务,请稍后再试”,而一开始是可以的,而且PHP入口文件居然没有被执行。。。

这个问题怪异之处在于,一开始微信号还是正常返回消息的。但是后来看到的表象是微信总是返回“该公众号暂时无法提供服务,请稍后再试”,而查看nginx下的access.log是可以看到有请求过来的。

140.207.54.79 - - [08/Jan/2015:20:46:58 +0800] "POST /?signature=843506c7d2451087bf7&timestamp=1420721218&nonce=1521817541 HTTP/1.0" 499 0 "-" "Mozilla/4.0"

排查过程:

PHP代码问题?

一开始以为是PHP代码出错,或者是有异常,但是看了nginx下的error.log并无纪录,因此排除。

PHP环境问题?

有出现上面问题前,最近的操作是对php.ini文件进行了配置的更改,但是查看了一下PHP的相关进程,运行正常。而且,用脚本来模拟微信的请求也是可以得到正确的预期的返回。因此排除。

相关的脚本如下:

#!/usr/bin/env php

/**

* 微信服务号辅助脚本

*

* 模拟向服务器发送微信文本消息

*

* @author dogstar 2015-01-08

*/

if ($argc 

echo "Usage: $argv[0]  \n\n";

die();

}

$host = $argv[1];

$content = $argv[2];

$ch = curl_init();

$xml= '

1419757723

6097812988731466682

';

$header[]="Content-Type: text/xml; charset=utf-8";

$header[]="Content-Length: ".strlen($xml);

curl_setopt($ch, CURLOPT_URL, $host);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);

curl_setopt($ch, CURLOPT_HEADER, 0);

$res = curl_exec($ch);

echo $res, "\n\n";

调用和结果如下:

$ ./send_wechat_text.php http://XXX.com.cn/ demo

1420723897

0

Nginx环境问题?

在尝试使用tcpdump来抓包的同时,忽然意识到可以看下Nginx返回的状态码,果然不是200,而是499!网上稍微查了一下,499的两种原因是:客户端放弃了请求或服务器断开了请求。但显然是服务器没有超时不会自己断开连接,也没超过微信规定的5秒内响应。那到底是什么原因致使客户端放弃了请求呢?!!

域名解析问题!

最后发现(通过一位在上海的同学),绑定的域名在广东 内访问是正常的,但在上海访问却提示需要做备案。而且对应 的返回也是499。提示如下:

9483525c1dc8ffe8f5a9eb211fe5f0eb.png

最终解决:

通过重新绑定域名,问题得以解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值