Linux / Unix:curl 命令传递主机标头
如何使用 curl 命令行选项将标头发送到 Apple OS X 或基于 Unix 或 Linux 的系统上的 Web 服务器(例如 Nginx / Lighttpd / Apache / ISS),以便测试和调试负载均衡器后面的 Web 应用程序或服务器节点?
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | curl 命令 |
预计阅读时间 | 2 分钟 |
curl -H 'YOUR-EXTRA-HEADER-HERE' apache-server-ip curl -H 'YOUR-EXTRA-HEADER-1-HERE' -H 'YOUR-EXTRA-HEADER-2-HERE' www.example.com
例如,发送 Host 头到 www.example.com 以获取来自 75.126.153.206:80 的 HTML 响应,运行:
curl -H 'Host: www.example.com' 75.126.153.206:80
当 75.126.153.206 设置了多个虚拟主机时,这也很有用。默认情况下,当未发送虚拟主机标头时,不会响应任何内容:
$ curl -I 75.126.153.206:80
示例输出:
HTTP/1.1 500 Internal Server Error Server: nginx Date: Wed, 31 Oct 2012 18:51:03 GMT Content-Type: text/html Connection: keep-alive X-Whom: l1-biz-cyber
现在,发送 www.example.com 作为主机头:
$ curl -I -H 'Host: www.example.com' 75.126.153.206:80
示例输出:
HTTP/1.1 200 OK Server: nginx Date: Wed, 31 Oct 2012 18:52:20 GMT Content-Type: text/html Connection: keep-alive X-Whom: l2-com-cyber Vary: Cookie Last-Modified: Wed, 31 Oct 2012 18:48:58 GMT Cache-Control: max-age=98, must-revalidate X-Galaxy: Andromeda-1 X-Origin-Type: DynamicViaDAL
您可以使用此命令测试负载均衡器后面的 Apache 服务器节点(仅适用于您自己的 VLAN/LAN 设置):
## see if 192.168.1.11:95 apache node #1 is working or not ## curl -I --header 'Host: www.example.com' 'http://192.168.1.11:95/'
示例输出:
HTTP/1.1 200 OK
X-Whom: l1-com-cyber
Vary: Cookie
Last-Modified: Wed, 31 Oct 2012 18:54:00 GMT
Cache-Control: max-age=77, must-revalidate
Content-type: text/html
Date: Wed, 31 Oct 2012 18:57:43 GMT
Server: lighttpd
此选项可多次使用来添加/替换/删除多个标题:
curl www.example.com \ -H "Accept-Language: en" \ -H "Host www.example.com" \ -H "User-Agent: curl"
参考
有关更多选项,请参阅 curl 命令手册页:
$ man curl