主域调用子域WordPress JWT接口时CURL域名解析失败求助
问题:主域名PHP CURL调用子域名JWT接口提示无法解析主机
我在子域名部署了WordPress并安装了JWT认证插件,需要从主域名调用该子域的JWT接口。
通过Postman调用以下URL可正常获取响应:
https://subdomain.domain.com/wp-json/jwt-auth/v1/token
但在主域内通过以下PHP CURL代码调用时:
$url = 'https://subdomain.domain.com/wp-json/jwt-auth/v1/token'; $data = array( 'username' => '***', 'password' => '***' ); $data_string = json_encode($data); $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER ,1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)) ); $result = curl_exec($ch); if (curl_errno($ch)) { $error_msg = curl_error($ch); } curl_close($ch); die("dd".$result.$error_msg);
返回错误:
ddCould not resolve host: subdomain.domain.com
我的DNS配置如下:
A @ myip CNAME www maindomain A subdomain myip
请问问题出在哪里?
解决方案
出现Could not resolve host错误,本质是服务器端的DNS解析无法识别subdomain.domain.com,可从以下方向排查解决:
检查服务器本地DNS解析能力
登录主域名所在服务器,执行ping subdomain.domain.com或nslookup subdomain.domain.com,如果返回无法解析,说明服务器本地DNS未正确识别该子域名。可尝试重启服务器DNS服务(如Linux系统执行systemctl restart systemd-resolved,根据系统环境调整),或手动刷新DNS缓存。手动配置服务器hosts文件
若服务器DNS未同步解析记录,可直接在主域名服务器的hosts文件中添加映射:- Linux系统编辑
/etc/hosts,Windows系统编辑C:\Windows\System32\drivers\etc\hosts - 添加内容:
myip subdomain.domain.com
保存后重新测试CURL调用。
- Linux系统编辑
等待DNS记录全局生效
Postman能正常访问说明本地DNS已解析,但服务器所在DNS节点可能未同步更新。DNS记录生效周期通常为10分钟至24小时,可等待一段时间后重试,或把服务器DNS切换为公共DNS(如8.8.8.8、1.1.1.1)。修改CURL配置强制指定解析
在CURL代码中添加强制解析参数,绕过系统DNS:curl_setopt($ch, CURLOPT_RESOLVE, array("subdomain.domain.com:443:myip"));该配置会让CURL直接用指定IP访问子域名的443端口。
内容的提问来源于stack exchange,提问作者S.M_Emamian
相关产品推荐
相关产品推荐

