웹제로에 오신것을 환영합니다.
 
                   
home 로그인 회원가입 이벤트
 공지사항  
 서버작업  
 보안뉴스  
 보안패치  
 자주 묻는 질문  
 지식포럼  

HTML

 
PHP
제로보드
LINUX
WINDOWS
 호스팅 메뉴얼
 도메인 메뉴얼  
도메인 등록
도메인 파킹
도메인 포워딩
도메인 DNS변경
 웹메일 호스팅 메뉴얼  
MS-Outlook 2007 세팅법
Outlook Express 6.0 세팅법
 이벤트

ns.webzero.kr
121.254.249.2
 
ns2.webzero.kr
121.254.249.3



고객센터 홈 > 고객센터

리눅스



제목: Apache 설정파일 예제 P3P적용의 건
분류: 일반
이름: 웹제로™ * http://www.wixx.co.kr


등록일: 2007-04-23 15:35
조회수: 10391 / 추천수: 824



Status: Base
Compatibility: Nickname only available in Apache 1.3 or later.
Conditional logging available in 1.3.5 or later.
Module: mod_log_config


TransferLog 지시자

Syntax: TransferLog file|pipe
Default: none
Context: server config, virtual host
Status: Base
Module: mod_log_config

LogFormat 지시자는 앞에서 예제가 있으므로 생략하고 비슷한 기능을 가진
CustomLog, TransferLog 지지자에 대해서 잠깐 알아봅시다.

둘다 file 에 로그를 기록한다는 면에서는 동일한 기능입니다.(pipe 기능도 동일)

    같은점

    1. 둘다 file에 로그를 기록한다.
    2. |pipe 에 설정한 외부 프로그램을 인자로 사용할 수 있다.
    3. 둘다 다중 로그를 사용할 수 있다.

    다른점

    1. CustomLog 지시자는 LogFormat 지시자에서 설정한 nickname이나 Log format을
        인자로 사용할 수 있다.
    2. CustomLog 지시자는 환경변수를 인자로 가질 수 있다.


따라서,
이하 다룰 내용은 환경변수를 설정하고 이 환경변수(env)와 동일(=)하거나 그렇지 않은(!=)
특정 유형에 대해서 로그에 기록해야하 하므로 당연히 CustomLog 지시자를 사용해야
합니다.

*주의)
환경변수를 인자로 사용할 경우 하나만 가능.

이해가 되셨는지 모르겠네요....


2-2. 아파치 환경변수 설정

아파치에서 환경변수를 설정하는 방법은 몇가지 있습니다.
예를 들어,

    - mod_env 모듈에 의한
       SetEnv
       지시자 이용

    - mod_setenvif 모듈에에 의한
       BrowserMatch
       BrowserMatchNoCase
       SetEnvIf
       SetEnvIfNoCase
       지시자 이용

등이 있습니다.
여기에서 주로 사용할 지시자는 BrowserMatch 지시자와 SetEnvIf 지시자입니다.

*참고)
xxxxNoCase 지시자는 대소문자를 구분하지 않겠다는 의미입니다.

이 두개의 지시자에 대한 사용법만 간단하게 알아봅시다.

BrowserMatch 지시자

Syntax: BrowserMatch regex envar[=value] [envar[=value]] ...
Default: none
Context: server config, virtual host, directory, .htaccess
Override: FileInfo
Status: Base
Module: mod_setenvif
Compatibility: Apache 1.2 and above (in Apache 1.2 this directive was found in the
now-obsolete mod_browser module); use in .htaccess files only supported with
1.3.13 and later


SetEnvIf 지시자

