假设一个网站在多个服务器之间是负载均衡的。 我想运行一个命令来testing它是否工作,如curl DOMAIN.TLD
。 所以,要隔离每个IP地址,我手动指定IP。 但是许多网站可能在服务器上,所以我仍然提供一个主机头,如下所示: curl IP_ADDRESS -H 'Host: DOMAIN.TLD'
。 据我了解,这两个命令创build完全相同的HTTP请求。 唯一的区别是在后者中,我从cURL中取出DNS查找部分,并手动执行(如果我错了,请纠正我)。
迄今为止都很好。 但是现在我想为HTTPSurl做同样的事情。 再次,我可以testing它像这个curl https://DOMAIN.TLD
。 但我想手动指定IP,所以我运行curl https://IP_ADDRESS -H 'Host: DOMAIN.TLD'
。 现在我得到一个cURL错误:
curl: (51) SSL: certificate subject name 'DOMAIN.TLD' does not match target host name 'IP_ADDRESS'.
我当然可以通过告诉cURL不要关心证书(“-k”选项)来解决这个问题,但这并不理想。
有没有办法隔离与被SSLauthentication的主机连接的IP地址?
想想我通过cURL手册find了一个解决scheme:
curl https:// DOMAIN.TLD –resolve'DOMAIN.TLD:443:IP_ADDRESS'
添加在[curl] 7.21.3。 删除支持添加在7.42.0。
您可以在/ etc / hosts中更改以使服务器认为该域位于某个IP。
这是语法:
192.168.10.20 www.domain.tld
这将使cURL使用你想要的IP地址,而没有SSL证书中断。
如果您在Windows中运行curl,请使用双引号
curl https://DOMAIN.TLD --resolve "DOMAIN.TLD:443:IP_ADDRESS" curl DOMAIN.TLD --resolve "DOMAIN.TLD:80:IP_ADDRESS"
您可以在前面跳过scheme/协议,但不能跳过–resolvestring中的端口号。