Konfiguracja serwera Apache względem .htaccess, a jego wydajność
Napisał: Patryk Krawaczyński
18/03/2012 w Administracja 1 komentarz. (artykuł nr 340, ilość słów: 313)
W
iększość współdzielonych konfiguracji hostingowych zezwala na używanie plików .htaccess w określonych ścieżkach, gdzie przetrzymywane są strony klientów. Tyczy się to również konfiguracji przewidzianych dla dedykowanych projektów. Jak wynika z obserwacji Dawida Golunskiego przeniesienie konfiguracji z plików .htaccess
(i tym samym ominięcia konieczności ich używania) do plików konfiguracyjnych hostów wirtualnych może przynieść zwiększenie wydajności serwera WWW do około 6.6% (w zależności od środowiska testowego i produkcyjnego wartość ta może być mniejsza lub większa).
Dodatkowe testy przeprowadził Mark Sutton, w których została zawarta zależność – ilość podkatalogów z włączonym i wyłączonym plikiem .htaccess, a ilość żądań na sekundę i czas odpowiedzi serwera. Jak się okazuje konfiguracja z wyłączoną obsługą plików .htaccess
dla katalogów, z których była pobierana treść przez serwer Apache dała mierzalną różnicę w wydajności serwera. W dodatku im drzewo katalogów było bardziej rozbudowane – tym wydajność była bardziej zauważalna. Dlatego rekursywne włączenie obsługi plików .htaccess
od poziomu głównego katalogu w “dół” potrafi poważnie wpłynąć na wydajność serwera szczególnie, jeśli katalogi nie są umieszczone na lokalnym dysku tylko udostępnione przez sieciowy system plików.
Najlepszym wyjściem z tej sytuacji jest ustawienie AllowOverride
na None
dla DocumentRoot
i zawarcie wszystkich reguł z plików .htaccess
(najczęściej są to reguły z modułu mod_rewrite) w konfiguracji VirtualHost
. Niestety w przypadku hostingu współdzielonego, gdzie żaden klient nie ma dostępu do konfiguracji swojej strony, pliki .htaccess
są nieuniknione. W tym przypadku możemy włączyć obsługę plików .htaccess
tylko dla głównych katalogów WWW naszych klientów i ją dezaktywować dla wszystkich podkatalogów. Na przykład, jeśli struktura naszego drzewa stron WWW ma postać: /home/klient/www
możemy to wykonać konfiguracją:
<Directory /home/*/www> AllowOverride All </Directory> <Directory /home/*/www/*> AllowOverride None </Directory>
Więcej informacji: Apache Performance Tuning
To samo tyczy się używania bezpieczniejszego wariantu
FollowSymLinks
, czyliSymLinksIfOwnerMatch
.