Stripped and Tweaked httpd.conf

From Devpit
Jump to: navigation, search

Apache's default httpd.conf is ironically difficult to read because there are so many comments. Also, there are some evil defaults, like fancy indexing's NameWidth and lacking the vhost name in CustomLog. The following config file is very generalized with nice tweaks and nearly all of the per-host config at the end.

##
## httpd.conf -- Apache HTTP server configuration file
##
# To disable SSL, mod_perl or mod_php, just comment out the related LoadModule
# and AddModule directives.  The other knobs are all in <IfModule> blocks.


### Section 1: Global Environment
ServerType standalone
ServerRoot "/usr/local"
PidFile /var/run/httpd.pid
ScoreBoardFile /var/run/httpd.scoreboard
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 1
MaxSpareServers 5
StartServers 1
MaxClients 10
MaxRequestsPerChild 100

# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Please read the file http://httpd.apache.org/docs/dso.html for more
# details about the DSO mechanism and run `httpd -l' for the list of already
# built-in (statically linked and thus always available) modules in your httpd
# binary.
#
# Note: The order in which modules are loaded is important.  Don't change
# the order below without expert advice.
LoadModule mmap_static_module libexec/apache/mod_mmap_static.so
LoadModule vhost_alias_module libexec/apache/mod_vhost_alias.so
LoadModule env_module         libexec/apache/mod_env.so
LoadModule config_log_module  libexec/apache/mod_log_config.so
LoadModule mime_magic_module  libexec/apache/mod_mime_magic.so
LoadModule mime_module        libexec/apache/mod_mime.so
LoadModule negotiation_module libexec/apache/mod_negotiation.so
LoadModule status_module      libexec/apache/mod_status.so
LoadModule info_module        libexec/apache/mod_info.so
LoadModule includes_module    libexec/apache/mod_include.so
LoadModule autoindex_module   libexec/apache/mod_autoindex.so
LoadModule dir_module         libexec/apache/mod_dir.so
LoadModule cgi_module         libexec/apache/mod_cgi.so
LoadModule asis_module        libexec/apache/mod_asis.so
LoadModule imap_module        libexec/apache/mod_imap.so
LoadModule action_module      libexec/apache/mod_actions.so
LoadModule speling_module     libexec/apache/mod_speling.so
#LoadModule userdir_module     libexec/apache/mod_userdir.so
LoadModule alias_module       libexec/apache/mod_alias.so
LoadModule rewrite_module     libexec/apache/mod_rewrite.so
LoadModule access_module      libexec/apache/mod_access.so
LoadModule auth_module        libexec/apache/mod_auth.so
LoadModule anon_auth_module   libexec/apache/mod_auth_anon.so
LoadModule db_auth_module     libexec/apache/mod_auth_db.so
LoadModule digest_module      libexec/apache/mod_digest.so
LoadModule proxy_module       libexec/apache/libproxy.so
LoadModule cern_meta_module   libexec/apache/mod_cern_meta.so
LoadModule expires_module     libexec/apache/mod_expires.so
LoadModule headers_module     libexec/apache/mod_headers.so
LoadModule usertrack_module   libexec/apache/mod_usertrack.so
LoadModule log_forensic_module libexec/apache/mod_log_forensic.so
LoadModule unique_id_module   libexec/apache/mod_unique_id.so
LoadModule setenvif_module    libexec/apache/mod_setenvif.so
#LoadModule ssl_module         libexec/apache/libssl.so
# local additions
#LoadModule perl_module        libexec/apache/libperl.so
#LoadModule php3_module        libexec/apache/libphp3.so
#LoadModule php4_module        libexec/apache/libphp4.so

