Nginx를 많이 사용하다 Apache를 다루게 됐는데, 설정 방식이 다소 달랐다.
한 개의 서버에 Apache 하나로 qa, stag 서브도메인과 prod 서브도메인을 각각 다르게 설정해야 했다.
같이 알아보자.
Apache httpd는 설치 경로에 따라 설정 파일 위치가 다르다고 하는데, 설정 파일 이름은 httpd.conf이다.
아래는 전체 설정 코드이다.
# qa, stag 설정
<VirtualHost *:80>
ServerName qa.example.com:80
ServerAlias server stag.example.com server2
ServerAdmin root@example.com
DocumentRoot "/var/www/html/qa"
CustomLog "logs/qa/access_log" combined
ErrorLog "logs/qa/error_log"
<Directory "/var/www/html/qa">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
# prod 설정
<VirtualHost *:80>
ServerName prod.example.com:80
ServerAdmin root@example.com
DocumentRoot "/var/www/html/prod"
CustomLog "logs/prod/access_log" combined
ErrorLog "logs/prod/error_log"
<Directory "/var/www/html/prod">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
qa, stag 서브 도메인으로 들어오는 http 요청은 "/var/www/html/qa" 디렉터리에 위치한 php 파일이 처리하고,
prod 서브 도메인으로 들어오는 http 요청은 "/var/www/html/prod" 디렉터리에 위치한 php 파일이 처리한다.
qa, stag 서브 도메인은 ServerAlias 속성으로 묶을 수 있다.
ServerAlias가 *.example.com 인 경우, 모든 example.com 서브 도메인은 qa 설정을 따른다.
특정 서브 도메인끼리 같은 설정을 지정하고 싶다면 server[n]으로 명시하여 설정할 수 있다.
<VirtualHost *:80>
ServerName qa.example.com:80
ServerAlias server stag.example.com server2
...
</VirtualHost>
동일 포트를 사용하는 복수의 서브 도메인이 있고, 서브 도메인마다 설정을 다르게 지정하고 싶다면 <VirtualHost>를 여러 개 선언하면 된다.
<VirtualHost *:80>
...
</VirtualHost>
<VirtualHost *:80>
...
</VirtualHost>
참고로 AWS 대상 그룹의 Health Check는 첫 번째 VirtualHost의 설정에 지정된 access_log에만 보인다.
검색 키워드
- httpd virtualhost multiple server name
- httpd same 80 other domain
더 많은 내용을 보시려면 아래를 참고하세요.
References
'[개발] Infrastructure > Linux' 카테고리의 다른 글
[Linux] 디렉터리에 특정 단어를 포함하는 파일 찾기 (0) | 2021.08.17 |
---|---|
[Linux] 로그 파일의 내용을 truncate 명령어로 삭제하기. (0) | 2021.08.03 |
로컬에서 리눅스에 파일을 업/다운로드 할 수 있는 scp 명령어에 대해 알아보자 (0) | 2021.07.09 |
Ubuntu 메모리 사용량 줄이기 - 캐시 메모리 클리어 (0) | 2021.05.30 |
Ubuntu Server Settings (0) | 2020.07.01 |