Useful
Apache 설정 파일 httpd.conf
TTOII
2023. 8. 23. 14:26
728x90
Apahce 메인 설정 파일인 httpd.conf 파일에 대해 알아볼 것이다.
우선 Apache를 어떤 방식으로 어떤 OS에 설치하느냐에 따라 설정 파일의 위치가 달라진다.
# Aapche 설정 파일 찾는 법
[설정 파일명] - V | egrep "(HTTPD\_ROOT|SERVER\_CONFIG\_FILE)"
# Apache를 source file로 설치했다면
/usr/local/apache/conf/httpd.conf
# CentOS에 설치했다면
/etc/httpd/conf/httpd.conf
# Ubuntu에 설치했다면
/etc/apache/apache.conf
/etc/apache2/apache2.conf
구성 요소
다음으로는 구성 요소에 대해 알아본다.
일반적으로 자주 설정하는 내용에 대해서만 알아보겠다.
ServerRoot [디렉토리]
- Apache 서버가 존재하는 디렉토리 설정
- 다른 지시자의 상대 경로가 ServerRoot를 기준으로 지정된다.
Listen
- Apache와 통신하는 특별한 포트를 설정
- 일반적으로 80 포트를 사용하며 변경할 수 있다.
- 해당 지시자를 설정하지 않으면 apache가 시작되지 않는다.
LoadModule
LoadModule {modname} *.*
- Apache와 호환되는 모듈을 로드하는 지시자이다.
- 대부분 *.so와 같은 확장자를 지닌다.
IfModule
- 특정 모듈이 존재하는 경우에만 작동하는 지시자를 설정하기 위해 사용한다.
ServerAdmin
- 서버에서 오류 발생 시 클라이언트로 전송하는 오류 메세지에 들어갈 이메일 주소를 지정한다.
ServerName
- 서버가 자신을 식별하기 위해 사용하는 호스트 이름 및 포트를 설정한다.
- 등록된 DNS 이름을 갖고 있지 않다면 IP 주소로 설정해야 한다.
DocumentRoot
- Apache가 제공하는 웹 어플리케이션 디렉토리를 설정한다.
- DocumentRoot 마지막에 슬래시(/)를 지정하면 안된다.
<Directory [디렉토리 경로]>
- 해당 디렉토리 경로 또는 파일에 적용되는 옵션을 설정한다.
- 경로를 "/"로 설정 시 모든 디렉토리에 적용되는 옵션을 설정한다.
DirectoryIndex
- 웹 디렉토리 접근 시 인식되는 파일을 지정한다.
- 도메인이 www.test.com이고 index.html으로 설정되어 있다면 www.test.com 접속 시 index.html을 찾아서 반환한다.
- 파일을 순서대로 index.html, index.php로 지정 시 index.html을 먼저 찾고 없다면 index.php를 반환한다.
ErrorLog
- Apache 에러 로그가 생성될 경로를 지정한다.
ErrorDocument
ErrorDocument [Error Code] [메세지 or file]
ErrorDocument 400 "Server Die"
ErrorDocument 500 /error.html
- Apache에서 Error 발생 시 클라이언트에게 반환할 메세지 또는 페이지를 설정한다.
Include
Include *.conf
- httpd.conf가 아닌 다른 설정 파일(httpd-mpm.conf, httpd-vhost.conf 등)을 포함하여 적용한다.
추가 도메인 이용
<VirtualHost>
- 하나의 서버가 여러개의 도메인을 가지고 있고, 각각의 도메인마다 다른 서비스를 하고 싶을 때 사용한다.
- 예를 들어 서버가 하나의 ip 12.34.56.78을 가지고 있고 두개의 도메인이 모두 해당 서버를 가리키고 있다고 했을 때, shop.com을 입력하면 쇼핑몰 사이트로 resell.com를 입력하면 리셀 사이트로 연결되게 하고 싶을 때 사용하면 편리하다.
<VirtualHost> 속성 값
ServerName
- 서비스할 도메인을 등록한다.
ServerAlias
- ServerName 외에 추가 도메인을 등록한다.
Proxy 관련 속성
- ProxyPass, ProxyPassReverse : 리버스 프록시 설정을 위한 값, 원격서버를 로컬서버와 연결한다.
- ProxyRequests : 리버스 프록시를 이용한다면 Off (포워드 프록시 이용 시 On)
- ProxyPreserveHost : Http Request Header 유지 여부
- ProxyPassMatch : 특정 확장자를 가진 파일을 처리할 수 있다.
- ProxyPassMatch ^/.*\(jsp|do|action)$ http://localhost:8080/
접근 제어
<Directory "/www/html/admin">
Order Deny,Allow
Deny from All
Allow from 192.168.2.0/24
</Directory>
- Deny, Allow 순서로 적용하며 더 하단에 있는 정책이 적용된다.
- 위와 같은 설정에서는 기본적으로 모두 차단하고, 192.168.2.0/24만 오픈한다.
<VirtualHost *:80> # 80번 포트로 들어오는 모든 Ip에 대한 설정
ProxyRequests Off
ProxyPreserveHost On
<Proxy *> # 들어오는 모든 Ip 에 대한 규칙 지정
Order deny,allow
Allow from all
</Proxy>
# 밑에 설정한 주소로 보내준다
ProxyPass / http://[WAS 서버 IP or AWS ELB DNS]:[사용할 포트번호]/ disablereuse=on
ProxyPassReverse / http://[WAS 서버 IP or AWS ELB DNS]:[사용할 포트번호]/
</VirtualHost>
따라서 다음과 같은 내용으로 설정하면 추가 도메인을 사용할 수 있다.
참조
728x90