Conditional Request Headers

Module: mod_setenv


The setenv module allows influencing the environment external applications are spawned in and the response headers the server sends to the clients.

Automatic Decompression

If you have a lot text-files compressed with gzip on disk and want that the browser is decompressing them on retrival you can use setenv to inject the Content-Encoding header:

  $HTTP["url"] =~ "(README|ChangeLog|\.txt)\.gz$" {
    setenv.add-response-header  = ( "Content-Encoding" => "gzip")
    mimetype.assign = ("" => "text/plain" )


Adds a value to the process environment (aka environment variables) that is passed to the external applications:

    setenv.add-environment = ( 
      "TRAC_ENV" => "lighttpd",
      "RAILS_ENV" => "production" 

Adds a header to the HTTP response sent to the client:

    setenv.add-response-header = (
      "Content-Encoding" => "gzip" 

Adds a header to the HTTP request that was received from the client:

    setenv.add-request-header = (
      "X-Proxy" =>

setenv.set-request-header (since 1.4.46)
setenv.set-response-header (since 1.4.46)
setenv.set-environment (since 1.4.46)
These directives set the given values, rather than appending the given values to the headers or environment. These directives take precedence over the setenv.add-* counterparts. Set a blank value for request or response header to remove the header.

Updated by gstrauss 8 months ago · 14 revisions