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>