我确定这个问题已经在某处得到回答,由于某种原因,我找不到适合我的答案。
我的环境中有多个站点托管在单个IP上。这些都使用Https并在负载均衡器后面。
出现问题是服务器中的一个站点已关闭。 LB将整个服务器标记为已关闭,并且不会告诉我们实际发生了什么...
每个站点都有一个登录页面,因此我想进行检查以连接到请求站点的特定IP,然后查看该登录内容的内容以查看该站点是否实际运行。
这是我的环境
服务器A
1.2.3.4 : https://example.com https://blah.com
服务器B
4.3.2.1: https://example2.com https://blah2.com
我尝试使用curl解决此问题,但是,代码似乎可以解决我想要的主机名否。
代码:
#!/bin/bash
Usage="Please execute this script using the following: ./thisscript.sh example.com 1.2.3.4";
Hostname=$1
Address=$2
if [ $# -ne 2 ]; then
echo ${Usage}
exit 1
fi
curl -v -k "${Hostname}":443:"${Address}" https://"${Hostname}"
我当前代码的输出:
myscript.sh purple.com 172.217.16.46 | head
- 将URL重建为:purple.com:443:172.217.16.46/接收的总百分比%Xferd平均速度时间时间时间当前 Dload上传总剩余左速度0 0 0 0 0 0 0 0 0-:-:--:-:- -:-:-0 *无法解析主机:purple.com:443
- 关闭连接0 curl:(6)无法解析主机:purple.com:443
- 将URL重建为:https://purple.com/
- 尝试104.20.56.235 ...
- 已连接至purple.com(104.20.56.235)端口443(#1)
- 在/etc/ssl/certs/ca-certificates.crt中找到148个证书
- 在/ etc / ssl / certs中找到597个证书
- ALPN,提供http / 1.1
- 使用TLS1.2 / ECDHE_ECDSA_AES_128_GCM_SHA256的SSL连接
- 服务器证书验证已跳过
- 服务器证书状态验证已跳过
- 常用名:purple.com(匹配)
- 服务器证书的到期日期确定
- 服务器证书激活日期确定
- 证书公钥:EC
- 证书版本:#3
- 主题:C = US,ST = CA,L = San Francisco,O = CloudFlare \,Inc.,CN = purple.com
- 开始日期:2018年4月13日星期五00:00:00 GMT
- 到期日期:2019年4月13日星期六格林尼治标准时间
- 发布者:C = US,ST = CA,L = San Francisco,O = CloudFlare \,Inc.,CN = CloudFlare Inc ECC CA-2
- 压缩:NULL
- ALPN,服务器接受使用http / 1.1
GET / HTTP / 1.1 主持人:purple.com 用户代理:curl / 7.47.0 接受: /
这应该失败,因为我正在查询google的IP 172.217.16.36,并且代码仍在抓取Purple.com的内容。
简而言之: 我需要一种通过 IP 通过https连接到服务器并获取特定站点内容的方法。