# Reconstruction of the complete module list from all available modules
# (static and shared ones) to achieve correct module execution order.
# [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE UPDATE THIS, TOO]
ClearModuleList
AddModule mod_mmap_static.c
AddModule mod_vhost_alias.c
AddModule mod_env.c
AddModule mod_log_config.c
AddModule mod_mime_magic.c
AddModule mod_mime.c
AddModule mod_negotiation.c
AddModule mod_status.c
AddModule mod_info.c
AddModule mod_include.c
AddModule mod_autoindex.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_asis.c
AddModule mod_imap.c
AddModule mod_actions.c
AddModule mod_speling.c
#AddModule mod_userdir.c
AddModule mod_alias.c
AddModule mod_rewrite.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_auth_anon.c
AddModule mod_auth_db.c
AddModule mod_digest.c
AddModule mod_proxy.c
AddModule mod_cern_meta.c
AddModule mod_expires.c
AddModule mod_headers.c
AddModule mod_usertrack.c
AddModule mod_log_forensic.c
AddModule mod_unique_id.c
AddModule mod_so.c
AddModule mod_setenvif.c
#AddModule mod_ssl.c
# local additions
#AddModule mod_perl.c
#AddModule mod_php3.c
#AddModule mod_php4.c


### Section 2: 'Main' server configuration
# All of these directives may appear inside <VirtualHost> containers.
Listen *:80
NameVirtualHost *:80
<IfModule mod_ssl.c>
        Listen *:443
        NameVirtualHost *:443
</IfModule>
User www
Group www

<Directory />
        Options All MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
</Directory>

<IfModule mod_userdir.c>
        UserDir www
</IfModule>

<IfModule mod_dir.c>
        DirectoryIndex index.html index.htm index.txt index.shtml index.cgi index.pl index.epl index.php
</IfModule>

AccessFileName .htaccess
<Files ~ "^\.ht">
        Order allow,deny
        Deny from all
        Satisfy All
</Files>

UseCanonicalName Off

<IfModule mod_mime.c>
        TypesConfig /usr/local/etc/apache/mime.types
</IfModule>
DefaultType text/plain
<IfModule mod_mime_magic.c>
        MIMEMagicFile /usr/local/etc/apache/magic
</IfModule>

# Logging
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
HostnameLookups Off
ErrorLog /var/log/httpd-errors
LogLevel warn
LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /var/log/httpd-access combined

ServerSignature On

<IfModule mod_alias.c>
        Alias /icons/ "/usr/local/www/icons/"
</IfModule>

