apache2: Kayıtlı işleyicilerin bir listesini alın


10

Apache'den tüm işleyicilerin bir listesini almak mümkün mü? SetHandler ile işleyiciler oluşturmak mümkündür.

Olası kullanımlardan biri, belirli bir dosya uzantısı ( addHandler ) için bir işleyici eklemek olacaktır . Tüm olası işleyicileri ve tanımlayıcılarını bilmek, bunları bir dosya uzantısıyla (veya URL işleyicilerinin olası URL'lerin bir listesini oluşturması durumunda) eşleştirme işlemini kolaylaştıracaktır.

İşleyiciler bir tür listede apache çekirdeğinde yönetilmelidir - bu listeyi çıkarmak nasıl mümkün olabilir?

Yanıtlar:


2

Apache, yapılandırılmış işleyicilerin listesini göstermez. Kullanmıyorum apachectl, başka bir şeyle değil.

Yapılandırılmış işleyicilerin bir listesini almak için bulabildiğim en iyi yöntem , Apache yapılandırma klasörünü basitçe Handlertüm yakalamak AddHandlerve SetHandlerbildirimleri yakalamak için grep etmektir .

Debian tabanlı (Ubuntu) ana bilgisayarlar için

$ 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 tabanlı (Fedora, CentOS) ana bilgisayarlar için

$ 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

Bulunan tüm işleyicilerin aslında kayıtlı olmadığını unutmayın! Ara mods-enabled(Debian) ve ile başlayan göz ardı hatları #yalnızca kayıtlı işleyicileri daraltmak için.

Jenny'nin yorumlarda önerdiği gibi, yorum satırları çıktıyı filtreleyerek kaldırılabilirgrep -Pv '^[^ ]*:\s*#' . Debian tabanlı makineler için son komut:

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

Ve Redhat tabanlı makineler için:

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

Yorumlarda kullanıcı gogoud , yorumlanmış işleyicileri çıkarmak için ek bir yol sağlar, böylece yalnızca kayıtlı işleyicileri döndürür:

// 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
Yorum yapılan işleyicilerden kurtulmak için, bazı find ve grep sihirlerini kullanın:find /etc/httpd/ -type f -exec grep -H -v '#' {} \; | grep Handler
Jenny D

@JennyD: Bunun açıklamalardan sonra yorum içeren satırları kaldıracağını düşünüyorum AddHandler cgi-script .cgi # Ben needs CGI.
dotancohen

1
Doğru. Sen bunu yapabileceğini egrepve okuyucuya bir örnek olarak bırakılmıştır uygun bir regexp'in, (ne yazık ki ... Şu anda bazı ücretli iş yapmak zorunda gibi)
Jenny D

@JennyD: Meydan okuma kabul edildi! Yorum satırları için bir grep filtresi ekledim. Güzel düşünce, teşekkürler!
Ocak 15:26 de dotancohen

Neden ani düşüşler? Bu cevap doğrudan soruyu cevaplar ve hatta en yaygın iki Linux varyantı için örnekler içerir. Cevap geliştirilebilseydi, bazı yapıcı eleştirileri takdir ediyorum .
dotancohen

0

Bu istediğiniz gibi değildir, ancak server-infoyapılandırmanızda işleyiciyi etkinleştirirseniz , çıktı size hangi modüllerin işleyicileri olduğunu ve hangilerinin böyle olmadığını söyler:

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

Bu Apache 2.2 ile oldu, bu yüzden belki de sonraki sürümler size daha yararlı çıktılar verecektir.


Teşekkür ederim, ancak bu bilgiyi görmüyorum. Bu sayfa çıktısını gösterir server-info. Ancak, çıktının gerçek sunucudan kopyalanan ve bir Raspberry Pi aracılığıyla size sunulan statik bir sayfa olduğunu unutmayın.
dotancohen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.