httpd.conf
/etc/httpd/conf/httpd.conf
아파치 메인 설정 파일
apache 설치시 자동적으로 /etc/httpd 경로에 자동 설치
ServerRoot
ServerRoot
ex) ServerRoot "etc/httpd"
아파치 Root 홈 디렉토리 경로
절대경로로 설정
설치시 기본적으로 /etc/httpd
Listen
Listen
ex) Listen 80
아파치 웹 서버 포트 지정
다른 ip 주소와 포트에 대해서 연결할 수 있도록
미 지정시 아파치 실행x
여러 포트 지정시 Listen 지시자를 여러번 선언
include
Include
ex) Include conf.modules.d/*.conf
httpd.conf 파일이 아닌 다른 설정 파일을 포함하여 적용
ServerAdmin
ServerAdmin
ex) ServerAdmin admin@localhost
서버 오류 발생시 클라이언트로 전송할 오류 메시지에 보여질 관리자 이메일 주소
에러 발생시 에러 화면에 해당 이메일 주소가 표시된다.
ServerName
ServerName
ex) ServerName www.example.com:80
서버의 도메인을 입력한다
클라이언트에게 보여줄 호스트 이름 및 포트를 지정한다
DNS 주소가 등록되지 않으면 ip주소를 설정한다.
DocumentRoot
DocumentRoot
ex) DocumentRoot "/var/www/html"
아파치 서버의 웹문서가 있는 경로 웹 페이지의 루트 지정
마지막 경로엔 / 를 지정하지 않는다
DocumentRoot 라인 이후에 <directory> 지시자가 작성된다.
Directory
Directory
ex)
<Directory "/var/www">
[Options]
[AllowOverrid]
[Require]
...
</Directory>
각 디렉토리의 고유한 설정을 하기 위한 블록
Options : 특정 디렉토리 하위의 모든 디렉토리와 파일에 대한 접근 권한을 제어한다.
AllowOverride : 디렉토리에 .htaccess 파일이 있을 경우 기존 설정을 덮어쓸지 여부를 설정한다.
Require : 해당 디렉토리의 접근 허용 여부 설정한다.
Options
옵션 | 설명 |
None | 모든 접근을 허용하지 않는다 |
All | 모든 옵션 설정을 허용한다. |
Indexes | 디렉토리 접근시 DirectoryIndex 지시자에 설정한 파일이 없을 경우, 디렉토리 목록을 화면에 표시한다. |
Includes | mod_include를 사용하는 SSI(Server Side Includes)를 허용한다. |
IncludesNoExec | SSI을 허용하지만, #exec cmd와 #exec cgi는 사용할 수 없다. |
FollowSymLinks | 심볼릭 링크 사용 가능 |
ExecCGI | mod_cgi 를 사용하는 CGI 스크립트 실행 가능하다 |
MultiViews | 클라이언트가 요청한 media type과 content-encoding을 가지고 다중확장자를 지원하기 위해 MultiViews 기능을 사용한다. |
AllowOverride
옵션 | 설명 |
None | htaccess 파일을 override 하지 않는다. |
All | htaceess 파일을 우선 적용하도록 override를 허용한다. |
AuthConfig | 클라이언트 인증 지시자의 사용을 허용한다. |
Require
옵션 | 설명 |
all denied | 모든 접근을 거부한다. |
all granted | 모든 접근을 허용한다. |
ip [ip주소] | 특정 ip주소의 접근을 허용한다. |
not ip [ip주소] | 특정 ip주소의 접근을 거부한다. |
.htaccess 파일
vi /usr/local/apache/htdocs/admin/.htaccess
AuthType Basic
(인증 방식 기본)
AuthName "Admin Login"
(표시할 인증 메시지)
AuthUserFile /usr/local/apache/conf/password
(사용자인증 파일명)
Require valid-user
(사용인증할 방식 user 나 group과 인증할 대상)
디렉터리에 대한 설정 옵션을 제공하는 파일
허가, 인증 URL 재작성, 스팸봇 차단 등등의 기능
Order, Deny, Allow
<Directory "/www/html/admin">
Order Deny, Allow
Deny from all
Allow from 111.111.111.11
</Directory>
- Order : Deny와 Allow의 순서를 정한다. 먼저 적힌 것이 순서
- Deny,Allow : Deny지시어를 Allow 지시어 보다 먼저 살펴본다. 그리고 기본적으로 접근을 허용한다. Deny 나 Allow 지시어 해당되지 않는 클라이언트의 접근을 허용한다.
- Allow,Deny : Allow지시어를 Deny 지시어 보다 먼저 살펴본다. 그리고 기본적으로 접근을 허용하지 않는다. Deny나 Allow지시어에 해당되지 않는 클라이언트의 접근을 거부한다.
- ,로만 구분하며 공백이 있으면 안 된다.
- 밑줄 친 부분이 중요하다. 어떤 것이 뒤로 오는지에 따라 해당 도메인'만' 허용할 것인지, 전부 허용할 것인지가 정해진다.
- Deny : 접근 제한 대상을 설정한다.
- Deny from all : 모든 클라이언트의 접근을 거부한다.
- Deny from [Ip주소] : 특정 주소의 접근을 거부한다.
- Allow : 접근 허가 대상을 설정한다.
- Allow from all : 모든 클라이언트의 접근을 허용한다.
- Allow from [Ip주소] : 특정 주소의 접근을 허용한다.
예시
Order Deny,Allow
Deny from all
Allow from apache.org
=> apache.org 도메인의 모든 호스트의 접근은 허용, 다른 호스트는 모두 거부한다.
Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org
=> foo.apache.org 하위 도메인에 있는 호스트만 거부, apache.org 도메인에 있는 호스트는 모두 접근을 허용, 기본적으로 접근을 거부하기 때문에 apache.org도메인에 속하지 않는 호스트는 접근을 거부한다.
<Directory "/usr/local/apache/htdocs/admin">
Order Deny, Allow
Deny from All
Allow from 203.247.40.0
</Directory>
접근을 통제하는 디렉터리는 /usr/local/apache/htdocs/admin이고,
203.247.40.0 네트워크 대역의 주소를 갖는 클라이언트의 접근만을 허가
<Directory /usr/local/apache/htdocs>
Order Allow, Deny
Deny from all
Allow from 192.168.1.1
</Directory>
=> 192.168.1.1을 제외한 모든 접근을 차단한다.
<Directory /usr/local/apache/htdocs>
Order Deny,Allow
Deny from all
Allow from 192.168.1.1
</Directory>
=> 반대로 192.168.1.1을 제외한 접근만 차단할 수 있다.
<Directory />
AllowOverride none
Require all denied
</Directory>
디렉터리 경로에 "/" 로 설정하면 모든 디렉터리에 적용되는 옵션을 설정한다.
1501
다음은 웹서버에 대한 설정이다. ( 괄호 ) 안에 알맞은 내용을 적으시오.(9점)
Order ( ① ), ( ② )
Allow from .example.com
Deny from ( ③ )
조 건
- example.com 도메인을 제외한 모든 도메인으로부터 접근을 거부한다.
정답
① allow ② deny ③ all
DirectoryIndex
DirectoryIndex
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
- 클라이언트가 디렉터리 요청할때 DirectoryIndex에 설정된 파일명을 요청한다.
ex)
# DirectoryIndex index.html, index.htm, index.php
웹 디렉터리 접근시에 인식되는 인덱스 파일 순서를 index.html, index.htm, index.php 순으로 지정
UserDir
UserDir [디렉터리]
- 일반 사용자의 웹 디렉터리를 지정한다.
Files
<Files ".ht*:>
Require all denied
</Files>
- 해당 파일로 설정된 파일에 대한 옵션을 설정한다.
- 주로 접근 권한을 설정한다.
ErrorLog
ErrorLog "logs/error_log"
- 아파치의 error log가 생성되는 경로를 지정한다.
LogLevel
LogLevel warn
- log를 남길 기준의 Level을 설정
- 레벨은 debug, info, notice, warn, error, crit, alert, emerg 가 있고, 기본으로 warn으로 설정되어 진다.
ErrorDocument
ErrorDocument 500 "message"
ErrorDocument 404 /missing.html
ErrorDocument 404 "/cgi-bin/missing_handler.pl"
ErrorDocument 402 http://www.example.com
- 아파치에서 Error 발생 시 서버가 클라이언트에게 반환할 메시지 및 페이지를 설정한다.
옵션 | 설명 |
400 | Bad Request, 클라이언트의 잘못된 요청으로 처리 할 수 없음 |
401 | Unauthorized, 클라이언트의 인증 실패 |
402 | Payment required, 예약됨 |
403 | Forbidden, 접근 허가가 거부됨 |
404 | Not found, 존재하지 않는 문서 |
VirtualHost
<VirtualHost [Ip주소:포트]>
ServerAdmin ..
DocumentRoot ..
ServerAlias ...
</VirtualHost>
- 아파치 웹 서버에서 주 도메인 이외에 추가로 도메인 설정
htpasswd
아파치 사용자 인증 파일을 생성하고 관리해주는 명령어
htpasswd [option] [계정 파일] [사용자명]
-c : 사용자 계정 파일을 생성할 때 사용, 계정 생성시 한 번은 반드시 사용해야 함
gingmin라는 계정을 생성하고, 관련 정보 파일은 /usr/local/apache/conf/passwd에 생성
htpasswd -c /usr/local/apache/conf/passwd gingmin
apachectl, httpd
apache를 실행하기 위한 스크립트 파일
apachectl과 httpd는 비슷한 기능을 수행하나 다른 파일
httpd는 apache를 실질적으로 실행하는 파일
일반적으로는 httpd를 직접 실행하기보다는 unix기반에서는 apachectl, windows기반에서는 명령 프로프트(cmd)를 통해 실행
명령 | apachectl | httpd | 기능 (a: apachectl, h: httpd) |
명령 | start | apache httpd 데몬 실행 | |
stop | apache httpd 데몬 중단 | ||
restart | apache httpd 데몬 재시작 재시작 할 때 자동으로 configtest 명령을 실행하여 설정 파일 검사 |
||
fullstatus | mod_status의 모든 상태 정보 출력, 이 옵션을 사용하기 위해서는 apache가 mod_status 모듈을 사용하고 리눅스에 lynx와 같은 문자기반 브라우저가 필요하다. | ||
status | 간단한 상태 정보를 출력 | ||
graceful | -k start | restart | graceful | stop |
a: apache httpd 데몬을 재시작, restart 와 달리 가동중인 apache의 연결을 종료하지 않고 설정 파일의 변경 정보를 적용 h: apache를 시작 재시작 중단함 |
|
configtest | -t | a: 설정 파일의 문법을 검사 설정 파일을 읽고 Syntax ok 혹은 특정 설정 오류에 대한 자세한 정보를 알려준다. h: 설정 파일의 문법검사, 프로그램은 문법을 검사한 후 (문법이 올바른 경우) 0이나 (문법에 문제가 있는 경우) 0이 아닌 종료코드로 즉시 종료한다. -D DUMP_VHOSTS을 사용하면 가상호스트 설정을 자세히 출력한다. -D DUMP_MODULES를 사용하면 읽어들인 모듈 목록을 출력한다. |
|
-d serverroot | h: ServerRoot 지시어의 기본값을 serverroot로 설정한다. 설정파일에서 ServerRoot 지시어를 사용하여 이 값을 수정할 수 있다. Apache 설치경로를 지정한다. |
||
-f config | 시작할때 config 파일에 있는 지시어를 사용한다. config가 /로 시작하지 않으면 ServerRoot에 상대경로로 지정된다. |
||
-C directive | 설정파일을 읽기전에 directive 지시어를 처리한다. | ||
-D parameter | 서버 시작 혹은 재시작시 선택적으로 명령어를 처리하기위해 설정파일의 <IfDefine> 섹션에 사용할 parameter를 설정한다. | ||
-e level | 서버가 시작하는동안 LogLevel을 level로 설정한다. | ||
-E file | 서버가 시작하는동안 file로 오류문을 보낸다. | ||
-R directory | 서버를 SHARED_CORE 규칙을 사용하여 컴파일한 경우 공유오브젝트파일 directory를 지정한다. | ||
-h | 사용할 수 있는 명령행 옵션들의 짧은 요약을 출력한다. | ||
-l | 서버에 같이 컴파일한 모듈 목록을 출력한다. LoadModule 지시어를 사용하여 동적으로 읽어들이는 모듈은 출력하지 않는다. |
||
-L | 지시어 목록을 지시어가 받는 아규먼트와 지시어 사용장소와 같이 출력한다. | ||
-M | 읽어들인 정적 모듈과 공유 모듈 목록을 출력한다. | ||
-S | 설정파일에서 읽어들인 설정을 보여준다 (현재는 가상호스트 설정만을 보여준다). | ||
-v | httpd의 버전을 출력하고 종료한다. | ||
-V | httpd의 버전과 컴파일 파라미터를 출력하고 종료한다. | ||
-X | 디버그 상태로 웹서버를 실행한다. 오직 한 프로세스나 쓰레드로만 서비스하고, 서버는 콘솔에서 떨어지지 않는다 |
||
-k install | config | uninstall | (window) Apache를 Windows 서비스로 설치한다. Apache 서비스의 시작 옵션을 수정한다. Apache 서비스 설치를 지운다. |
||
-n name | (window) Apache 서비스의 이름을 설정한다. |
||
-w | (window) 오류가 발생하면 콘솔창을 열어서 오류문을 보여준다. |
2102
- /usr/local/apache/conf/httpd.conf
- ServerName www.ihd.or.kr:80
- DocumentRoot “/usr/local/apache/html”
- /usr/local/apache/bin/apachectl start
2201
11. 다음 조건에 따라 아파치 웹 서버에서 주 도메인 이외에 추가로 도메인을 운영하기 위해 설정하는 과정이다. ( 괄호 ) 안에 알맞은 내용을 적으시오.
가. 관련 모듈과 환경 설정 파일을 활성화한다.
#vi httpd.conf
LoadModule ( 1 )
Include ( 2 )
나. 관련 파일에서 추가 도메인에 대한 설정을 진행한다.
#vi ( 3 )
< ( 4 ) 192.168.5.13:80>
ServerAdmin admin@ihd.or.kr
DocumentRoot "/usr/local/apache/htdocs"
ServerName www.ihd.or.kr
</( 4 )>
조건
- 아파치 웹 서버는 소스 파일을 이용해서 /usr/local/apache 디렉터리에 설치되어 있다
- 1번과 2번에는 관련 설정 내용을 한 번에 기재한다
- 3번에는 아파치 웹 서버의 환경 설정 파일명을 절대경로로 기재한다.
- 4번에는 설정 항목을 기재한다.
1. vhost_alias_module modules/mod_vhost_alias.so
2. conf/extra/httpd-vhosts.conf
3. /usr/local/apache/conf/extra/httpd-vhosts.conf
4. VirtualHost
2101
- userdir_module modules/mod_userdir.so
- conf/extra/httpd_userdir.conf
- usr/local/apache/conf/extra/httpd_userdir.conf
- Userdir www
2002
1. htpasswd
2. -c
3. AuthConfig
4. .htaccess
2001
ServerName www.ihd.or.kr:80
DocumentRoot "/usr/local/apache2/htdocs"
DirectoryIndex index.html index.htm index.php
UserDir www
1902
1. Alias
2. /error/
3. "/usr/local/apache/error/"
4. NameVirtualHost
5. 192.168.5.13:80
1901
1. ErrorDocument
2. 403
3. 401
4. 404
1802
1. htpasswd
2. -c /usr/local/apache/conf/password ihduser
3. service apachectl configtest ( httpd -t )
4. service apachectl graceful ( httpd -k graceful )
1702
1. Order
2. Deny
3. All
4. 192.168.22.0/24
참고
https://httpd.apache.org/docs/2.4/programs/httpd.html
apachectl https://itwarehouses.tistory.com/3
NameVirtualHost https://joont.tistory.com/46
Alias https://araikuma.tistory.com/788
https://httpd.apache.org/docs/2.2/ko/mod/mod_authz_host.html
https://applejara.tistory.com/432
https://meongj-devlog.tistory.com/94
'리눅스' 카테고리의 다른 글
[리눅스] iptables (0) | 2022.11.02 |
---|---|
[리눅스] DNS 설정 (0) | 2022.11.02 |
[리눅스] sendmail (0) | 2022.10.30 |
[리눅스] 삼바 (SAMBA) (1) | 2022.10.30 |
[리눅스] rsync 백업 (0) | 2022.10.30 |
댓글