linux 환경
명령어
cd /usr/local/apache
웹서버를 시작
pico : text editer
pico /usr/local/apache/conf/httpd.conf
위치
1. /usr/local/apache
2.
수정
#ServerName
이란 것이 주석 처리(#) 이 되어 있을 것이다.
이것을 주석을 지우고 도메인을 입력하도록 하자.
변경후
ServerName sansung.net
아파치 웹서버 httpds.conf 서버설정에 대해 정리한다.
ServerAdmin
- 관리자 이메일 주소를 설정한다. ServerSignature 값이 Email로 설정되었을 경우, 이메일 주소는 404, 500 에러가 발생했을 경우 에러 화면에 해당 이메일 주소가 표시된다.
DocumentRoot
- 웹 프로젝트가 있는 루트 디렉토리를 지정한다.
- 기본설정은 /var/www/html이다.
- 가상호스트에서도 사용할 수 있으므로 가상 호스트마다 각각 다른 웹 프로젝트 서비스가 가능해진다.
DirectoryIndex
- 웹요청 주소가 디렉토리만 있고 파일명이 없을 때 기본적으로 읽어서 전송할 파일명을 설정한다.
- index.html index.jsp 등
<Directory 디렉토리명></Directory>
- 디렉토리 단위별로 설정하는 지시자다. Location 지시자와 비슷하나 차이점은 Location은 URL을 기반으로 한다는 것이다. Directory 지시자는 로컬 파일의 경로를 대상으로 한다.
- 주로 Options와 접근권한을 설정하는 경우가 많다.
- 예제)
<Directory "/var/www/html">
Options Indexs FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
1) Options
- 설정한 디렉토리("/var/www/html") 하위의 모든 디렉토리와 파일에 대한 접근권한을 제어한다.
- https://httpd.apache.org/docs/2.2/ko/mod/core.html#directory [Options Directive] 참조
옵션 | 설명 |
None | 모든 접근을 허용하지 않는다. |
All | 모든 옵션설정을 허용한다. (단, MultiViews는 제외) |
Indexes | 디렉토리 접근시 DirectoryIndex에 설정한 파일이 없을 때 디렉토리내 파일 목록을 보여준다. |
Includes | Server-side includes provided by mod_include are permitted. |
IncludesNoExec | Server-side includes are permitted, but the #exec cmd and #exec cgi agr disabled. |
FollowSymlinks | 심볼릭 링크를 사용할 수 있다. |
ExecCGI | CGI 스크립트를 실행할 수 있다. |
MultiViews | 클라이언트가 요청한 media type과 content-encoding을 가지고 적절한 요청을 처리한다. |
2) AllowOverride
- 디렉토리에 .htaccess 파일이 있을 경우 기존 설정을 덮어쓸지 여부를 설정한다. 기본설정은 None이다.
※ .htaccess 파일은? 웹서비스 디렉토리별로 설정이 달라져야 할 경우가 있다. 이때 관리자가 모든 설정을 하기는 힘들기 때문에 개별 디렉토리마다 다르게 설정하기 위해 존재하는 파일이다. 예로, 호스팅을 받아 서비스를 할때 .htaccess 파일을 사용한다.
옵션 | 설명 |
None | 디렉토리별 설정을 허가하지 않는다. 즉, htaccess 파일을 Override하지 않는다. |
All | .htaccess 파일을 우선 적용하도록 Override를 허용한다. |
Options | .htaccess에 설정된 Options 지시자(디렉토리 옵션) 사용을 허용한다. |
FileInfo | .htaccess에 설정된 AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority와 같은 문서유형 지시자 사용을 허용한다. |
AuthConfig | .htaccess에 설정된 클라이언트 인증 지시자 사용을 허용한다. |
Limit | .htaccess에 설정된 Order, Allow, Deny와 같은 접근제어 지시자 사용을 허용한다. |
3) Order allow, deny
- 순서대로 Allow에 대한 부분을 먼저 확인 후, Deny를 확인한다.
4) Allow
- Allow from all : 모든 클라이언트로부터의 연결을 허용한다.
- Allow from 127.0.0.1 192.168.111.100 : 127.0.0.1과 192.168.111.100 IP 클라이언트만 허용한다.
5) Deny
- Deny from all : 모든 클라인트로부터의 연결을 거부한다.
- 예)
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
<Files 파일명></Files>
- 파일명에 따라 특별한 처리를 할 때 사용한다.
- 파일명에 포함된 ?는 임의의 한 문자와 일치함을, *는 임의의 한 문자열이 일치함을 나타낸다.
- 파일명 앞에 ~가 붙게 되면 정규표현식을 사용할 수 있다.
- 예제1) 관리페이지는 외부인이 볼 수 없도록 설정
<Files admin.php>
Order deny,allow
Deny from all
Allow From 127.0.0.1
</Files>
- 예제2) htm, html, css, js, php 파일 인코딩 설정
<Files ~ "\.(htm|html|css|js|php)$">
AddDefaultCharset UTF-8
DefaultLanguage ko_KR
</Files>
<FilesMatch 정규표현식></FilesMatch>
- <Files>의 정규표현식 사용가 동일하다. 대신 <FilesMatch>는 ~를 붙히지 않아도 정규표현식이 적용된다.
- 예제1) htm, html, css, js, php 파일 인코딩 설정
<FilesMatch "\.(htm|html|css|js|php)$">
AddDefaultCharset UTF-8
DefaultLanguage ko_KR
</FilesMatch>
Redirect
- Redirect [HTTP 상태코드] [요청URL] [리다이렉트 URL]
- HTTP 상태코드는 리다이렉트가 되면서 바뀔 상태코드를 지정한다. 기본값은 302.
- 예제1)
Redirect 301 /hello http://www.naver.com
Redirect /world http://www.naver.com
RedirectMatch
- Redirect 지시자와 비슷하며 정규표현식으로 리다이렉트를 처리할 수 있다.
- 예제1) 톰캣의 WEB-INF와 META-INF 폴더를 접근 못하게 설정
RedirectMatch 404 /(?i)(WEB-INF|META-INF)(/|$)
DefaultType
- 모르는 타입이 들어왔을 경우 설정할 기본 MIME 타입을 설정한다.
LogFormat
- 서버의 로그파일 형식을 설정한다. common은 기본설정, combined는 Referer와 User-Agent가 추가되었다.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
옵션 | 설명 | 예제 |
%h | 요청한 원격 호스트 | 192.168.111.100 |
%l | 원격 로그인명 | - |
%u | 원격 사용자명 | - |
%t | 요청날짜 및 시간 | [21/Feb/2016:15:28:28 +0900] |
%r | 요청의 첫번째 라인 | GET/HTTP/1.1 |
%s | HTTP 응답코드 | 200 |
%b | HTTP 헤더를 제외한 응답의 Byte 길이 | 66 |
%{헤더명}i | HTTP 헤더에서 작성한 헤더명에 대한 값을 출력 | %{Referer}i %{User-Agent}i |
ErrorLog
- 에러로그 파일을 설정한다.
- 예제)
ErrorLog "| /usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/error.log.%Y%m%d 86400" combined
CustomLog
- 클라이언트의 요청이력을 남길 로그파일을 설정한다.
- 예제)
CustomLog "| /usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/access.log.%Y%m%d 86400" combind
Alias
- 요청 URL을 특정 파일 시스템에 연결시킨다.
- 예제)
Alias /helpFiles /nas/2016/helpFiles
AddDefaultCharset
- 컨텐츠 형식이 text/plain이나 text/html일 경우 HTTP 응답 헤더에 설정된 charset 헤더를 추가한다.
- 가상 호스트마다 다르게 설정할 수 있다.
- HTTP 응답 헤더에 charset이 지정되었을 경우는 HTML <meta>태그로 charset을 지정해도 헤더에 있는 charset이 적용된다. DefaultCharset과 다른 HTML이 있다면 파일의 인코딩을 변경하거나 <meta>태그로 charset을 명시적으로 지정하고 해당 지시자를 Off하여야 한다.
- 예제)
AddDefaultCharset UTF-8
결과 : Content-Type : text/html; charset=UTF-8
출저 : http://pshcode.co.kr/88