Syntax: SetEnvIf attribute regex envar[=value] [envar[=value]] ...
Default: none
Context: server config, virtual host, directory, .htaccess
Override: FileInfo
Status: Base
Module: mod_setenvif
Compatibility: Apache 1.3 and above; the Request_Protocol keyword and environment-variable
matching are only available with 1.3.7 and later; use in .htaccess files only supported
with 1.3.13 and later

   환경변수 지정 및 값 지정 방법

   1.varname, or
   2.!varname, or
   3.varname=value

   예 :

   BrowserMatch ^Mozilla forms jpeg=yes browser=netscape
   BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript
   BrowserMatch MSIE !javascript

   BrowserMatchNoCase Robot is_a_robot
   SetEnvIfNoCase User-Agent Robot is_a_robot

   BrowserMatchNoCase mac platform=macintosh
   BrowserMatchNoCase win platform=windows

   SetEnvIf Request_URI ".gif$" object_is_image=gif
   SetEnvIf Request_URI ".jpg$" object_is_image=jpg
   SetEnvIf Request_URI ".xbm$" object_is_image=xbm
        :
   SetEnvIf Referer www.mydomain.com intra_site_referral
        :
   SetEnvIf object_is_image xbm XBIT_PROCESSING=1

   SetEnvIfNoCase Host Apache.Org site=apache

   SetEnvIf 지자자에서 attribute 에 올 수 있는 것들 :

   Remote_Host - the hostname (if available) of the client making the request
   Remote_Addr - the IP address of the client making the request
   Remote_User - the authenticated username (if available)
   Request_Method - the name of the method being used (GET, POST, et cetera)
   Request_Protocol - the name and version of the protocol with which the request
                                    was made (e.g., "HTTP/0.9", "HTTP/1.1", etc.)
   Request_URI - the portion of the URL following the scheme and host portion
   그외
   Host, User-Agent, and Referer 가능

   see http://www.rfc-editor.org/rfc/rfc2616.txt

따라서,
BrowserMatch와 SetEnvIf User-Agent 는 서로 동일하다는 것을 알 수 있을 겁니다.

*중요)
CustomLog 지자자와 다르게 환경변수 인자에 여러 개를 설정할 수 있음.

여기까지 이해가 되셨다면 다음은 보지 않아도 될듯 하군요.......^.^


3. 예제

3-1. 특정 IP 주소만 환경변수로 설정하기

- 환경변수 이름 : do_not_log
- 목적 : 이 환경변수에 해당되는 특정 IP 주소는 access_log에 기록하지 않는다.

    SetEnvIf Remote_Addr "^127.0.0.1$" do_not_log
    SetEnvIf Remote_Addr "^211.35.159.12[89]$" do_not_log
    SetEnvIf Remote_Addr "^211.35.159.1[345][0-9]$" do_not_log

    위에서 설정한 특정 IP 주소는
    127.0.0.1 자기자신을 말하는 루프백 주소
    211.35.159.128, 211.35.159.129 두개의 IP 주소
    211.35.159.130 ~ 211.35.159.139 10개의 IP 주소
    211.35.159.140 ~ 211.35.159.149 10 개의 IP 주소
    211.35.159.150 ~ 211.35.159.159 10 개의 IP 주소

즉 원격의 IP 주소(Remote_Addr)가 위와 일치하면 do_not_log 환경변수에 지정하는 예임.

*참고)
^ 은 시작을 의미
$ 은 마지막을 의미
[0-9] 0~9까지의 숫자중 어느 하나


3-2. 특정 타입의 파일만 환경변수로 설정하기

    SetEnvIfNoCase Request_URI ".(gif|jpg|png|css|js|java)$" do_not_log

    요청 URI(Request_URI) 파일이
    *.gif
    *.jpg
    *.png
    *.css
    *.js
    *.java

    로 끝난 파일인 경우(대소문자를 구별하지 않음) do_not_log 환경변수에 지정함


3-3. 특정 User-Agent 만 환경변수로 설정하기

