• php:如何在curl方式下url请求域名使用指定ip地址来访问某个服务器


            最近遇到一个问题,就是如何在curl请求某个域名的时候,可以指定某个ip访问,因为很多时候咱们的域名对应的是集群,会有很多服务器ip,并不一定是刚好访问到你想要的服务器,那么该如何解决呢?

    例如:正常情况下,假设我们这样发送请求,如何指定访问114.253.192.75这个ip服务器的内容

    1. $url = "https://www.diekaisanyue.com/";
    2. $ch = curl_init();
    3. curl_setopt($ch, CURLOPT_URL, $url);
    4. curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    6. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //https请求,不验证证书和hosts
    7. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    8. $content = curl_exec($ch);
    9. echo $content;

    解决方法:

    1、配置/etc/host文件,加入114.253.192.75 www.diekaisanyue.com的指向,虽然可以实现效果,但是不利于维护,换一个同事操作估计还不清楚已经配置host。

    2、修改在114.253.192.75服务器上部署的www.diekaisanyue.com vhost文件,单独开一个端口,例如端口8888,则我们可以直接使用114.253.192.75:8888进行访问,但是也不很方便,如果下次换一台服务器又需要开个端口配置一遍。

    3、将请求url中域名改用ip方式,然后加上Host请求头信息,进行请求,这种方法好处就是什么都不用修改,也不用配置,可以直接指定你想要的ip服务器进行访问,通过header里面的host信息,进行配对服务。

    1. $url = 'https://114.253.192.75/index.php';
    2. $ch = curl_init();
    3. curl_setopt($ch, CURLOPT_URL, $url);
    4. curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    6. curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host: www.diekaisanyue.com"));
    7. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    8. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    9. $content = curl_exec($ch);
    10. echo $content;

    4、php5.5以上版本,支持使用 CURLOPT_RESOLVE 来设置主机对应的ip地址,但是经过测试好像不起作用

    1. $url = 'https://www.diekaisanyue.com/index.php';
    2. $ch = curl_init();
    3. curl_setopt($ch, CURLOPT_URL, $url);
    4. curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    6. curl_setopt($ch, CURLOPT_RESOLVE, ["www.diekaisanyue.com:443:114.253.192.75"]);
    7. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    8. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    9. $content = curl_exec($ch);
    10. echo $content;
  • 相关阅读:
    2023国赛数学建模A题思路分析 - 定日镜场的优化设计
    【ArcGIS微课1000例】0052:创建地理数据库注记(标准注记、要素关联注记、尺寸注记)
    Vue路由实例
    nn.Sequential、nn.Linear、nn.ReLU()函数
    mongodb Community 7 安装(linux)
    数据治理-数据质量监控
    scrollIntoView锚点跳转 超好用
    python制作GIF动图
    网络的下一次迭代:AVS 将为 Web2 带去 Web3 的信任机制
    电脑更新win10黑屏解决方法
  • 原文地址:https://blog.csdn.net/panjiapengfly/article/details/126914864