Apache HTTP Server Version 2.4

Apache > HTTP Server > Documentation > Version 2.4

# 주소와 포트 지정 (Binding)

이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요.

아파치가 특정 주소와 포트에서 서비스하도록 설정하기.

### 참고

- 가상호스트
- DNS 문제

## 개요

관련된 모듈 | 관련된 지시어
--- | ---
`core` `mpm_common` | `<VirtualHost>` `Listen`

아파치를 시작하면 아파치는 컴퓨터의 어떤 포트와 주소에 연결하여, 들어오는 요청을 기다린다. 기본적으로 아파치는 컴퓨터의 모든 주소에서 기다린다. 그러나 아파치가 특정 포트나 선택한 주소만을 기다리게 해야할 경우가 있다. 또 이 문제는 아파치가 어떻게 다른 IP 주소, 호스트명, 포트에 반응할지를 결정하는 가상호스트 기능과도 관련되있다.

`Listen` 지시어는 서버가 특정 포트나 주소와 포트 조합에서만 요청을 받게 한다. `Listen` 지시어에 포트 번호만 지정하면, 서버는 모든 인터페이스에서 지정한 포트를 기다린다. 여러 `Listen` 지시어로 기다릴 여러 주소와 포트를 지정할 수도 있다. 서버는 열거한 주소와 포트로 요청이 들어오면 응답한다.

예를 들어, 서버가 80번과 8000번 포트 모두에서 연결을 받도록 하려면:

`Listen 80
Listen 8000`

서버가 지정한 두 인터페이스와 포트에서 연결을 기다리도록 하려면,

`Listen 192.0.2.1:80
Listen 192.0.2.5:8000`

IPv6 주소는 다음과 같이 대괄호로 묶어야 한다:

`Listen [2001:db8::a00:20ff:fea7:ccea]:80`

## IPv6에서 특별히 고려할 점

IPv6를 구현한 플래폼이 늘고 있고 APR이 이들 플래폼 대부분에서 IPv6를 지원하기때문에, 아파치는 IPv6 소켓을 할당하여 IPv6로 받은 요청을 처리할 수 있다.

아파치 관리자에게 복잡한 부분은 IPv6 소켓이 IPv4 연결과 IPv6 연결을 모두 처리할 수 있느냐는 점이다. 대부분의 플래폼에서는 IPv4-대응(mapped) IPv6 주소를 사용하여 IPv6 소켓에서 IPv4 연결을 받지만, FreeBSD와 NetBSD와 OpenBSD은 시스템전체 정책때문에 기본적으로 허용하지 않는다. 그러나 기본적으로 허용하지않는 시스템이라도 아파치를 위해 특별한 설정 파라미터로 변경할 수 있다.

반면 리눅스와 Tru64 같은 일부 플래폼에서 IPv4와 IPv6을 모두 처리하려면 대응 주소를 사용해야만 한다. 아파치가 최소한의 소켓을 사용하여 IPv4 연결과 IPv6 연결을 모두 받도록하려면, IPv4-대응 IPv6 주소를 사용하고 configure 옵션 `--enable-v4-mapped`를 지정한다.

`--enable-v4-mapped`는 FreeBSD, NetBSD, OpenBSD를 제외한 모든 플래폼에서 기본값이고, 아마도 당신의 아파치도 마찬가지일 것이다.

플래폼과 APR의 지원여부와 관계없이 아파치가 IPv4 연결만을 받도록하려면, 다음 예제와 같이 모든 `Listen` 지시어에 IPv4 주소를 사용한다:

`Listen 0.0.0.0:80
Listen 192.0.2.1:80`

플래폼에서 지원하며 아파치가 서로 다른 소켓으로 IPv4 연결과 IPv6 연결을 받도록하려면 (즉 IPv4-대응 주소를 사용하지 않으려면), configure 옵션 `--disable-v4-mapped`를 지정한다. `--disable-v4-mapped`는 FreeBSD, NetBSD, OpenBSD에서 기본값이다.

## 가상호스트와 어떻게 연관되나

`Listen`은 가상호스트를 만들지 않는다. 이는 단지 주서버가 어떤 주소와 포트를 기다릴지만 알려준다. `<VirtualHost>` 지시어를 사용하지 않으면, 서버는 받은 모든 요청을 똑같이 처리한다. 그러나 `<VirtualHost>`로 여러 주소와 포트에 대해 다른 행동을 지정할 수 있다. 가상호스트를 만들려면 먼저 서버에게 사용할 주소와 포트를 알려줘야 한다. 그리고 특정 주소와 포트에 대한 가상호스트의 행동을 지정할 `<VirtualHost>` 섹션이 필요하다. 주서버가 기다리지않는 주소와 포트를 사용하는 `<VirtualHost>`는 접근할 수 없음을 주의하라.