본문 바로가기
WIKI 기술 지식 베이스

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"
}

더 알아보기 (Learn more)