Annotation of embedaddon/lighttpd/doc/outdated/configuration.txt, revision 1.1

1.1     ! misho       1: ==================
        !             2: Configuration File
        !             3: ==================
        !             4: 
        !             5: ------------
        !             6: Module: core
        !             7: ------------
        !             8: 
        !             9: :Author: Jan Kneschke
        !            10: :Date: $Date$
        !            11: :Revision: $Revision$
        !            12: 
        !            13: :abstract:
        !            14:   the layout of the configuration file
        !            15: 
        !            16: .. meta::
        !            17:   :keywords: lighttpd, configuration
        !            18: 
        !            19: .. contents:: Table of Contents
        !            20: 
        !            21: Description
        !            22: ===========
        !            23: 
        !            24: Basic Syntax
        !            25: ------------
        !            26: 
        !            27: A BNF like notation: ::
        !            28: 
        !            29:   option   : NAME = VALUE
        !            30:   merge    : NAME += VALUE
        !            31:   NAME     : modulename.key
        !            32:   VALUE    : ( <string> | <integer> | <boolean> | <array> | VALUE [ + VALUE ]*)
        !            33:   <string> : "text"
        !            34:   <integer>: digit*
        !            35:   <boolean>: ( "enable" | "disable" )
        !            36:   <array>  : "(" [ <string> "=>" ] <value> [, [ <string> "=>" ] <value> ]* ")"
        !            37:   INCLUDE  : "include" VALUE
        !            38:   INCLUDE_SHELL : "include_shell" STRING_VALUE
        !            39: 
        !            40: Example
        !            41: -------
        !            42: 
        !            43: ::
        !            44: 
        !            45:   # default document-root
        !            46:   server.document-root = "/var/www/example.org/pages/"
        !            47: 
        !            48:   # TCP port
        !            49:   server.port = 80
        !            50: 
        !            51:   # selecting modules
        !            52:   server.modules = ( "mod_access", "mod_rewrite" )
        !            53: 
        !            54:   # variables, computed when config is read.
        !            55:   var.mymodule = "foo"
        !            56:   server.modules += ( "mod_" + var.mymodule )
        !            57:   # var.PID is initialised to the pid of lighttpd before config is parsed
        !            58: 
        !            59:   # include, relative to dirname of main config file
        !            60:   include "mime.types.conf"
        !            61: 
        !            62:   # read configuration from output of a command
        !            63:   include_shell "/usr/local/bin/confmimetype /etc/mime.types"
        !            64: 
        !            65: 
        !            66: Conditional Configuration
        !            67: =========================
        !            68: 
        !            69: Most options can be configured conditionally by using the following syntax
        !            70: (including nesting).
        !            71: 
        !            72: ::
        !            73: 
        !            74:   <field> <operator> <value> {
        !            75:     ...
        !            76:     <field> <operator> <value> {
        !            77:       ... nesting: match only when parent match
        !            78:     }
        !            79:   }
        !            80:   else <field> <operator> <value> {
        !            81:     ... the "else if" block
        !            82:   }
        !            83: 
        !            84: where <field> is one of one of the following:
        !            85: 
        !            86: $HTTP["cookie"]
        !            87:   match on cookie
        !            88: $HTTP["scheme"]
        !            89:   match on scheme
        !            90: $HTTP["host"]
        !            91:   match on host
        !            92: $HTTP["useragent"]
        !            93: $HTTP["user-agent"]
        !            94:   match on useragent
        !            95: $HTTP["referer"]
        !            96:   match on referer
        !            97: $HTTP["method"]
        !            98:   math on the http method
        !            99: $HTTP["url"]
        !           100:   match on url
        !           101: $HTTP["query-string"]
        !           102:   match on the (not decoded) query-string
        !           103: $HTTP["remoteip"]
        !           104: $HTTP["remote-ip"]
        !           105:   match on the remote IP or a remote Network
        !           106: $HTTP["language"]
        !           107:   match on the Accept-Language header
        !           108: $SERVER["socket"]
        !           109:   match on socket. Value must be on the format "ip:port" where ip is an IP
        !           110:   address and port a port number. Only equal match (==) is supported.
        !           111:   It also binds the daemon to this socket. Use this if you want to do IP/port-
        !           112:   based virtual hosts.
        !           113: 
        !           114: <operator> is one of:
        !           115: 
        !           116: ==
        !           117:   string equal match
        !           118: !=
        !           119:   string not equal match
        !           120: =~
        !           121:   perl style regular expression match
        !           122: !~
        !           123:   perl style regular expression not match
        !           124: 
        !           125: and <value> is either a quoted ("") literal string or regular expression.
        !           126: 
        !           127: 
        !           128: Example
        !           129: -------
        !           130: 
        !           131: ::
        !           132: 
        !           133:   # disable directory-listings for /download/*
        !           134:   dir-listing.activate = "enable"
        !           135:   $HTTP["url"] =~ "^/download/" {
        !           136:     dir-listing.activate = "disable"
        !           137:   }
        !           138: 
        !           139:   # handish virtual hosting
        !           140:   # map all domains of a top-level-domain to a single document-root
        !           141:   $HTTP["host"] =~ "(^|\.)example\.org$" {
        !           142:     server.document-root = "/var/www/htdocs/example.org/pages/"
        !           143:   }
        !           144: 
        !           145:   # multiple sockets
        !           146:   $SERVER["socket"] == "127.0.0.1:81" {
        !           147:     server.document-root = "..."
        !           148:   }
        !           149: 
        !           150:   $SERVER["socket"] == "127.0.0.1:443" {
        !           151:     ssl.pemfile = "/var/www/certs/localhost.pem"
        !           152:     ssl.engine = "enable"
        !           153: 
        !           154:     server.document-root = "/var/www/htdocs/secure.example.org/pages/"
        !           155:   }
        !           156: 
        !           157:   # deny access for all googlebot
        !           158:   $HTTP["useragent"] =~ "Google" {
        !           159:     url.access-deny = ( "" )
        !           160:   }
        !           161: 
        !           162:   # deny access for all image stealers
        !           163:   $HTTP["referer"] !~ "^($|http://www\.example\.org)" {
        !           164:     url.access-deny = ( ".jpg", ".jpeg", ".png" )
        !           165:   }
        !           166: 
        !           167:   # deny the access to www.example.org to all user which
        !           168:   # are not in the 10.0.0.0/8 network
        !           169:   $HTTP["host"] == "www.example.org" {
        !           170:     $HTTP["remoteip"] != "10.0.0.0/8" {
        !           171:      url.access-deny = ( "" )
        !           172:     }
        !           173:   }
        !           174: 
        !           175: Using variables
        !           176: ===============
        !           177: 
        !           178: You can set your own variables in the configuration to simplify your config.
        !           179: ::
        !           180: 
        !           181:   var.basedir = "/home/www/servers/"
        !           182:   $HTTP["host"] == "www.example.org" {
        !           183:      server.name = "www.example.org"
        !           184:      include "incl-base.conf"
        !           185:   }
        !           186: 
        !           187:   in incl-base.conf:
        !           188:   server.document-root = basedir + server.name + "/pages/"
        !           189:   accesslog.filename   = basedir + server.name + "/logs/access.log"
        !           190: 
        !           191: You can also use environement variables or the default variables var.PID and
        !           192: var.CWD: ::
        !           193: 
        !           194:   var.basedir = env.LIGHTTPDBASE
        !           195: 
        !           196:   $HTTP["host"] == "www.example.org" {
        !           197:      server.name = "www.example.org"
        !           198:      include "incl-base.conf"
        !           199:      include "incl-fastcgi.conf"
        !           200:   }
        !           201: 
        !           202:   in incl-fastcgi.conf:
        !           203:   fastcgi.server = ( ... => ((
        !           204:      "socket" => basedir + server.name + "/tmp/fastcgi-" + PID + ".sock"
        !           205:   )) )
        !           206: 
        !           207: Or like the lighttpd script for rails does:
        !           208: 
        !           209:   var.basedir = var.CWD
        !           210: 
        !           211:   server.document-root = basedir + "/public/"
        !           212: 
        !           213: Global context
        !           214: ==============
        !           215: 
        !           216: ::
        !           217: 
        !           218:   global {
        !           219:     ...
        !           220:   }
        !           221: 
        !           222: You don't need it in the main configuration file. But you might have
        !           223: difficulty setting server wide configuration inside a included-file from
        !           224: conditionals.
        !           225: 
        !           226: Example
        !           227: -------
        !           228: 
        !           229: ::
        !           230: 
        !           231:   in lighttpd.conf:
        !           232:   server.modules = ()
        !           233:   $HTTP["host"] == "www.example.org" {
        !           234:     include "incl-php.conf"
        !           235:   }
        !           236: 
        !           237:   in incl-php.conf:
        !           238:   global {
        !           239:     server.modules += ("mod_fastcgi")
        !           240:     static-file.exclude-extensions += (".php")
        !           241:   }
        !           242:   fastcgi.server = "..."
        !           243: 
        !           244: Options
        !           245: =======
        !           246: 
        !           247: server module
        !           248: -------------
        !           249: 
        !           250: main sections
        !           251: `````````````
        !           252: 
        !           253: server.document-root
        !           254:   document-root of the webserver
        !           255: 
        !           256:   This variable has the specified as it will be used for all requests
        !           257:   without a Host: header and for all with a know hostname which you
        !           258:   might have specified with one of the above conditionals.
        !           259: 
        !           260:   Default: no default, required
        !           261: 
        !           262: server.bind
        !           263:   IP address, hostname or absolute path to the unix-domain socket the server
        !           264:   listen on.
        !           265: 
        !           266:   Default: bind to all interfaces
        !           267: 
        !           268:   Example: ::
        !           269: 
        !           270:     server.bind = "127.0.0.1"
        !           271:     server.bind = "www.example.org"
        !           272:     server.bind = "/tmp/lighttpd.socket"
        !           273: 
        !           274: server.port
        !           275:   tcp-port to bind the server to
        !           276: 
        !           277: .. note:: port belows 1024 require root-permissions
        !           278: 
        !           279:   Default: 80 (443 if ssl is enabled)
        !           280: 
        !           281: server.use-ipv6
        !           282:   bind to the IPv6 socket
        !           283: 
        !           284: server.defer-accept
        !           285:   set TCP_DEFER_ACCEPT to the specified value on the socket if the value is > 0
        !           286:   and TCP_DEFER_ACCEPT is available on the platform (linux2.4+)
        !           287: 
        !           288:   default: 0
        !           289: 
        !           290: server.tag
        !           291:   set the string returned by the Server: response header
        !           292: 
        !           293:   Default: lighttpd <current-version>
        !           294: 
        !           295: server.errorlog
        !           296:   pathname of the error-log
        !           297: 
        !           298:   Default: either STDERR or ``server.errorlog-use-syslog``
        !           299: 
        !           300: server.errorlog-use-syslog
        !           301:   send errorlog to syslog
        !           302: 
        !           303:   Default: disabled
        !           304: 
        !           305: server.chroot
        !           306:   root-directory of the server
        !           307: 
        !           308:   NOTE: requires root-permissions
        !           309: 
        !           310: server.username
        !           311:   username used to run the server
        !           312: 
        !           313:   NOTE: requires root-permissions
        !           314: 
        !           315: server.groupname
        !           316:   groupname used to run the server
        !           317: 
        !           318:   NOTE: requires root-permissions
        !           319: 
        !           320: server.follow-symlink
        !           321:   allow to follow-symlinks
        !           322: 
        !           323:   Default: enabled
        !           324: 
        !           325: index-file.names
        !           326:   list of files to search for if a directory is requested
        !           327:   e.g.: ::
        !           328: 
        !           329:     index-file.names          = ( "index.php", "index.html",
        !           330:                                   "index.htm", "default.htm" )
        !           331: 
        !           332:   if a name starts with slash this file will be used a index generator
        !           333:   for all directories.
        !           334: 
        !           335: server.modules
        !           336:   modules to load
        !           337: 
        !           338: .. note:: the order of the modules is important.
        !           339: 
        !           340:   The modules are executed in the order as they are specified. Loading
        !           341:   mod_auth AFTER mod_fastcgi might disable authentication for fastcgi
        !           342:   backends (if check-local is disabled).
        !           343: 
        !           344:   As auth should be done first, move it before all executing modules (like
        !           345:   proxy, fastcgi, scgi and cgi).
        !           346: 
        !           347:   rewrites, redirects and access should be first, followed by auth and
        !           348:   the docroot plugins.
        !           349: 
        !           350:   Afterwards the external handlers like fastcgi, cgi, scgi and proxy and
        !           351:   at the bottom the post-processing plugins like mod_accesslog.
        !           352: 
        !           353:   e.g.: ::
        !           354: 
        !           355:     server.modules          = ( "mod_rewrite",
        !           356:                                 "mod_redirect",
        !           357:                                "mod_alias",
        !           358:                                "mod_access",
        !           359:                                "mod_auth",
        !           360:                                 "mod_status",
        !           361:                                "mod_simple_vhost",
        !           362:                                "mod_evhost",
        !           363:                                "mod_userdir",
        !           364:                                "mod_secdownload",
        !           365:                                "mod_fastcgi",
        !           366:                                "mod_proxy",
        !           367:                                "mod_cgi",
        !           368:                                 "mod_ssi",
        !           369:                                "mod_compress",
        !           370:                                 "mod_usertrack",
        !           371:                                "mod_expire",
        !           372:                                "mod_rrdtool",
        !           373:                                "mod_accesslog" )
        !           374: 
        !           375:   Starting with lighttpd 1.4.0 three default modules are loaded automaticly:
        !           376: 
        !           377:   - mod_indexfile
        !           378:   - mod_dirlisting
        !           379:   - mod_staticfile
        !           380: 
        !           381: server.event-handler
        !           382:   set the event handler
        !           383: 
        !           384:   Default: "poll"
        !           385: 
        !           386: server.pid-file
        !           387:   set the name of the .pid-file where the PID of the server should be placed.
        !           388:   This option is used in combination with a start-script and the daemon mode
        !           389: 
        !           390:   Default: not set
        !           391: 
        !           392: server.max-request-size
        !           393:   maximum size in kbytes of the request (header + body). Only applies to POST
        !           394:   requests.
        !           395: 
        !           396:   Default: 2097152 (2GB)
        !           397: 
        !           398: server.max-worker
        !           399:   number of worker processes to spawn. This is usually only needed on servers
        !           400:   which are fairly loaded and the network handler calls delay often (e.g. new
        !           401:   requests are not handled instantaneously).
        !           402: 
        !           403:   Default: 0
        !           404: 
        !           405: server.name
        !           406:   name of the server/virtual server
        !           407: 
        !           408:   Default: hostname
        !           409: 
        !           410: server.max-keep-alive-requests
        !           411:   maximum number of request within a keep-alive session before the server
        !           412:   terminates the connection
        !           413: 
        !           414:   Default: 128
        !           415: 
        !           416: server.max-keep-alive-idle
        !           417:   maximum number of seconds until a idling keep-alive connection is droped
        !           418: 
        !           419:   Default: 30
        !           420: 
        !           421: server.max-read-idle
        !           422:   maximum number of seconds until a waiting, non keep-alive read times out
        !           423:   and closes the connection
        !           424: 
        !           425:   Default: 60
        !           426: 
        !           427: server.max-write-idle
        !           428:   maximum number of seconds until a waiting write call times out and closes
        !           429:   the connection
        !           430: 
        !           431:   Default: 360
        !           432: 
        !           433: server.error-handler-404
        !           434:   uri to call if the requested file results in a 404
        !           435: 
        !           436:   Default: not set
        !           437: 
        !           438:   Example: ::
        !           439: 
        !           440:     server.error-handler-404 = "/error-404.php"
        !           441: 
        !           442: server.protocol-http11
        !           443:   defines if HTTP/1.1 is allowed or not.
        !           444: 
        !           445:   Default: enabled
        !           446: 
        !           447: server.range-requests
        !           448:   defines if range requests are allowed or not.
        !           449: 
        !           450:   Default: enabled
        !           451: 
        !           452: 
        !           453: SSL engine
        !           454: ``````````
        !           455: 
        !           456: ssl.pemfile
        !           457:   path to the PEM file for SSL support
        !           458: 
        !           459: debugging
        !           460: `````````
        !           461: 
        !           462: debug.dump-unknown-headers
        !           463:   enables listing of internally unhandled HTTP-headers
        !           464: 
        !           465:   e.g. ::
        !           466: 
        !           467:     debug.dump-unknown-headers = "enable"
        !           468: 
        !           469: mimetypes
        !           470: `````````
        !           471: 
        !           472: mimetype.assign
        !           473:   list of known mimetype mappings
        !           474:   NOTE: if no mapping is given "application/octet-stream" is used
        !           475: 
        !           476:   e.g.: ::
        !           477: 
        !           478:     mimetype.assign   = ( ".png"  => "image/png",
        !           479:                           ".jpg"  => "image/jpeg",
        !           480:                           ".jpeg" => "image/jpeg",
        !           481:                          ".html" => "text/html",
        !           482:                          ".txt"  => "text/plain" )
        !           483: 
        !           484:   The list is compared top down and the first match is taken. This is
        !           485:   important if you have matches like: ::
        !           486: 
        !           487:                           ".tar.gz" => "application/x-tgz",
        !           488:                          ".gz" => "application/x-gzip",
        !           489: 
        !           490:   If you want to set another default mimetype use: ::
        !           491: 
        !           492:                           ...,
        !           493:                           "" => "text/plain" )
        !           494: 
        !           495:   as the last entry in the list.
        !           496: 
        !           497: mimetype.use-xattr
        !           498:   If available, use the XFS-style extended attribute interface to
        !           499:   retrieve the "Content-Type" attribute on each file, and use that as the
        !           500:   mime type. If it's not defined or not available, fall back to the
        !           501:   mimetype.assign assignment.
        !           502: 
        !           503:   e.g.: ::
        !           504: 
        !           505:     mimetype.use-xattr = "enable"
        !           506: 
        !           507:     on shell use:
        !           508: 
        !           509:     $ attr -s Content-Type -V image/svg svgfile.svg
        !           510: 
        !           511:     or
        !           512: 
        !           513:     $ attr -s Content-Type -V text/html indexfile
        !           514: 
        !           515: 
        !           516: debugging
        !           517: `````````
        !           518: 
        !           519: debug.log-request-header
        !           520:   default: disabled
        !           521: 
        !           522: debug.log-response-header
        !           523:   default: disabled
        !           524: 
        !           525: debug.log-file-not-found
        !           526:   default: disabled
        !           527: 
        !           528: debug.log-request-handling
        !           529:   default: disabled
        !           530: 
        !           531: debug.log-ssl-noise
        !           532:   default: disabled

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>