- 환경변수 이름 : do_not_log 과 is_a_robot
- 목적 : 이 환경변수에 해당되는 특정 User-Agent는 access_log에 기록하지 않고,
             따로 로그(robot-log)에 기록하거나 기록하지 않기 위함.

    BrowserMatchNoCase "ru-robot" do_not_log is_a_robot
    BrowserMatchNoCase "Slurp/si" do_not_log is_a_robot
    BrowserMatchNoCase "Mercator" do_not_log is_a_robot
    BrowserMatchNoCase "Gulliver" do_not_log is_a_robot
    BrowserMatchNoCase "SyncIT/" do_not_log is_a_robot
    BrowserMatchNoCase "FAST-WebCrawler" do_not_log is_a_robot
    BrowserMatchNoCase "Lycos_Spider" do_not_log is_a_robot
    BrowserMatchNoCase "^ia_archive" do_not_log is_a_robot
    BrowserMatchNoCase "^tv" do_not_log is_a_robot
    BrowserMatchNoCase "Scooter" do_not_log is_a_robot
    BrowserMatchNoCase "ZyBorg/" do_not_log is_a_robot
    BrowserMatchNoCase "KIT-Fireball" do_not_log is_a_robot
    BrowserMatchNoCase "Googlebot/" do_not_log is_a_robot
    BrowserMatchNoCase "DIIbot/" do_not_log is_a_robot
    BrowserMatchNoCase "teoma_agent3" do_not_log is_a_robot
    BrowserMatchNoCase "empas_robot" do_not_log is_a_robot

모두 로봇으로 맞게 설정되었는지 모르겠네요...............T.T

각각의 정규표현식 조건에 맞는 User-Agent 인 경우, do_not_log 환경변수와
is_a_robot 이라는 두개의 환경변수에 설정한 예입니다.
is_a_robot 이라고 또 하나의 환경변수를 지정한 이유는 앞서 얘기했듯이
이 조건게 맞는 User-Agent가 접근할 경우 따로 로그에 기록하기 위함입니다.

이 BrowserMatchNoCase 지시자 대신에 SetEnvIfNoCase User-Agent 로 대신할 수 있는데
첫번째 부분을 다음과 같이 설정할 수 있습니다.(둘다 똑 같은 결과임)

    SetEnvIfNoCase User-Agent "ru-robot" do_not_log is_a_robot


3-4.  종합예제 : 사오정(?) 로그 분석 피하기

앞의 3개의 예제를 모두 적용하면 다음과 같습니다.

목적은 배경에서 설명했듯이 가능한 access_log 파일에

- 방문자 외에 localhost에서 php가 실행하는 로그 기록은 기록하지 않는다.
- 로봇들의 접근 기록은 따로 robot-log 파일에 기록한다.
- 운영자가 주고 접근할 IP 주소는 로그에 기록하지 않는다.
- *.gif, *.jpg, *.png, *.css, *.js, *.java 등과 같은 파일은 로그에 기록하지 않는다.

이 정도의 조건이라면 가능한 어느 정도 수준으로 순수 방문자의 접근 기록만
access_log 파일에 기록할 수 있습니다.

-- httpd.conf(실제로 필자가 운영하는 아파치 설정 내용임) --------------------
##
## 중간 생략
##
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
LogFormat "%h %l %u %t "%r" %>s %b "%{User-Agent}i"" use_robot
##
## 중간 생략
##

## 환경변수 do_not_log에 일치하지 않은 접근만 access_log 파일에 기록함.
##
CustomLog /usr/local/apache/logs/access_log combined env=!do_not_log

## 중간 생략

## 로봇들은 따로 robot_log 파일에 user_robot 포맷에 맞게 기록함
##
CustomLog /usr/local/apache/logs/robot_log use_robot env=is_a_robot

## 중간 생략

## 특정 IP 주소는 로그에 기록하지 않는다.
## 주로 서버 IP 주소와 운영자가 자주 접속하는 IP 주소들
##
SetEnvIf Remote_Addr "^127.0.0.1$" do_not_log
SetEnvIf Remote_Addr "^211.35.159.12[89]$" do_not_log
SetEnvIf Remote_Addr "^211.35.159.1[345][0-9]$" do_not_log

## 중간 생략

## 주로 이미지 파일을 요청했을 경우 로그에 기록하지 않는다.
##
SetEnvIfNoCase Request_URI ".(gif|jpg|png|css|js|java)$" do_not_log

## 중간 생략

