apache2 : 등록 된 핸들러 목록 가져 오기


10

아파치에서 모든 핸들러 목록을 얻는 것이 가능합니까? 로 setHandler 이 핸들러를 만들 수 있습니다.

한 가지 가능한 사용법은 특정 파일 확장자 ( addHandler ) 에 대한 핸들러를 추가하는 것 입니다. 가능한 모든 핸들러와 해당 식별자를 알면 파일 확장자와 일치하는 프로세스가 쉬워집니다 (또는 URL 핸들러가 가능한 URL 목록을 작성하는 경우).

핸들러는 일종의 목록으로 아파치 코어에서 관리되어야합니다.이 목록을 어떻게 가져올 수 있습니까?

답변:


2

Apache는 구성된 핸들러 목록을 공개하지 않습니다. 를 사용 apachectl하지 않고 다른 것을 사용 하지 마십시오.

구성된 핸들러 목록얻는 가장 좋은 방법 은 Apache 구성 폴더를 grep하여 Handler모든 선언 AddHandlerSetHandler선언 을 잡는 것 입니다.

데비안 기반 (우분투) 호스트

$ grep -ir "Handler" /etc/apache2/*
mods-enabled/php5.conf: SetHandler application/x-httpd-php
mods-enabled/php5.conf: SetHandler application/x-httpd-php-source
apache2.conf:           SetHandler server-status
mods-available/info.conf:    SetHandler server-info
mods-available/ldap.conf:    SetHandler ldap-status
mods-available/status.conf:  SetHandler server-status
mods-available/php5.conf:    SetHandler application/x-httpd-php
mods-available/php5.conf:    SetHandler application/x-httpd-php-source
sites-available/default:     AddHandler cgi-script .cgi
sites-enabled/000-default:   AddHandler cgi-script .cgi

Redhat 기반 (Fedora, CentOS) 호스트

$ grep -ir "Handler" /etc/httpd/*
conf.d/php.conf:  AddHandler php5-script .php
conf/httpd.conf:  #AddHandler cgi-script .cgi
conf/httpd.conf:  #AddHandler send-as-is asis
conf/httpd.conf:  AddHandler type-map var
conf/httpd.conf:  #ErrorDocument 404 "/cgi-bin/missing_handler.pl"
conf/httpd.conf:     AddHandler type-map var
conf/httpd.conf:#    SetHandler server-status
conf/httpd.conf:#    SetHandler server-info
conf.d/fcgid.conf:   AddHandler fcgid-script fcg fcgi fpl
conf.d/perl.conf:#   SetHandler perl-script
conf.d/perl.conf:#   SetHandler perl-script

발견 된 모든 핸들러가 실제로 등록 된 것은 아닙니다. mods-enabled(Debian)을 검색 #하고 등록 된 핸들러 만 좁히는 것으로 시작하는 행을 무시 하십시오.

주석에서 Jenny가 제안한 것처럼 주석이있는 행은을 사용 하여 출력을 필터링하여 제거 할 수 있습니다grep -Pv '^[^ ]*:\s*#' . 데비안 기반 머신의 최종 명령은 다음과 같습니다.

$ grep -ir "Handler" /etc/apache2/* | grep -Pv '^[^ ]*:\s*#'

그리고 Redhat 기반 머신의 경우 :

$ grep -ir "Handler" /etc/httpd/* | grep -Pv '^[^ ]*:\s*#'

주석에서 사용자 gogoud 는 주석 처리기를 제거하는 추가 방법을 제공하므로 등록 된 처리기 만 반환합니다.

// Debian or Ubuntu
$ grep -R "Handler" /etc/apache2/*enabled* | sed 's/#.*//;/^[^:]*:\s*$/d'

// Redhat, CentoOS, Fedora
$ grep -R "Handler" /etc/httpd/*enabled* | sed 's/#.*//;/^[^:]*:\s*$/d'

2
주석 처리 된 핸들러를 제거하려면 find 및 grep 매직을 사용하십시오.find /etc/httpd/ -type f -exec grep -H -v '#' {} \; | grep Handler
Jenny D

@JennyD : 나는 선언 후 주석이있는 줄을 제거한다고 생각합니다 AddHandler cgi-script .cgi # Ben needs CGI.
dotancohen

1
진실. 당신은 그것을 할 수 egrep있고 적절한 정규 표현식을 읽을 수 있습니다. 이것은 독자를위한 연습으로 남습니다 (불행히도 지금 유급 노동을해야합니다 ...)
Jenny D

@JennyD : 도전은 받아 들였다! 주석 처리 된 줄에 grep 필터를 추가했습니다. 좋은 생각, 고마워!
dotancohen

왜 갑작스런 다운 보트인가? 이 답변은 질문에 직접 대답하고 가장 일반적인 두 Linux 변형에 대한 예제도 포함합니다. 대답이 개선 될 수 있다면 건설적인 비판에 감사드립니다 .
dotancohen

0

이것은 원하는 것이 아니지만 server-info구성 에서 핸들러 를 활성화 하면 출력에 다음과 같이 처리기가있는 모듈과 그렇지 않은 모듈이 표시됩니다.

Module Name: mod_negotiation.c
Content handlers: yes
....
Module Name: mod_mime.c
Content handlers: none
....

이것은 Apache 2.2와 함께 사용되었으므로 이후 버전에서는 더 유용한 출력을 얻을 수 있습니다.


고맙지 만 그 정보가 보이지 않습니다. 이 페이지 는의 출력을 보여줍니다 server-info. 그러나 출력은 실제 서버에서 복사되어 Raspberry Pi를 통해 제공되는 정적 페이지입니다.
dotancohen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.