bind 지시문
bind 지시문 (바인딩 인터페이스 지정)
bind 지시문은 서버의 소켓이 바인딩될 인터페이스를 지정해요. 기본적으로 리스너는 빈(와일드카드) 인터페이스에 바인딩되지만, 다른 호스트명이나 IP에 강제로 바인딩할 수 있어요.
출처: Caddy 공식 문서
본문
서버의 소켓이 바인딩될 인터페이스를 덮어써요.
보통 리스너는 빈(와일드카드) 인터페이스에 바인딩돼요. 하지만 리스너가 다른 호스트명이나 IP에 바인딩하도록 강제할 수 있어요. 이 지시문은 호스트만 받고 포트는 받지 않아요. 포트는 사이트 주소로 결정돼요(기본값 443).
사이트를 일관성 없이 바인딩하면 예상치 못한 결과가 생길 수 있어요. 예를 들어 같은 포트의 두 사이트가 127.0.0.1로 해석되는데 그중 하나만 bind 127.0.0.1로 설정하면, 다른 사이트는 특정 호스트 없이 포트에 바인딩되므로 OS가 더 구체적으로 일치하는 소켓을 선택하게 되어 하나의 사이트만 접근 가능해져요. (가상 호스트는 서로 다른 리스너 간에 공유되지 않아요.)
bind는 네트워크 주소를 받지만 포트는 포함할 수 없어요.
문법 (Syntax)
bind <hosts...>
- **<hosts...>**는 리스너를 바인딩할 호스트 인터페이스 목록이에요.
예시 (Examples)
소켓을 현재 머신에서만 접근 가능하게 하려면 루프백 인터페이스(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의 유닉스 도메인 소켓에 바인딩하려면:
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"
}