• 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;
  • 相关阅读:
    SpringBoot3.x原生镜像-Native Image实践
    MySQL中的多列子查询
    面试:HashMap
    安装cad显示找不到msvcp140.dll怎么解决?靠谱的msvcp140.dll丢失的解决方法分享
    FFMpeg解复用流程
    万字逐行解析与实现Transformer,并进行德译英实战(二)
    【传知代码】BERT论文解读及情感分类实战-论文复现
    win10 ping localhost 的IP被解析为::1
    如何提高同行评审的有效性
    1965. 丢失信息的雇员
  • 原文地址:https://blog.csdn.net/panjiapengfly/article/details/126914864