## 로봇들의 환경변수 지정
##
BrowserMatchNoCase "ru-robot" do_not_log is_a_robot
BrowserMatchNoCase "Slurp/si" do_not_log is_a_robot
BrowserMatchNoCase "Mercator" do_not_log is_a_robot
BrowserMatchNoCase "Gulliver" do_not_log is_a_robot
BrowserMatchNoCase "SyncIT/" do_not_log is_a_robot
BrowserMatchNoCase "FAST-WebCrawler" do_not_log is_a_robot
BrowserMatchNoCase "Lycos_Spider" do_not_log is_a_robot
BrowserMatchNoCase "^ia_archive" do_not_log is_a_robot
BrowserMatchNoCase "^tv" do_not_log is_a_robot
BrowserMatchNoCase "Scooter" do_not_log is_a_robot
BrowserMatchNoCase "ZyBorg/" do_not_log is_a_robot
BrowserMatchNoCase "KIT-Fireball" do_not_log is_a_robot
BrowserMatchNoCase "Googlebot/" do_not_log is_a_robot
BrowserMatchNoCase "DIIbot/" do_not_log is_a_robot
BrowserMatchNoCase "teoma_agent3" do_not_log is_a_robot
BrowserMatchNoCase "empas_robot" do_not_log is_a_robot

## 이하 생략
##
------------------------------------------------------

END
  -목록보기  
의견(코멘트)을 작성하실 수 없습니다. 이유: 권한이 없는 회원레벨
번호 제목 글쓴이 추천 조회
265  boot.ini으로 멀티부팅하기 웹제로™ 574 10856
264  MySQL RPM으로 설치하자!! 웹제로™ 669 10759
263  리눅스에서 프로그램 설치하기 웹제로™ 719 12252
262  [리눅스명령어/3강] 시스템종료 명령어 사용법 웹제로™ 641 11331
261  [리눅스명령어/2강] useradd(adduser) 명령어 사용법 웹제로™ 629 14322
260  [리눅스명령어/1강] ls 사용 웹제로™ 840 12525
259  지정한시간에 메일보내기 웹제로™ 723 12146
258  프로세스 State의 상태별 설명 웹제로™ 805 9426
257  netstat State의 상태별 설명 웹제로™ 686 8849
256  top 출력내용 분석 웹제로™ 807 9093
255  GNOME이란?(www.gnome.org) 웹제로™ 738 9150
254   GNU란?(http://www.gnu.org) 웹제로™ 710 8852
253  KDE란? 웹제로™ 699 8922
252  커널과 쉘 웹제로™ 830 9258
251  리눅스와 원도우의 장단점 비교 웹제로™ 689 9391
250  리눅스 마스코트, 펭귄 Tux에 관한 이야기 웹제로™ 371 7536
249  리눅스+아파치 서버에서 한글파일 제대로 지원하기1 웹제로™ 393 7867
248  리눅스+아파치 서버에서 한글파일 제대로 지원하기2 웹제로™ 652 9911
 Apache 설정파일 예제 P3P적용의 건 웹제로™ 824 10391
246  리눅스취약점 웹제로™ 785 11021
-목록보기  -다음페이지  
1   2   3   4   5   6   7   8   9   10  .. 14   [다음 10개]
       
/ skin by  

기술보증기금인증  벤처기업 기술혁신형 중소기업 INNOBIZ ISO 9001 인증기업 이호스트데이터센터 기업부설연구소 인정서 정보보호 안전진단 필증 획득
(사)한국인터넷호스팅협회 회원사 한국인터넷진흥원 ICANN 인증 국제도메인등록기관 한국인터넷진흥원공인 도메인등록대행자 한국소프트웨어산업협회
소프트웨어사업자 신고확인서

회사소개 개인정보취급방침 호스팅 이용약관 회원 이용약관 이메일주소 무단수집거부 고객지원 찾아오시는 길

ㆍ본사 : 153-803 서울시 금천구 가산동 371-37 STX V타워 1509호 ㆍIDC 운영센터 : 서울시 금천구 가산동 459-9 LG 데이콤 7층
(주)이호스트데이터센터 사업자등록번호:214-87-61456 부가통신사업신고:서초 제 11006호 통신판매업신고:서초 제 05006호
Copyright(c)2005-2010 ehostIDC Allrights reserved. domain@ehostidc.co.kr

  굿네이버스