2.2. 다른 도메인에 다른 콘텐츠를 제공하는 웹 서버로 NGINX 구성
기본적으로 NGINX는 서버의 IP 주소와 연결된 모든 도메인 이름에 대해 클라이언트에 동일한 콘텐츠를 제공하는 웹 서버 역할을 합니다. 다음 절차에서는 NGINX를 구성하는 방법을 설명합니다.
-
/var/www/example.com/디렉터리의 콘텐츠를 사용하여example.com도메인에 요청을 처리하는 방법 -
/var/www/example.net/디렉터리의 콘텐츠를 사용하여example.net도메인에 요청을 제공하는 방법 -
다른 모든 요청(예: 서버의 IP 주소 또는 서버의 IP 주소와 연관된 다른 도메인)에
/usr/share/nginx/html/대한 디렉터리의 콘텐츠를 제공하는 방법
사전 요구 사항
- NGINX가 설치됨
클라이언트 및 웹 서버는
example.com및example.net도메인을 웹 서버의 IP 주소로 확인합니다.이러한 항목을 DNS 서버에 수동으로 추가해야 합니다.
프로세스
/etc/nginx/nginx.conf파일을 편집합니다.기본적으로
/etc/nginx/nginx.conf파일에는 catch-all 구성이 이미 포함되어 있습니다. 구성에서 이 부분을 삭제한 경우/etc/nginx/nginx.conf파일의http블록에 다음server블록을 다시 추가합니다.server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; }이러한 설정은 다음을 구성합니다.
-
listen지시문은 서비스에서 수신 대기하는 IP 주소와 포트를 정의합니다. 이 경우 NGINX는 모든 IPv4 및 IPv6 주소의 포트80에서 수신 대기합니다.default_server매개 변수는 NGINX가 이server블록을 IP 주소 및 포트와 일치하는 요청의 기본값으로 사용함을 나타냅니다. -
server_name매개 변수는 이server블록을 담당하는 호스트 이름을 정의합니다.server_name을_로 설정하여 이server블록의 모든 호스트 이름을 수락하도록 NGINX를 구성합니다. -
root지시문은 이server블록의 웹 콘텐츠 경로를 설정합니다.
-
example.com도메인에 대한 유사한server블록을http블록에 추가합니다.server { server_name example.com; root /var/www/example.com/; access_log /var/log/nginx/example.com/access.log; error_log /var/log/nginx/example.com/error.log; }-
access_log지시문은 이 도메인에 대한 별도의 액세스 로그 파일을 정의합니다. -
error_log지시문은 이 도메인에 대한 별도의 오류 로그 파일을 정의합니다.
-
example.net도메인에 대한 유사한server블록을http블록에 추가합니다.server { server_name example.net; root /var/www/example.net/; access_log /var/log/nginx/example.net/access.log; error_log /var/log/nginx/example.net/error.log; }
두 도메인의 root 디렉터리를 생성합니다.
# mkdir -p /var/www/example.com/ # mkdir -p /var/www/example.net/두 root 디렉터리에
httpd_sys_content_t컨텍스트를 설정합니다.# semanage fcontext -a -t httpd_sys_content_t "/var/www/example.com(/.*)?" # restorecon -Rv /var/www/example.com/ # semanage fcontext -a -t httpd_sys_content_t "/var/www/example.net(/.\*)?" # restorecon -Rv /var/www/example.net/이러한 명령은
/var/www/example.com/및/var/www/example.net/디렉터리에httpd_sys_content_t컨텍스트를 설정합니다.restorecon명령을 실행하려면policycoreutils-python-utils패키지를 설치해야 합니다.두 도메인의 로그 디렉터리를 생성합니다.
# mkdir /var/log/nginx/example.com/ # mkdir /var/log/nginx/example.net/nginx서비스를 다시 시작합니다.# systemctl restart nginx
검증
각 가상 호스트의 문서 루트에 다른 예제 파일을 생성합니다.
# echo "Content for example.com" > /var/www/example.com/index.html # echo "Content for example.net" > /var/www/example.net/index.html # echo "Catch All content" > /usr/share/nginx/html/index.html-
브라우저를 사용하고
http://example.com에 연결합니다. 웹 서버는/var/www/example.com/index.html파일의 예제 콘텐츠를 표시합니다. -
브라우저를 사용하고
http://example.net에 연결합니다. 웹 서버는/var/www/example.net/index.html파일의 예제 콘텐츠를 표시합니다. -
브라우저를 사용하고
http://IP_address_of_the_server에 연결합니다. 웹 서버는/usr/share/nginx/html/index.html파일의 예제 콘텐츠를 표시합니다.