v2中文文档
项目

bind

指定服务器的套接字绑定的接口。通常情况下,监听器会绑定到空(通配符)接口。然而,你可以强制监听器绑定到另一个主机名或IP。(这个指令只接受一个主机,而不能是端口)。

通常,监听器会绑定到空(通配符)接口。不过,你可以强制监听器改为绑定到其他主机名或IP。此指令只接受主机,不接受端口。端口由站点地址决定(默认为443)。

请注意,站点绑定方式不一致可能会导致意外后果。例如,如果同一端口上的两个站点都解析到127.0.0.1,而只有其中一个站点配置了bind 127.0.0.1,那么只有一个站点可访问,因为另一个站点会在没有指定具体主机的情况下绑定到该端口;操作系统会选择更具体匹配的套接字。(虚拟主机不会在不同监听器之间共享。)

bind接受网络地址,但不能包含端口。

语法

bind <hosts...>
  • <hosts...> 是要绑定监听器的主机接口列表。

示例

要使套接字只能从当前机器访问,请绑定到回环接口(localhost):

example.com {
	bind 127.0.0.1
}

要包含IPv6:

example.com {
	bind 127.0.0.1 [::1]
}

要绑定到10.0.0.1:8080

example.com:8080 {
	bind 10.0.0.1
}

要绑定到/run/caddy处的Unix域套接字:

example.com {
	bind unix//run/caddy
}

要将文件权限改为所有用户可写(默认0200,即只有所有者可写):

example.com {
	bind unix//run/caddy|0222
}

要把一个域名绑定到两个不同接口,并返回不同响应:

example.com {
	bind 10.0.0.1
	respond "One"
}

example.com {
	bind 10.0.0.2
	respond "Two"
}