<IfModule mod_autoindex.c>
        IndexOptions FancyIndexing
        IndexOptions NameWidth=*

        AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

        AddIconByType (TXT,/icons/text.gif) text/*
        AddIconByType (IMG,/icons/image2.gif) image/*
        AddIconByType (SND,/icons/sound2.gif) audio/*
        AddIconByType (VID,/icons/movie.gif) video/*

        AddIcon /icons/binary.gif .bin .exe
        AddIcon /icons/binhex.gif .hqx
        AddIcon /icons/tar.gif .tar
        AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
        AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
        AddIcon /icons/a.gif .ps .ai .eps
        AddIcon /icons/layout.gif .html .shtml .htm .pdf
        AddIcon /icons/text.gif .txt
        AddIcon /icons/c.gif .c
        AddIcon /icons/p.gif .pl .py
        AddIcon /icons/f.gif .for
        AddIcon /icons/dvi.gif .dvi
        AddIcon /icons/uuencoded.gif .uu
        AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
        AddIcon /icons/tex.gif .tex
        AddIcon /icons/bomb.gif core

        AddIcon /icons/back.gif ..
        AddIcon /icons/hand.right.gif README
        AddIcon /icons/folder.gif ^^DIRECTORY^^
        AddIcon /icons/blank.gif ^^BLANKICON^^

        DefaultIcon /icons/unknown.gif

        ReadmeName README.html
        HeaderName HEADER.html

        IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
</IfModule>

<IfModule mod_mime.c>
        AddLanguage da .dk
        AddLanguage nl .nl
        AddLanguage en .en
        AddLanguage et .ee
        AddLanguage fr .fr
        AddLanguage de .de
        AddLanguage el .el
        AddLanguage he .he
        AddCharset ISO-8859-8 .iso8859-8
        AddLanguage it .it
        AddLanguage ja .ja
        AddCharset ISO-2022-JP .jis
        AddLanguage kr .kr
        AddCharset ISO-2022-KR .iso-kr
        AddLanguage nn .nn
        AddLanguage no .no
        AddLanguage pl .po
        AddCharset ISO-8859-2 .iso-pl
        AddLanguage pt .pt
        AddLanguage pt-br .pt-br
        AddLanguage ltz .lu
        AddLanguage ca .ca
        AddLanguage es .es
        AddLanguage sv .sv
        AddLanguage cs .cz .cs
        AddLanguage ru .ru
        AddLanguage zh-TW .zh-tw
        AddCharset Big5 .Big5 .big5
        AddCharset WINDOWS-1251 .cp-1251
        AddCharset CP866 .cp866
        AddCharset ISO-8859-5 .iso-ru
        AddCharset KOI8-R .koi8-r
        AddCharset UCS-2 .ucs2
        AddCharset UCS-4 .ucs4
        AddCharset UTF-8 .utf8

        <IfModule mod_negotiation.c>
                LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
        </IfModule>

        AddType application/x-tar .tgz

        AddEncoding x-compress .Z
        AddEncoding x-gzip .gz .tgz
</IfModule>

<IfModule mod_setenvif.c>
        BrowserMatch "Mozilla/2" nokeepalive
        BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
        BrowserMatch "RealPlayer 4\.0" force-response-1.0
        BrowserMatch "Java/1\.0" force-response-1.0
        BrowserMatch "JDK/1\.0" force-response-1.0
</IfModule>

################################################################################
## Local types & handlers (local modules added above)

AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl

AddHandler cgi-script .cgi

AddHandler server-parsed .shtml
AddType text/html .shtml

AddHandler send-as-is asis

AddHandler imap-file map

AddHandler type-map var

<IfModule mod_perl.c>
        <Files *.pl>
                SetHandler perl-script
                PerlHandler Apache::Registry
                PerlSendHeader On
                Options +ExecCGI
        </Files>

        #PerlRequire /usr/local/etc/apache/startup.pl
        PerlTaintCheck On
        PerlWarn On
        PerlFreshRestart On
</IfModule>

<IfModule mod_mime.c>
        <IfModule mod_php3.c>
                AddType application/x-httpd-php3 .phtml .php3
                AddType application/x-httpd-php3-source .phps .phps
        </IfModule>
        <IfModule mod_php4.c>
                AddType application/x-httpd-php .php
                AddType application/x-httpd-php-source .phps
        </IfModule>
</IfModule>


### Section 3: Virtual Hosts
################################################################################
## Virtual Hosts

<VirtualHost *:80>
        ServerName _default_
        DocumentRoot /http
        ServerAdmin bilbo@hobbiton.org
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName _default_
        DocumentRoot /http
        ServerAdmin bilbo@hobbiton.org
        SSLEngine On
        SSLCertificateFile etc/apache/certs/any.crt
        SSLCertificateKeyFile etc/apache/certs/any.key
</VirtualHost>
</IfModule>

<VirtualHost *:80>
        ServerName elrond.hobbiton.org
        DocumentRoot /http/elrond.hobbiton.org
        ServerAdmin bilbo@hobbiton.org
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName elrond.hobbiton.org
        DocumentRoot /http/elrond.hobbiton.org
        ServerAdmin bilbo@hobbiton.org
        SSLEngine On
        SSLCertificateFile etc/apache/certs/any.crt
        SSLCertificateKeyFile etc/apache/certs/any.key
</VirtualHost>
</IfModule>
<VirtualHost *:80>
        ServerName www.elrond.hobbiton.org
        Redirect / http://elrond.hobbiton.org/
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName www.elrond.hobbiton.org
        Redirect / https://elrond.hobbiton.org/
        SSLEngine On
        SSLCertificateFile etc/apache/certs/any.crt
        SSLCertificateKeyFile etc/apache/certs/any.key
</VirtualHost>
</IfModule>