<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.nginx.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.nginx.org/api.php?action=feedcontributions&amp;user=Admin&amp;feedformat=atom</id>
		<title>Nginx Community - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.nginx.org/api.php?action=feedcontributions&amp;user=Admin&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/Special:Contributions/Admin"/>
		<updated>2012-05-16T22:47:33Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.18.0</generator>

	<entry>
		<id>http://wiki.nginx.org/HttpRealipModule</id>
		<title>HttpRealipModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpRealipModule"/>
				<updated>2012-05-15T15:44:25Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* set_real_ip_from */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
This module allows to change the client's IP address to value from request header (e. g. &amp;lt;code&amp;gt;X-Real-IP&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;X-Forwarded-For&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
It is useful if nginx works behind some proxy of L7 load balancer, and the request comes from a local IP, but proxy add request header with client's IP. &lt;br /&gt;
&lt;br /&gt;
This module isn't built by default, enable it with the configure option &lt;br /&gt;
&amp;lt;pre&amp;gt;--with-http_realip_module&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
set_real_ip_from   192.168.1.0/24;&lt;br /&gt;
set_real_ip_from   192.168.2.1;&lt;br /&gt;
real_ip_header     X-Real-IP;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== set_real_ip_from ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_realip_module/set_real_ip_from.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== real_ip_header ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_realip_module/real_ip_header.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive sets the name of the header used for transferring the replacement IP address.&lt;br /&gt;
&lt;br /&gt;
In case of X-Forwarded-For, this module uses the last ip in the X-Forwarded-For header for replacement.&lt;br /&gt;
&lt;br /&gt;
== real_ip_recursive ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_realip_module/real_ip_recursive.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_realip_module.html Original Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://trac.nginx.org/nginx/ticket/2 trac ticket #2]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpGeoipModule</id>
		<title>HttpGeoipModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpGeoipModule"/>
				<updated>2012-05-15T15:42:30Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
This module creates ngx_http_geoip_module variables based on the IP-address of the client matched against the [http://www.maxmind.com/ MaxMind] GeoIP binary files. This module appeared in nginx version 0.7.63 and 0.8.6.&lt;br /&gt;
&lt;br /&gt;
Precondition&lt;br /&gt;
&lt;br /&gt;
This module needs the geo databases and the library to read from the database.&lt;br /&gt;
&lt;br /&gt;
There are several options:&lt;br /&gt;
&lt;br /&gt;
* Download the database yourself, e.g.:&lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
  wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install a package providing the database. For example in Debian the package is called '''geoip-database'''.&lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
  aptitude install geoip-database&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install a port providing the database. For example in FreeBSD the port is called &amp;quot;GeoIP&amp;quot;.&lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
  cd /usr/ports/net/GeoIP&lt;br /&gt;
  make install clean&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The FreeBSD port provides the GeoLite country database located at /usr/local/share/GeoIP/GeoIP.dat&lt;br /&gt;
&lt;br /&gt;
Note that this is only the country database. You'll need to download the '''city''' database from Maxmind site:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To compile Nginx you'll need the library development files. In Debian they're in the package '''libgeoip-dev'''.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libgeoip-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For systems where there's not a packaged version of the library you'll have to compile it from source:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Follow the install instructions provided there.&lt;br /&gt;
&lt;br /&gt;
Compile Nginx enabling Geo IP support:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --with-http_geoip_module&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can check if your installed version of Nginx supports Geo IP with &amp;lt;code&amp;gt;nginx -V&amp;lt;/code&amp;gt;. Watch for the &amp;lt;code&amp;gt; --with-http_geoip_module&amp;lt;/code&amp;gt;. This means that Geo IP support is enabled.&lt;br /&gt;
&lt;br /&gt;
Here'a a configuration example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
http {&lt;br /&gt;
    geoip_country  GeoIP.dat; # the country IP database&lt;br /&gt;
    geoip_city     GeoLiteCity.dat; # the city IP database&lt;br /&gt;
    (...)&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can mimic Apache's mod_geoip functionality with PHP-FPM by adding the following fastcgi_param values:&lt;br /&gt;
&lt;br /&gt;
(From [http://kbeezie.com/view/apache-mod_geoip-nginx/ Mimic Apache mod_geoip in Nginx])&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
	fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code; &lt;br /&gt;
	fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== geoip_country ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_geoip_module/geoip_country.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive specifies the full path to the Geo IP database .dat file that associates IP addresses with country geolocation information. This allows you to get the country corresponding to the given IP. It can be used to determine the visitor's country from the IP address of the client. When set the following variables are available:&lt;br /&gt;
&lt;br /&gt;
* $geoip_country_code &amp;amp;mdash; two-letter country code, for example, &amp;quot;RU&amp;quot;, &amp;quot;US&amp;quot;.&lt;br /&gt;
* $geoip_country_code3 &amp;amp;mdash; three-letter country code, for example, &amp;quot;RUS&amp;quot;, &amp;quot;USA&amp;quot;.&lt;br /&gt;
* $geoip_country_name &amp;amp;mdash; the (verbose) name of the country, for example, &amp;quot;Russian Federation&amp;quot;, &amp;quot;United States&amp;quot;, &amp;amp;c.&lt;br /&gt;
&lt;br /&gt;
Nginx caches all supplied databases in memory. The country database is small, roughly 1.4M, therefore there's very little penalty in caching it. The city database is much bigger. Hence its memory footprint is larger.&lt;br /&gt;
&lt;br /&gt;
== geoip_city ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_geoip_module/geoip_city.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive specifies the full path to the Geo IP database .dat file that associates IP addresses with country, city and region geolocation information. This allows you to get that information corresponding to the given IP. It can be used to determine the visitor's geolocation from the IP address of the client. When set the following variables are available:&lt;br /&gt;
&lt;br /&gt;
* '''$geoip_city_country_code''' &amp;amp;mdash; two-letter country code, for example, &amp;quot;RU&amp;quot;, &amp;quot;US&amp;quot;.&lt;br /&gt;
* '''$geoip_city_country_code3''' &amp;amp;mdash; three-letter country code, for example, &amp;quot;RUS&amp;quot;, &amp;quot;USA&amp;quot;.&lt;br /&gt;
* '''$geoip_city_country_name''' &amp;amp;mdash; the name of the country, for example, &amp;quot;Russian Federation&amp;quot;, &amp;quot;United States&amp;quot; &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_region''' &amp;amp;mdash; the name of region (province, region, state, province, federal land, and the like), for example, &amp;quot;Moscow City&amp;quot;, &amp;quot;DC&amp;quot; &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_city''' &amp;amp;mdash; the name of the city, for example, &amp;quot;Moscow&amp;quot;, &amp;quot;Washington&amp;quot;, &amp;quot;Lisbon&amp;quot;, &amp;amp;c &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_postal_code''' &amp;amp;mdash; zip code or postal code &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_city_continent_code''' &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_latitude''' &amp;amp;mdash; latitude &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_longitude''' &amp;amp;mdash; longitude &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_dma_code''' &amp;amp;mdash; DMA Code &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_area_code''' &amp;amp;mdash; Area Code &amp;amp;mdash; if available.&lt;br /&gt;
&lt;br /&gt;
== geoip_proxy ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_geoip_module/geoip_proxy.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== geoip_proxy_recursive ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_geoip_module/geoip_proxy_recursive.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_geoip_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpRealipModule</id>
		<title>HttpRealipModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpRealipModule"/>
				<updated>2012-05-15T15:40:05Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
This module allows to change the client's IP address to value from request header (e. g. &amp;lt;code&amp;gt;X-Real-IP&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;X-Forwarded-For&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
It is useful if nginx works behind some proxy of L7 load balancer, and the request comes from a local IP, but proxy add request header with client's IP. &lt;br /&gt;
&lt;br /&gt;
This module isn't built by default, enable it with the configure option &lt;br /&gt;
&amp;lt;pre&amp;gt;--with-http_realip_module&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
set_real_ip_from   192.168.1.0/24;&lt;br /&gt;
set_real_ip_from   192.168.2.1;&lt;br /&gt;
real_ip_header     X-Real-IP;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== set_real_ip_from ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_realip_module/set_real_ip_from.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive describes the trusted addresses, which transfer accurate address for the replacement. Since 0.8.22 Unix sockets can also be trusted.&lt;br /&gt;
&lt;br /&gt;
== real_ip_header ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_realip_module/real_ip_header.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive sets the name of the header used for transferring the replacement IP address.&lt;br /&gt;
&lt;br /&gt;
In case of X-Forwarded-For, this module uses the last ip in the X-Forwarded-For header for replacement.&lt;br /&gt;
&lt;br /&gt;
== real_ip_recursive ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_realip_module/real_ip_recursive.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_realip_module.html Original Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://trac.nginx.org/nginx/ticket/2 trac ticket #2]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpRealipModule</id>
		<title>HttpRealipModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpRealipModule"/>
				<updated>2012-05-15T15:39:49Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* real_ip_header */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
This module allows to change the client's IP address to value from request header (e. g. &amp;lt;code&amp;gt;X-Real-IP&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;X-Forwarded-For&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
It is useful if nginx works behind some proxy of L7 load balancer, and the request comes from a local IP, but proxy add request header with client's IP. &lt;br /&gt;
&lt;br /&gt;
This module isn't built by default, enable it with the configure option &lt;br /&gt;
&amp;lt;pre&amp;gt;--with-http_realip_module&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
set_real_ip_from   192.168.1.0/24;&lt;br /&gt;
set_real_ip_from   192.168.2.1;&lt;br /&gt;
real_ip_header     X-Real-IP;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== set_real_ip_from ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_realip_module/set_real_ip_from.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive describes the trusted addresses, which transfer accurate address for the replacement. Since 0.8.22 Unix sockets can also be trusted.&lt;br /&gt;
&lt;br /&gt;
== real_ip_header ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_realip_module/real_ip_header.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive sets the name of the header used for transferring the replacement IP address.&lt;br /&gt;
&lt;br /&gt;
In case of X-Forwarded-For, this module uses the last ip in the X-Forwarded-For header for replacement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== real_ip_recursive ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_realip_module/real_ip_recursive.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_realip_module.html Original Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://trac.nginx.org/nginx/ticket/2 trac ticket #2]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/Install</id>
		<title>Install</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/Install"/>
				<updated>2012-05-15T14:48:21Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= After Installing =&lt;br /&gt;
&lt;br /&gt;
The [[Configuration]] page will give you some help getting things going after you get Nginx installed and the [[Pitfalls]] page will help keep you from making mistakes that so many users before you did. These two pages give you the chance to learn from others mistakes and hard work.&lt;br /&gt;
&lt;br /&gt;
= Binary Releases =&lt;br /&gt;
&lt;br /&gt;
== Prebuilt Packages for Linux and BSD ==&lt;br /&gt;
Most Linux distributions and BSD variants have Nginx in the usual package repositories and they can be installed via whatever method is normally used to install software (apt-get on Debian, emerge on Gentoo, ports on FreeBSD, etc).&lt;br /&gt;
&lt;br /&gt;
Be aware that these packages are often somewhat out-of-date.   If you want the latest features and bugfixes, it's recommended to build from source or use packages directly from nginx.org.&lt;br /&gt;
&lt;br /&gt;
= Official Red Hat/CentOS packages =&lt;br /&gt;
&lt;br /&gt;
To add nginx yum repository, create a file named /etc/yum.repos.d/nginx.repo and paste one of the configurations below:&lt;br /&gt;
&lt;br /&gt;
CentOS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[nginx]&lt;br /&gt;
name=nginx repo&lt;br /&gt;
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/&lt;br /&gt;
gpgcheck=0&lt;br /&gt;
enabled=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
RHEL:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[nginx]&lt;br /&gt;
name=nginx repo&lt;br /&gt;
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/&lt;br /&gt;
gpgcheck=0&lt;br /&gt;
enabled=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Due to differences between how CentOS, RHEL, and Scientific Linux populate the $releasever variable, it is necessary to manually replace $releasever with either &amp;quot;5&amp;quot; (for 5.x) or &amp;quot;6&amp;quot; (for 6.x), depending upon your OS version.&lt;br /&gt;
&lt;br /&gt;
= Official Debian/Ubuntu packages =&lt;br /&gt;
Append the appropriate stanza to /etc/apt/sources.list. The [[Pgp]] page explains the signing of the nginx.org released packaging.&lt;br /&gt;
&lt;br /&gt;
Ubuntu 10.04:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://nginx.org/packages/ubuntu/ lucid nginx&lt;br /&gt;
deb-src http://nginx.org/packages/ubuntu/ lucid nginx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Debian 6:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://nginx.org/packages/debian/ squeeze nginx&lt;br /&gt;
deb-src http://nginx.org/packages/debian/ squeeze nginx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ubuntu PPA ==&lt;br /&gt;
This PPA is maintained by volunteers and is not distributed by nginx.org.  It has some additional compiled-in modules and may be more fitting for your environment.&lt;br /&gt;
&lt;br /&gt;
You can get the latest stable version of Nginx from the [https://launchpad.net/~nginx/+archive/development Nginx PPA] on Launchpad:&lt;br /&gt;
You will need to have root privileges to perform the following commands.&lt;br /&gt;
&lt;br /&gt;
For Ubuntu 10.04 and newer:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo -s&lt;br /&gt;
nginx=stable # use nginx=development for latest development version&lt;br /&gt;
add-apt-repository ppa:nginx/$nginx&lt;br /&gt;
apt-get update &lt;br /&gt;
apt-get install nginx&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get an error about add-apt-repository not existing, you will want to install python-software-properties.&lt;br /&gt;
For other Debian/Ubuntu based distributions, you can try the lucid variant of the PPA which is the most likely to work on older package sets.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo -s&lt;br /&gt;
nginx=stable # use nginx=development for latest development version&lt;br /&gt;
echo &amp;quot;deb http://ppa.launchpad.net/nginx/$nginx/ubuntu lucid main&amp;quot; &amp;gt; /etc/apt/sources.list.d/nginx-$nginx-lucid.list&lt;br /&gt;
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C&lt;br /&gt;
apt-get update &lt;br /&gt;
apt-get install nginx&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Official Win32 Binaries =&lt;br /&gt;
As of {{Version_Development}}, Nginx is now available as an [http://www.nginx.org/download/nginx-1.2.0.zip official Windows binary].&lt;br /&gt;
&lt;br /&gt;
The Windows version is provided as a binary-only due to the current build process (which currently uses some Wine tools).   When the build process has been cleaned up, source will be made available.   Igor does not want to support build issues with the current system.   &lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
cd c:\&lt;br /&gt;
unzip nginx-1.2.0.zip&lt;br /&gt;
ren nginx-1.2.0 nginx&lt;br /&gt;
cd nginx&lt;br /&gt;
start nginx&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Control:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
nginx -s [ stop | quit | reopen | reload ]&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems look in c:\nginx\logs\error.log or in EventLog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, Kevin Worthington maintains earlier [http://www.kevinworthington.com/nginx-for-windows/ Windows] builds of the development branch.&lt;br /&gt;
&lt;br /&gt;
= Source Releases =&lt;br /&gt;
There are currently three versions of Nginx available: '''stable (1.0.x)''', '''development (1.1.x)''', and '''legacy (0.8.x)'''. The development branch gets new features and bugfixes sooner but might introduce new bugs as well.  Once bugfixes are stabilized they are backported to the stable branch.   New features may or may not be backported.&lt;br /&gt;
&lt;br /&gt;
In general, the stable release is recommended, but the development release is typically quite stable as well.  See the [[Faq#Is_it_safe_to_use_the_development_branch_in_production.3F|FAQ]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;content-download-container&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li class=&amp;quot;content-download-item&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;content-download-link&amp;quot;&amp;gt;&lt;br /&gt;
== Stable ==&lt;br /&gt;
[http://nginx.org/download/nginx-1.2.0.tar.gz Nginx 1.2.0]&amp;lt;br /&amp;gt;&lt;br /&gt;
April 23, 2012&amp;lt;br /&amp;gt; &lt;br /&gt;
[http://nginx.org/en/CHANGES changelog]&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li class=&amp;quot;content-download-item&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;content-download-link&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
[http://nginx.org/download/nginx-1.3.0.tar.gz Nginx 1.3.0]&amp;lt;br /&amp;gt;&lt;br /&gt;
May 15, 2012&amp;lt;br /&amp;gt; &lt;br /&gt;
[http://nginx.org/en/CHANGES changelog]&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li class=&amp;quot;content-download-item&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;content-download-link&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Subversion ==&lt;br /&gt;
[svn://svn.nginx.org/nginx svn.nginx.org/nginx]&amp;lt;br /&amp;gt;&lt;br /&gt;
Includes experimental features and bugfixes&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Older versions can be found [http://sysoev.ru/nginx/download.html here].&lt;br /&gt;
&lt;br /&gt;
== Building Nginx From Source ==&lt;br /&gt;
&lt;br /&gt;
After extracting the source, run these commands from a terminal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By default, Nginx will be installed in /usr/local/nginx. You may change this and other options with the [[InstallOptions| compile-time options]].&lt;br /&gt;
&lt;br /&gt;
You might also want to peruse the [[Nginx3rdPartyModules|catalog of third-party modules]], since these must be built at compile-time.&lt;br /&gt;
&lt;br /&gt;
== Other Systems ==&lt;br /&gt;
&lt;br /&gt;
This is a list of other community maintained pages explaining other installations. Please note, that these pages are not thoroughly, if at all, reviewed for accuracy as they are on this page.&lt;br /&gt;
&lt;br /&gt;
[[Installing_on_Solaris_10_u5| Solaris 10u5]]&lt;br /&gt;
&lt;br /&gt;
[[Installing_on_Solaris_11| Solaris 11]]&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://sysoev.ru/nginx/docs/install.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/CliffWells</id>
		<title>CliffWells</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/CliffWells"/>
				<updated>2012-05-14T17:00:23Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Cliff Wells */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--master-page:HomepageTemplate&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Cliff Wells ==&lt;br /&gt;
&lt;br /&gt;
{{#gravatar: email_p1=cliff|email_p2=develix.com|size=40}}&lt;br /&gt;
&lt;br /&gt;
Contact:&lt;br /&gt;
*[mailto:cliff@nginx.org cliff@nginx.org]&lt;br /&gt;
*[mailto:cliff@develix.com cliff@develix.com]&lt;br /&gt;
*[mailto:cliff@twisty-industries.com cliff@twisty-industries.com]&lt;br /&gt;
&lt;br /&gt;
* [http://www.enemyofthestatement.com/ My blog]&lt;br /&gt;
&lt;br /&gt;
Python programmer, Io hacker, web hoster, and one more random jerk on IRC (cwells on freenode).&lt;br /&gt;
&lt;br /&gt;
Current projects:&lt;br /&gt;
* [http://github.com/cwells cwells on github]&lt;br /&gt;
* [http://breve.twisty-industries.com/ Breve - A Python template engine]  &lt;br /&gt;
* [http://www.develix.com/ Develix - Web hosting for developers] &lt;br /&gt;
* This wiki and general Nginx evangelism&lt;br /&gt;
&lt;br /&gt;
[https://www.ohloh.net/accounts/17418?ref=Detailed https://www.ohloh.net/accounts/17418/widgets/account_detailed.gif]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpLimitReqModule</id>
		<title>HttpLimitReqModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpLimitReqModule"/>
				<updated>2012-05-11T07:54:46Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
This module allows you to limit the number of requests for a given session, or as a special case, with one address.&lt;br /&gt;
&lt;br /&gt;
Restriction done using leaky bucket.&lt;br /&gt;
&lt;br /&gt;
= Example Configuration =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
http {&lt;br /&gt;
    limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
    server {&lt;br /&gt;
&lt;br /&gt;
        ...&lt;br /&gt;
&lt;br /&gt;
        location /search/ {&lt;br /&gt;
            limit_req   zone=one  burst=5;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== limit_req ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_limit_req_module/limit_req.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive specifies the zone ('''zone''') and the maximum possible bursts of requests (burst). If the rate exceeds the demands outlined in the zone, the request is delayed, so that queries are processed at a given speed. Excess requests are delayed while their number does not exceed a specified number of bursts. If the number of waiting requests exceed burst, the request is completed with the code 503 &amp;quot;Service Temporarily Unavailable&amp;quot;. By default, the burst is zero.&lt;br /&gt;
&lt;br /&gt;
For example, the directive&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;&lt;br /&gt;
&lt;br /&gt;
    server {&lt;br /&gt;
        location /search/ {&lt;br /&gt;
            limit_req   zone=one  burst=5;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
allows a user no more than 1 request per second on average, with bursts of no more than 5 requests.&lt;br /&gt;
&lt;br /&gt;
If delaying excess requests within a burst is not necessary, you should use the option '''nodelay''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            limit_req   zone=one  burst=5  nodelay;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== limit_req_log_level ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_limit_req_module/limit_req_log_level.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controls the log level of the rejected requests. Delayed requests are logged at the next less severe level, though, for example when limit_req_log_level is set to &amp;quot;error&amp;quot;, delayed requests are logged at &amp;quot;warn&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== limit_req_zone ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_limit_req_module/limit_req_zone.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive describes the area, which stores the state of the sessions. The values of the sessions is determined by the given variable. Example of usage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the session state is allocated 10MB  as a zone called &amp;quot;one&amp;quot;, and the average speed of queries for this zone is limited to 1 request per second.&lt;br /&gt;
&lt;br /&gt;
The sessions are tracked per-user in this case, but note that instead of the variable $remote_addr, we've used the variable $binary_remote_addr, reducing the size of the state to 64 bytes. A 1 MB zone can hold approximately 16000 states of this size.&lt;br /&gt;
&lt;br /&gt;
The speed is set in requests per second or requests per minute. The rate must be an integer, so if you need to specify less than one request per second, say, one request every two seconds, you would specify it as &amp;quot;30r/m&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_limit_req_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpLimitReqModule</id>
		<title>HttpLimitReqModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpLimitReqModule"/>
				<updated>2012-05-11T07:54:15Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* limit_req_zone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
This module allows you to limit the number of requests for a given session, or as a special case, with one address.&lt;br /&gt;
&lt;br /&gt;
Restriction done using leaky bucket.&lt;br /&gt;
&lt;br /&gt;
= Example Configuration =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
http {&lt;br /&gt;
    limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
    server {&lt;br /&gt;
&lt;br /&gt;
        ...&lt;br /&gt;
&lt;br /&gt;
        location /search/ {&lt;br /&gt;
            limit_req   zone=one  burst=5;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
&lt;br /&gt;
== limit_req_log_level ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_limit_req_module/limit_req_log_level.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controls the log level of the rejected requests. Delayed requests are logged at the next less severe level, though, for example when limit_req_log_level is set to &amp;quot;error&amp;quot;, delayed requests are logged at &amp;quot;warn&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== limit_req_zone ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_limit_req_module/limit_req_zone.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive describes the area, which stores the state of the sessions. The values of the sessions is determined by the given variable. Example of usage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the session state is allocated 10MB  as a zone called &amp;quot;one&amp;quot;, and the average speed of queries for this zone is limited to 1 request per second.&lt;br /&gt;
&lt;br /&gt;
The sessions are tracked per-user in this case, but note that instead of the variable $remote_addr, we've used the variable $binary_remote_addr, reducing the size of the state to 64 bytes. A 1 MB zone can hold approximately 16000 states of this size.&lt;br /&gt;
&lt;br /&gt;
The speed is set in requests per second or requests per minute. The rate must be an integer, so if you need to specify less than one request per second, say, one request every two seconds, you would specify it as &amp;quot;30r/m&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== limit_req ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_limit_req_module/limit_req.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive specifies the zone ('''zone''') and the maximum possible bursts of requests (burst). If the rate exceeds the demands outlined in the zone, the request is delayed, so that queries are processed at a given speed. Excess requests are delayed while their number does not exceed a specified number of bursts. If the number of waiting requests exceed burst, the request is completed with the code 503 &amp;quot;Service Temporarily Unavailable&amp;quot;. By default, the burst is zero.&lt;br /&gt;
&lt;br /&gt;
For example, the directive&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;&lt;br /&gt;
&lt;br /&gt;
    server {&lt;br /&gt;
        location /search/ {&lt;br /&gt;
            limit_req   zone=one  burst=5;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
allows a user no more than 1 request per second on average, with bursts of no more than 5 requests.&lt;br /&gt;
&lt;br /&gt;
If delaying excess requests within a burst is not necessary, you should use the option '''nodelay''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            limit_req   zone=one  burst=5  nodelay;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_limit_req_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpLimitReqModule</id>
		<title>HttpLimitReqModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpLimitReqModule"/>
				<updated>2012-05-11T07:53:59Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* limit_req */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
This module allows you to limit the number of requests for a given session, or as a special case, with one address.&lt;br /&gt;
&lt;br /&gt;
Restriction done using leaky bucket.&lt;br /&gt;
&lt;br /&gt;
= Example Configuration =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
http {&lt;br /&gt;
    limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
    server {&lt;br /&gt;
&lt;br /&gt;
        ...&lt;br /&gt;
&lt;br /&gt;
        location /search/ {&lt;br /&gt;
            limit_req   zone=one  burst=5;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
&lt;br /&gt;
== limit_req_log_level ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_limit_req_module/limit_req_log_level.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controls the log level of the rejected requests. Delayed requests are logged at the next less severe level, though, for example when limit_req_log_level is set to &amp;quot;error&amp;quot;, delayed requests are logged at &amp;quot;warn&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== limit_req_zone ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_limit_req_module/limit_req_zone.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive describes the area, which stores the state of the sessions. The values of the sessions is determined by the given variable. Example of usage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the session state is allocated 10MB  as a zone called &amp;quot;one&amp;quot;, and the average speed of queries for this zone is limited to 1 request per second.&lt;br /&gt;
&lt;br /&gt;
The sessions are tracked per-user in this case, but note that instead of the variable $remote_addr, we've used the variable $binary_remote_addr, reducing the size of the state to 64 bytes. A 1 MB zone can hold approximately 16000 states of this size.&lt;br /&gt;
&lt;br /&gt;
The speed is set in requests per second or requests per minute. The rate must be an integer, so if you need to specify less than one request per second, say, one request every two seconds, you would specify it as &amp;quot;30r/m&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== limit_req_zone ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_limit_req_module/limit_req_zone.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive specifies the zone ('''zone''') and the maximum possible bursts of requests (burst). If the rate exceeds the demands outlined in the zone, the request is delayed, so that queries are processed at a given speed. Excess requests are delayed while their number does not exceed a specified number of bursts. If the number of waiting requests exceed burst, the request is completed with the code 503 &amp;quot;Service Temporarily Unavailable&amp;quot;. By default, the burst is zero.&lt;br /&gt;
&lt;br /&gt;
For example, the directive&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;&lt;br /&gt;
&lt;br /&gt;
    server {&lt;br /&gt;
        location /search/ {&lt;br /&gt;
            limit_req   zone=one  burst=5;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
allows a user no more than 1 request per second on average, with bursts of no more than 5 requests.&lt;br /&gt;
&lt;br /&gt;
If delaying excess requests within a burst is not necessary, you should use the option '''nodelay''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            limit_req   zone=one  burst=5  nodelay;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_limit_req_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpLimitReqModule</id>
		<title>HttpLimitReqModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpLimitReqModule"/>
				<updated>2012-05-11T07:52:58Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* limit_req_zone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
This module allows you to limit the number of requests for a given session, or as a special case, with one address.&lt;br /&gt;
&lt;br /&gt;
Restriction done using leaky bucket.&lt;br /&gt;
&lt;br /&gt;
= Example Configuration =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
http {&lt;br /&gt;
    limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
    server {&lt;br /&gt;
&lt;br /&gt;
        ...&lt;br /&gt;
&lt;br /&gt;
        location /search/ {&lt;br /&gt;
            limit_req   zone=one  burst=5;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
&lt;br /&gt;
== limit_req_log_level ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_limit_req_module/limit_req_log_level.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controls the log level of the rejected requests. Delayed requests are logged at the next less severe level, though, for example when limit_req_log_level is set to &amp;quot;error&amp;quot;, delayed requests are logged at &amp;quot;warn&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== limit_req ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_limit_req_module/limit_req.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive describes the area, which stores the state of the sessions. The values of the sessions is determined by the given variable. Example of usage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the session state is allocated 10MB  as a zone called &amp;quot;one&amp;quot;, and the average speed of queries for this zone is limited to 1 request per second.&lt;br /&gt;
&lt;br /&gt;
The sessions are tracked per-user in this case, but note that instead of the variable $remote_addr, we've used the variable $binary_remote_addr, reducing the size of the state to 64 bytes. A 1 MB zone can hold approximately 16000 states of this size.&lt;br /&gt;
&lt;br /&gt;
The speed is set in requests per second or requests per minute. The rate must be an integer, so if you need to specify less than one request per second, say, one request every two seconds, you would specify it as &amp;quot;30r/m&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== limit_req_zone ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_limit_req_module/limit_req_zone.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive specifies the zone ('''zone''') and the maximum possible bursts of requests (burst). If the rate exceeds the demands outlined in the zone, the request is delayed, so that queries are processed at a given speed. Excess requests are delayed while their number does not exceed a specified number of bursts. If the number of waiting requests exceed burst, the request is completed with the code 503 &amp;quot;Service Temporarily Unavailable&amp;quot;. By default, the burst is zero.&lt;br /&gt;
&lt;br /&gt;
For example, the directive&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;&lt;br /&gt;
&lt;br /&gt;
    server {&lt;br /&gt;
        location /search/ {&lt;br /&gt;
            limit_req   zone=one  burst=5;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
allows a user no more than 1 request per second on average, with bursts of no more than 5 requests.&lt;br /&gt;
&lt;br /&gt;
If delaying excess requests within a burst is not necessary, you should use the option '''nodelay''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            limit_req   zone=one  burst=5  nodelay;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_limit_req_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/User_talk:LanfrancoMancini</id>
		<title>User talk:LanfrancoMancini</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/User_talk:LanfrancoMancini"/>
				<updated>2012-05-03T09:03:29Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: Created page with &amp;quot;This feels too much like spam. Once you become an actual contributor, I'm more likely to allow such links (or if the business were even remotely Nginx-related somehow).&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This feels too much like spam. Once you become an actual contributor, I'm more likely to allow such links (or if the business were even remotely Nginx-related somehow).&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/User:LanfrancoMancini</id>
		<title>User:LanfrancoMancini</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/User:LanfrancoMancini"/>
				<updated>2012-05-03T09:02:09Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lanfranco Mancini is a writer/blogger working as a marketing specialist for an NY-based IT consulting firm based offering IT solutions for businesses such as managed IT services and tech support services.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/Modules</id>
		<title>Modules</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/Modules"/>
				<updated>2012-05-03T00:34:26Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installing Modules =&lt;br /&gt;
Nginx modules must be selected during compile, run-time selection of modules is not currently supported. &lt;br /&gt;
&lt;br /&gt;
A full summary of the compile-time options, including optional modules, can be found in the provided configure script by running &amp;lt;code&amp;gt;./configure --help&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Nginx core modules =&lt;br /&gt;
These modules are required.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[CoreModule|Main]]&lt;br /&gt;
| Configure error logging, processes, permissions, etc.&lt;br /&gt;
|-&lt;br /&gt;
| [[EventsModule|Events]]&lt;br /&gt;
| Configure epoll, kqueue, select, poll, etc. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Standard HTTP modules =&lt;br /&gt;
These modules are automatically compiled in unless explicitly disabled with &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Version&lt;br /&gt;
! configure argument to disable&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCoreModule|Core]]&lt;br /&gt;
| Control ports, locations, error pages, aliases, and other essentials.&lt;br /&gt;
|&lt;br /&gt;
| --without-http&lt;br /&gt;
|- &lt;br /&gt;
| [[HttpAccessModule|Access]]&lt;br /&gt;
| Allow/deny based on IP address.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_access_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAuthBasicModule|Auth Basic]]&lt;br /&gt;
| Basic HTTP authentication.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_auth_basic_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAutoindexModule|Auto Index]]&lt;br /&gt;
| Generates automatic directory listings.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_autoindex_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpBrowserModule|Browser]]&lt;br /&gt;
| Interpret &amp;quot;User-Agent&amp;quot; string.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_browser_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCharsetModule|Charset]]&lt;br /&gt;
| Recode web pages.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_charset_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpEmptyGifModule|Empty GIF]]&lt;br /&gt;
| Serve a 1x1 image from memory.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_empty_gif_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFastcgiModule|FastCGI]]&lt;br /&gt;
| FastCGI Support.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_fastcgi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGeoModule|Geo]]&lt;br /&gt;
| Set config variables using key/value pairs of IP addresses.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_geo_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGzipModule|Gzip]]&lt;br /&gt;
| Gzip responses.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_gzip_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHeadersModule|Headers]]&lt;br /&gt;
| Set arbitrary HTTP response headers. &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpIndexModule|Index]]&lt;br /&gt;
| Controls which files are to be used as index. &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLimitReqModule|Limit Requests]]&lt;br /&gt;
| Limit frequency of connections from a client.&lt;br /&gt;
| 0.7.20&lt;br /&gt;
| --without-http_limit_req_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLimitZoneModule|Limit Zone]]&lt;br /&gt;
| Limit simultaneous connections from a client. Deprecated in 1.1.8, use Limit Conn Instead.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_limit_zone_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLimitConnModule|Limit Conn]]&lt;br /&gt;
| Limit concurrent connections based on a variable.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_limit_conn_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLogModule|Log]]&lt;br /&gt;
| Customize access logs.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMapModule|Map]]&lt;br /&gt;
| Set config variables using arbitrary key/value pairs.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_map_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMemcachedModule|Memcached]]&lt;br /&gt;
| Memcached support.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_memcached_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpProxyModule|Proxy]]&lt;br /&gt;
| Proxy to upstream servers.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_proxy_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRefererModule|Referer]]&lt;br /&gt;
| Filter requests based on &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_referer_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRewriteModule|Rewrite]]&lt;br /&gt;
| Request rewriting using regular expressions.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_rewrite_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpScgiModule|SCGI]]&lt;br /&gt;
| SCGI protocol support.&lt;br /&gt;
| 0.8.42&lt;br /&gt;
| --without-http_scgi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSplitClientsModule|Split Clients]]&lt;br /&gt;
| Splits clients based on some conditions&lt;br /&gt;
| 0.8.37&lt;br /&gt;
| --without-http_split_clients_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSsiModule|SSI]]&lt;br /&gt;
| Server-side includes.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_ssi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamModule|Upstream]]&lt;br /&gt;
| For load-balancing.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_upstream_ip_hash_module (ip_hash directive only)&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUseridModule|User ID]]&lt;br /&gt;
| Issue identifying cookies.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_userid_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUwsgiModule|uWSGI]]&lt;br /&gt;
| uWSGI protocol support.&lt;br /&gt;
| 0.8.40&lt;br /&gt;
| --without-http_uwsgi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[X-accel|X-Accel]]&lt;br /&gt;
| X-Sendfile-like module.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Optional HTTP modules =&lt;br /&gt;
The following modules must be enabled at compile-time with the specified option to &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Version&lt;br /&gt;
! configure argument to enable&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAdditionModule|Addition]]&lt;br /&gt;
| Append text to pages.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_addition_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDegradationModule|Degradation]]&lt;br /&gt;
| Allow to return 204 or 444 code for some locations on low memory condition.&lt;br /&gt;
| 0.8.25&lt;br /&gt;
| --with-http_degradation_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpPerlModule|Embedded Perl]]&lt;br /&gt;
| Use Perl in Nginx config files.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_perl_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFlvModule|FLV]]&lt;br /&gt;
| Flash Streaming Video&lt;br /&gt;
| &lt;br /&gt;
| --with-http_flv_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGeoipModule|GeoIP]]&lt;br /&gt;
| Creates variables with information from the [http://www.maxmind.com/ MaxMind] GeoIP binary files.&lt;br /&gt;
| 0.8.6, 0.7.63&lt;br /&gt;
| --with-http_geoip_module&lt;br /&gt;
|-&lt;br /&gt;
| [[GooglePerftoolsModule|Google Perftools]]&lt;br /&gt;
| Google Performance Tools support.&lt;br /&gt;
| 0.6.29&lt;br /&gt;
| --with-google_perftools_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGzipStaticModule|Gzip Precompression]]&lt;br /&gt;
| Serves precompressed versions of static files.&lt;br /&gt;
| 0.6.23&lt;br /&gt;
| --with-http_gzip_static_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpImageFilterModule|Image Filter]]&lt;br /&gt;
| Transform images with Libgd&lt;br /&gt;
| 0.7.54&lt;br /&gt;
| --with-http_image_filter_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMp4Module|MP4]]&lt;br /&gt;
| Enables mp4 streaming with seeking ability.&lt;br /&gt;
| 1.1.3, 1.0.7&lt;br /&gt;
| --with-http_mp4_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRandomIndexModule|Random Index]]&lt;br /&gt;
| Randomize directory indexes.&lt;br /&gt;
| 0.7.15&lt;br /&gt;
| --with-http_random_index_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRealipModule|Real IP]]&lt;br /&gt;
| For using nginx as backend&lt;br /&gt;
| &lt;br /&gt;
| --with-http_realip_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSecureLinkModule|Secure Link]]&lt;br /&gt;
| Protect pages with a secret key.&lt;br /&gt;
| 0.7.18&lt;br /&gt;
| --with-http_secure_link_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSslModule|SSL]]&lt;br /&gt;
| HTTPS/SSL support.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_ssl_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpStubStatusModule|Stub Status]]&lt;br /&gt;
| View server statistics.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_stub_status_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSubModule|Substitution]]&lt;br /&gt;
| Replace text in pages&lt;br /&gt;
| &lt;br /&gt;
| --with-http_sub_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDavModule|WebDAV]]&lt;br /&gt;
| WebDAV pass-through support.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_dav_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpXsltModule|XSLT]]&lt;br /&gt;
| Post-process pages with XSLT.&lt;br /&gt;
| 0.7.8&lt;br /&gt;
| --with-http_xslt_module&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Mail modules =&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! configure argument&lt;br /&gt;
|-&lt;br /&gt;
| [[MailCoreModule|Core]]&lt;br /&gt;
| Nginx is able to handle and proxy the IMAP, POP3, SMTP protocols. &lt;br /&gt;
| --with-mail&amp;lt;br&amp;gt;--without-mail_pop3_module&amp;lt;br&amp;gt;--without-mail_imap_module&amp;lt;br&amp;gt;--without-mail_smtp_module&lt;br /&gt;
|-&lt;br /&gt;
| [[MailAuthModule|Auth]]&lt;br /&gt;
| Use Nginx to authenticate mail services.&lt;br /&gt;
|-&lt;br /&gt;
| [[MailProxyModule|Proxy]]&lt;br /&gt;
| Nginx can proxy IMAP, POP3, and SMTP protocols.&lt;br /&gt;
|-&lt;br /&gt;
| [[MailSslModule|SSL]]&lt;br /&gt;
| This module ensures SSL/TLS support for POP3/IMAP/SMTP.&lt;br /&gt;
| --with-mail_ssl_module&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Third party modules and Patches =&lt;br /&gt;
Please see the catalog of [[3rdPartyModules|3rd party modules]].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* [[ModulesByExample|Module index by example]]&lt;br /&gt;
* [[ConfigNotation| Configuration Notation Reference]]&lt;br /&gt;
* [[ModuleComparisonMatrix| Module comparison matrix with other servers]]&lt;br /&gt;
* [http://trac.nginx.org/nginx Feature Requests and bug reports] &lt;br /&gt;
* [[GettingStarted| Getting Started]] &lt;br /&gt;
* [[Configuration| Configuration Cookbook]]&lt;br /&gt;
* [[DirectiveIndex| Index of all Directives]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/ModuleComparisonMatrix</id>
		<title>ModuleComparisonMatrix</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/ModuleComparisonMatrix"/>
				<updated>2012-05-03T00:32:50Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Module comparison matrix =&lt;br /&gt;
&lt;br /&gt;
Looking for Nginx's mod_rewrite or mod_perl? The following table attempts to summarize modules for Nginx that are comparable to modules available for other web servers. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| '''Nginx module''' || '''Apache module''' || '''Lighttpd module'''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUpstreamModule| HTTP Upstream Module]]  || [http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html mod_proxy_balancer]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxyCore mod_proxy_core]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAccessModule| Access Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_access.html mod_access]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModAccess mod_access]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAuthBasicModule| Auth Basic Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_auth.html mod_auth]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModAuth mod_auth]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAutoindexModule| AutoIndex Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_autoindex.html mod_autoindex]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModDirlisting mod_dirlisting]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpBrowserModule| Browser Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_setenvif.html mod_setenvif]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpCharsetModule| Charset Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpEmptyGifModule| Empty GIF Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpFcgiModule| FastCGI Module]]  || [http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html mod_fastcgi] , [http://fastcgi.coremail.cn/ mod_fcgid]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModFastCGI mod_fastcgi]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpGeoModule| GEO Module]]  || [http://www.maxmind.com/app/mod_geoip mod_geoip]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModGeoip mod_geoip]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpGzipModule| Gzip Compression Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_deflate.html mod_deflate]  || [http://trac.lighttpd.net/trac/wiki/Mod_Deflate mod_deflate]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpGzipStaticModule| Gzip Pre-Compression Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpHeadersModule| HTTP Headers Module]]  || [http://httpd.apache.org/docs/2.2/mod/mod_headers.html mod_headers]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModSetEnv mod_setenv]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpRefererModule| HTTP Referer Module]]  || [http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html mod_setenvif]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpLimitZoneModule| Limit Zone Module]]  || [http://dominia.org/djao/limitipconn2.html mod_limitipconn]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModEvasive mod_evasive]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpLogModule| Log Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_log_config.html mod_log_config]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModAccessLog mod_accesslog]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpMapModule| Map Module]]  || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpMemcachedModule| Memcached Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpProxyModule| Proxy Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_proxy.html mod_proxy]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxy mod_proxy]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpRewriteModule| Rewrite Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html mod_rewrite]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModRewrite mod_rewrite]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSsiModule| SSI Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_include.html mod_include]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModSSI mod_ssi]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUserIdModule| UserID Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_usertrack.html mod_usertrack]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModUserTrack mod_usertrack]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAdditionModule| Addition Module]]  || [http://tangent.org/index.pl?lastnode_id=478&amp;amp;node_id=362 mod_layout]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxEmbeddedPerlModule| Embedded Perl Module]]  || [http://perl.apache.org/ mod_perl]  || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpFlvStreamModule| FLV Module]]  || [http://journal.paul.querna.org/articles/2006/07/11/mod_flvx mod_flvx]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModFLVStreaming mod_flv_streaming]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpRealIpModule| Real IP Module]]  || [http://stderr.net/apache/rpaf/ mod_rpaf]  || [http://trac.lighttpd.net/trac/wiki/Docs/ModExtForward mod_extforward]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSslModule| SSL Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_ssl.html mod_ssl]  || [http://trac.lighttpd.net/trac/wiki/Docs%3ASSL SSL]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpStubStatusModule| Stub Status Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_status.html mod_status]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModStatus mod_status]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSubModule| Substitution Module]]  || [http://apache.webthing.com/mod_line_edit/ mod_line_edit]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpDavModule| WebDAV Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_dav.html mod_dav]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModWebDAV mod_webdav]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxUserDir| UserDir Equivalent]]  || [http://httpd.apache.org/docs/2.0/mod/mod_userdir.html mod_userdir]  || [http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs#mod_userdir mod_userdir]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/ModuleComparisonMatrix</id>
		<title>ModuleComparisonMatrix</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/ModuleComparisonMatrix"/>
				<updated>2012-05-03T00:32:12Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Module comparison matrix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- page was renamed from NginxFeatureComparisonMatrix&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Module comparison matrix =&lt;br /&gt;
&lt;br /&gt;
Looking for Nginx's mod_rewrite or mod_perl? The following table attempts to summarize modules for Nginx that are comparable to modules available for other web servers. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| '''Nginx module''' || '''Apache module''' || '''Lighttpd module'''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUpstreamModule| HTTP Upstream Module]]  || [http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html mod_proxy_balancer]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxyCore mod_proxy_core]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAccessModule| Access Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_access.html mod_access]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModAccess mod_access]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAuthBasicModule| Auth Basic Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_auth.html mod_auth]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModAuth mod_auth]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAutoindexModule| AutoIndex Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_autoindex.html mod_autoindex]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModDirlisting mod_dirlisting]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpBrowserModule| Browser Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_setenvif.html mod_setenvif]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpCharsetModule| Charset Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpEmptyGifModule| Empty GIF Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpFcgiModule| FastCGI Module]]  || [http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html mod_fastcgi] , [http://fastcgi.coremail.cn/ mod_fcgid]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModFastCGI mod_fastcgi]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpGeoModule| GEO Module]]  || [http://www.maxmind.com/app/mod_geoip mod_geoip]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModGeoip mod_geoip]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpGzipModule| Gzip Compression Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_deflate.html mod_deflate]  || [http://trac.lighttpd.net/trac/wiki/Mod_Deflate mod_deflate]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpGzipStaticModule| Gzip Pre-Compression Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpHeadersModule| HTTP Headers Module]]  || [http://httpd.apache.org/docs/2.2/mod/mod_headers.html mod_headers]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModSetEnv mod_setenv]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpRefererModule| HTTP Referer Module]]  || [http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html mod_setenvif]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpLimitZoneModule| Limit Zone Module]]  || [http://dominia.org/djao/limitipconn2.html mod_limitipconn]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModEvasive mod_evasive]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpLogModule| Log Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_log_config.html mod_log_config]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModAccessLog mod_accesslog]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpMapModule| Map Module]]  || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpMemcachedModule| Memcached Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpProxyModule| Proxy Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_proxy.html mod_proxy]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxy mod_proxy]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpRewriteModule| Rewrite Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html mod_rewrite]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModRewrite mod_rewrite]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSsiModule| SSI Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_include.html mod_include]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModSSI mod_ssi]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUserIdModule| UserID Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_usertrack.html mod_usertrack]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModUserTrack mod_usertrack]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAdditionModule| Addition Module]]  || [http://tangent.org/index.pl?lastnode_id=478&amp;amp;node_id=362 mod_layout]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxEmbeddedPerlModule| Embedded Perl Module]]  || [http://perl.apache.org/ mod_perl]  || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpFlvStreamModule| FLV Module]]  || [http://journal.paul.querna.org/articles/2006/07/11/mod_flvx mod_flvx]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModFLVStreaming mod_flv_streaming]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpRealIpModule| Real IP Module]]  || [http://stderr.net/apache/rpaf/ mod_rpaf]  || [http://trac.lighttpd.net/trac/wiki/Docs/ModExtForward mod_extforward]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSslModule| SSL Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_ssl.html mod_ssl]  || [http://trac.lighttpd.net/trac/wiki/Docs%3ASSL SSL]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpStubStatusModule| Stub Status Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_status.html mod_status]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModStatus mod_status]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSubModule| Substitution Module]]  || [http://apache.webthing.com/mod_line_edit/ mod_line_edit]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpDavModule| WebDAV Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_dav.html mod_dav]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModWebDAV mod_webdav]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxUserDir| UserDir Equivalent]]  || [http://httpd.apache.org/docs/2.0/mod/mod_userdir.html mod_userdir]  || [http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs#mod_userdir mod_userdir]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Third-Party Nginx modules ==&lt;br /&gt;
&lt;br /&gt;
The following Nginx modules are not distributed with the Nginx source.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| '''Nginx module''' || '''Apache module''' || '''Lighttpd module'''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpCircleGifModule| Circle GIF Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUpstreamRequestHashModule| Upstream Hash Module]]  || ''none'' || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxy mod_proxy]&lt;br /&gt;
|-&lt;br /&gt;
| [http://xph.us/software/nginx-notice/ Notice Module]  || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgxZip| ngx_zip]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgx_rrd_graph| ngx_rrd_graph]]  || ''none'' || [http://trac.lighttpd.net/trac/wiki/Docs%3AModRRDTool mod_rrdtool]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgxSCGIModule| SCGI Module]]  || [http://quixote.python.ca/scgi.dev/ ?]  || [http://trac.lighttpd.net/trac/wiki/Docs:ModSCGI mod_scgi]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUploadProgressModule| Upload Progress Module]]  || ? || [http://trac.lighttpd.net/trac/wiki/Docs:ModUploadProgress mod_uploadprogress]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgxWSGIModule| WSGI Module]]  || [http://code.google.com/p/modwsgi/ mod_wsgi]  || ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Requested Nginx modules ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| '''Nginx module''' || '''Apache module''' || '''Lighttpd module'''&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://httpd.apache.org/docs/2.0/mod/mod_mem_cache.html mod_mem_cache]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModMemCache mod_mem_cache]&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://www.backhand.org/mod_backhand/ mod_backhand]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxy mod_proxy]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSecureDownload| Secure Download Module]] || [http://www.synd.info/downloads/releases/ mod_auth_token]   || [http://trac.lighttpd.net/trac/wiki/Docs:ModSecDownload mod_secdownload]&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://www.modsecurity.org/ mod_security]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || ? || [http://trac.lighttpd.net/trac/wiki/Docs%3AModMySQLVhost mod_mysql_vhost]&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://httpd.apache.org/docs/2.1/mod/mod_proxy_ajp.html mod_proxy_ajp]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxyCore mod_proxy_core (mod_proxy_backend_ajp13)]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/ModuleComparisonMatrix</id>
		<title>ModuleComparisonMatrix</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/ModuleComparisonMatrix"/>
				<updated>2012-05-03T00:31:40Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Requested Nginx modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- page was renamed from NginxFeatureComparisonMatrix&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module comparison matrix ==&lt;br /&gt;
&lt;br /&gt;
Looking for Nginx's mod_rewrite or mod_perl? The following table attempts to summarize modules for Nginx that are comparable to modules available for other web servers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| '''Nginx module''' || '''Apache module''' || '''Lighttpd module'''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUpstreamModule| HTTP Upstream Module]]  || [http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html mod_proxy_balancer]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxyCore mod_proxy_core]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAccessModule| Access Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_access.html mod_access]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModAccess mod_access]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAuthBasicModule| Auth Basic Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_auth.html mod_auth]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModAuth mod_auth]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAutoindexModule| AutoIndex Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_autoindex.html mod_autoindex]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModDirlisting mod_dirlisting]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpBrowserModule| Browser Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_setenvif.html mod_setenvif]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpCharsetModule| Charset Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpEmptyGifModule| Empty GIF Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpFcgiModule| FastCGI Module]]  || [http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html mod_fastcgi] , [http://fastcgi.coremail.cn/ mod_fcgid]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModFastCGI mod_fastcgi]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpGeoModule| GEO Module]]  || [http://www.maxmind.com/app/mod_geoip mod_geoip]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModGeoip mod_geoip]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpGzipModule| Gzip Compression Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_deflate.html mod_deflate]  || [http://trac.lighttpd.net/trac/wiki/Mod_Deflate mod_deflate]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpGzipStaticModule| Gzip Pre-Compression Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpHeadersModule| HTTP Headers Module]]  || [http://httpd.apache.org/docs/2.2/mod/mod_headers.html mod_headers]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModSetEnv mod_setenv]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpRefererModule| HTTP Referer Module]]  || [http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html mod_setenvif]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpLimitZoneModule| Limit Zone Module]]  || [http://dominia.org/djao/limitipconn2.html mod_limitipconn]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModEvasive mod_evasive]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpLogModule| Log Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_log_config.html mod_log_config]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModAccessLog mod_accesslog]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpMapModule| Map Module]]  || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpMemcachedModule| Memcached Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpProxyModule| Proxy Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_proxy.html mod_proxy]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxy mod_proxy]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpRewriteModule| Rewrite Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html mod_rewrite]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModRewrite mod_rewrite]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSsiModule| SSI Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_include.html mod_include]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModSSI mod_ssi]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUserIdModule| UserID Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_usertrack.html mod_usertrack]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModUserTrack mod_usertrack]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAdditionModule| Addition Module]]  || [http://tangent.org/index.pl?lastnode_id=478&amp;amp;node_id=362 mod_layout]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxEmbeddedPerlModule| Embedded Perl Module]]  || [http://perl.apache.org/ mod_perl]  || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpFlvStreamModule| FLV Module]]  || [http://journal.paul.querna.org/articles/2006/07/11/mod_flvx mod_flvx]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModFLVStreaming mod_flv_streaming]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpRealIpModule| Real IP Module]]  || [http://stderr.net/apache/rpaf/ mod_rpaf]  || [http://trac.lighttpd.net/trac/wiki/Docs/ModExtForward mod_extforward]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSslModule| SSL Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_ssl.html mod_ssl]  || [http://trac.lighttpd.net/trac/wiki/Docs%3ASSL SSL]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpStubStatusModule| Stub Status Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_status.html mod_status]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModStatus mod_status]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSubModule| Substitution Module]]  || [http://apache.webthing.com/mod_line_edit/ mod_line_edit]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpDavModule| WebDAV Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_dav.html mod_dav]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModWebDAV mod_webdav]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxUserDir| UserDir Equivalent]]  || [http://httpd.apache.org/docs/2.0/mod/mod_userdir.html mod_userdir]  || [http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs#mod_userdir mod_userdir]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Third-Party Nginx modules ==&lt;br /&gt;
&lt;br /&gt;
The following Nginx modules are not distributed with the Nginx source.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| '''Nginx module''' || '''Apache module''' || '''Lighttpd module'''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpCircleGifModule| Circle GIF Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUpstreamRequestHashModule| Upstream Hash Module]]  || ''none'' || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxy mod_proxy]&lt;br /&gt;
|-&lt;br /&gt;
| [http://xph.us/software/nginx-notice/ Notice Module]  || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgxZip| ngx_zip]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgx_rrd_graph| ngx_rrd_graph]]  || ''none'' || [http://trac.lighttpd.net/trac/wiki/Docs%3AModRRDTool mod_rrdtool]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgxSCGIModule| SCGI Module]]  || [http://quixote.python.ca/scgi.dev/ ?]  || [http://trac.lighttpd.net/trac/wiki/Docs:ModSCGI mod_scgi]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUploadProgressModule| Upload Progress Module]]  || ? || [http://trac.lighttpd.net/trac/wiki/Docs:ModUploadProgress mod_uploadprogress]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgxWSGIModule| WSGI Module]]  || [http://code.google.com/p/modwsgi/ mod_wsgi]  || ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Requested Nginx modules ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| '''Nginx module''' || '''Apache module''' || '''Lighttpd module'''&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://httpd.apache.org/docs/2.0/mod/mod_mem_cache.html mod_mem_cache]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModMemCache mod_mem_cache]&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://www.backhand.org/mod_backhand/ mod_backhand]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxy mod_proxy]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSecureDownload| Secure Download Module]] || [http://www.synd.info/downloads/releases/ mod_auth_token]   || [http://trac.lighttpd.net/trac/wiki/Docs:ModSecDownload mod_secdownload]&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://www.modsecurity.org/ mod_security]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || ? || [http://trac.lighttpd.net/trac/wiki/Docs%3AModMySQLVhost mod_mysql_vhost]&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://httpd.apache.org/docs/2.1/mod/mod_proxy_ajp.html mod_proxy_ajp]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxyCore mod_proxy_core (mod_proxy_backend_ajp13)]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/ModuleComparisonMatrix</id>
		<title>ModuleComparisonMatrix</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/ModuleComparisonMatrix"/>
				<updated>2012-05-03T00:31:26Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Third-Party Nginx modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- page was renamed from NginxFeatureComparisonMatrix&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module comparison matrix ==&lt;br /&gt;
&lt;br /&gt;
Looking for Nginx's mod_rewrite or mod_perl? The following table attempts to summarize modules for Nginx that are comparable to modules available for other web servers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| '''Nginx module''' || '''Apache module''' || '''Lighttpd module'''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUpstreamModule| HTTP Upstream Module]]  || [http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html mod_proxy_balancer]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxyCore mod_proxy_core]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAccessModule| Access Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_access.html mod_access]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModAccess mod_access]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAuthBasicModule| Auth Basic Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_auth.html mod_auth]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModAuth mod_auth]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAutoindexModule| AutoIndex Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_autoindex.html mod_autoindex]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModDirlisting mod_dirlisting]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpBrowserModule| Browser Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_setenvif.html mod_setenvif]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpCharsetModule| Charset Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpEmptyGifModule| Empty GIF Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpFcgiModule| FastCGI Module]]  || [http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html mod_fastcgi] , [http://fastcgi.coremail.cn/ mod_fcgid]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModFastCGI mod_fastcgi]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpGeoModule| GEO Module]]  || [http://www.maxmind.com/app/mod_geoip mod_geoip]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModGeoip mod_geoip]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpGzipModule| Gzip Compression Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_deflate.html mod_deflate]  || [http://trac.lighttpd.net/trac/wiki/Mod_Deflate mod_deflate]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpGzipStaticModule| Gzip Pre-Compression Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpHeadersModule| HTTP Headers Module]]  || [http://httpd.apache.org/docs/2.2/mod/mod_headers.html mod_headers]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModSetEnv mod_setenv]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpRefererModule| HTTP Referer Module]]  || [http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html mod_setenvif]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpLimitZoneModule| Limit Zone Module]]  || [http://dominia.org/djao/limitipconn2.html mod_limitipconn]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModEvasive mod_evasive]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpLogModule| Log Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_log_config.html mod_log_config]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModAccessLog mod_accesslog]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpMapModule| Map Module]]  || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpMemcachedModule| Memcached Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpProxyModule| Proxy Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_proxy.html mod_proxy]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxy mod_proxy]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpRewriteModule| Rewrite Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html mod_rewrite]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModRewrite mod_rewrite]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSsiModule| SSI Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_include.html mod_include]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModSSI mod_ssi]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUserIdModule| UserID Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_usertrack.html mod_usertrack]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModUserTrack mod_usertrack]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAdditionModule| Addition Module]]  || [http://tangent.org/index.pl?lastnode_id=478&amp;amp;node_id=362 mod_layout]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxEmbeddedPerlModule| Embedded Perl Module]]  || [http://perl.apache.org/ mod_perl]  || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpFlvStreamModule| FLV Module]]  || [http://journal.paul.querna.org/articles/2006/07/11/mod_flvx mod_flvx]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModFLVStreaming mod_flv_streaming]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpRealIpModule| Real IP Module]]  || [http://stderr.net/apache/rpaf/ mod_rpaf]  || [http://trac.lighttpd.net/trac/wiki/Docs/ModExtForward mod_extforward]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSslModule| SSL Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_ssl.html mod_ssl]  || [http://trac.lighttpd.net/trac/wiki/Docs%3ASSL SSL]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpStubStatusModule| Stub Status Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_status.html mod_status]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModStatus mod_status]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSubModule| Substitution Module]]  || [http://apache.webthing.com/mod_line_edit/ mod_line_edit]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpDavModule| WebDAV Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_dav.html mod_dav]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModWebDAV mod_webdav]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxUserDir| UserDir Equivalent]]  || [http://httpd.apache.org/docs/2.0/mod/mod_userdir.html mod_userdir]  || [http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs#mod_userdir mod_userdir]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Third-Party Nginx modules ==&lt;br /&gt;
&lt;br /&gt;
The following Nginx modules are not distributed with the Nginx source.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| '''Nginx module''' || '''Apache module''' || '''Lighttpd module'''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpCircleGifModule| Circle GIF Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUpstreamRequestHashModule| Upstream Hash Module]]  || ''none'' || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxy mod_proxy]&lt;br /&gt;
|-&lt;br /&gt;
| [http://xph.us/software/nginx-notice/ Notice Module]  || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgxZip| ngx_zip]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgx_rrd_graph| ngx_rrd_graph]]  || ''none'' || [http://trac.lighttpd.net/trac/wiki/Docs%3AModRRDTool mod_rrdtool]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgxSCGIModule| SCGI Module]]  || [http://quixote.python.ca/scgi.dev/ ?]  || [http://trac.lighttpd.net/trac/wiki/Docs:ModSCGI mod_scgi]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUploadProgressModule| Upload Progress Module]]  || ? || [http://trac.lighttpd.net/trac/wiki/Docs:ModUploadProgress mod_uploadprogress]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgxWSGIModule| WSGI Module]]  || [http://code.google.com/p/modwsgi/ mod_wsgi]  || ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Requested Nginx modules ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Nginx module''' || '''Apache module''' || '''Lighttpd module'''&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://httpd.apache.org/docs/2.0/mod/mod_mem_cache.html mod_mem_cache]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModMemCache mod_mem_cache]&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://www.backhand.org/mod_backhand/ mod_backhand]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxy mod_proxy]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSecureDownload| Secure Download Module]] || [http://www.synd.info/downloads/releases/ mod_auth_token]   || [http://trac.lighttpd.net/trac/wiki/Docs:ModSecDownload mod_secdownload]&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://www.modsecurity.org/ mod_security]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || ? || [http://trac.lighttpd.net/trac/wiki/Docs%3AModMySQLVhost mod_mysql_vhost]&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://httpd.apache.org/docs/2.1/mod/mod_proxy_ajp.html mod_proxy_ajp]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxyCore mod_proxy_core (mod_proxy_backend_ajp13)]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/ModuleComparisonMatrix</id>
		<title>ModuleComparisonMatrix</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/ModuleComparisonMatrix"/>
				<updated>2012-05-03T00:31:12Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Module comparison matrix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- page was renamed from NginxFeatureComparisonMatrix&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Module comparison matrix ==&lt;br /&gt;
&lt;br /&gt;
Looking for Nginx's mod_rewrite or mod_perl? The following table attempts to summarize modules for Nginx that are comparable to modules available for other web servers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| '''Nginx module''' || '''Apache module''' || '''Lighttpd module'''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUpstreamModule| HTTP Upstream Module]]  || [http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html mod_proxy_balancer]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxyCore mod_proxy_core]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAccessModule| Access Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_access.html mod_access]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModAccess mod_access]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAuthBasicModule| Auth Basic Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_auth.html mod_auth]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModAuth mod_auth]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAutoindexModule| AutoIndex Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_autoindex.html mod_autoindex]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModDirlisting mod_dirlisting]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpBrowserModule| Browser Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_setenvif.html mod_setenvif]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpCharsetModule| Charset Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpEmptyGifModule| Empty GIF Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpFcgiModule| FastCGI Module]]  || [http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html mod_fastcgi] , [http://fastcgi.coremail.cn/ mod_fcgid]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModFastCGI mod_fastcgi]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpGeoModule| GEO Module]]  || [http://www.maxmind.com/app/mod_geoip mod_geoip]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModGeoip mod_geoip]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpGzipModule| Gzip Compression Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_deflate.html mod_deflate]  || [http://trac.lighttpd.net/trac/wiki/Mod_Deflate mod_deflate]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpGzipStaticModule| Gzip Pre-Compression Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpHeadersModule| HTTP Headers Module]]  || [http://httpd.apache.org/docs/2.2/mod/mod_headers.html mod_headers]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModSetEnv mod_setenv]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpRefererModule| HTTP Referer Module]]  || [http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html mod_setenvif]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpLimitZoneModule| Limit Zone Module]]  || [http://dominia.org/djao/limitipconn2.html mod_limitipconn]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModEvasive mod_evasive]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpLogModule| Log Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_log_config.html mod_log_config]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModAccessLog mod_accesslog]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpMapModule| Map Module]]  || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpMemcachedModule| Memcached Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpProxyModule| Proxy Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_proxy.html mod_proxy]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxy mod_proxy]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpRewriteModule| Rewrite Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html mod_rewrite]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModRewrite mod_rewrite]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSsiModule| SSI Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_include.html mod_include]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModSSI mod_ssi]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUserIdModule| UserID Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_usertrack.html mod_usertrack]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModUserTrack mod_usertrack]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpAdditionModule| Addition Module]]  || [http://tangent.org/index.pl?lastnode_id=478&amp;amp;node_id=362 mod_layout]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxEmbeddedPerlModule| Embedded Perl Module]]  || [http://perl.apache.org/ mod_perl]  || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpFlvStreamModule| FLV Module]]  || [http://journal.paul.querna.org/articles/2006/07/11/mod_flvx mod_flvx]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModFLVStreaming mod_flv_streaming]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpRealIpModule| Real IP Module]]  || [http://stderr.net/apache/rpaf/ mod_rpaf]  || [http://trac.lighttpd.net/trac/wiki/Docs/ModExtForward mod_extforward]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSslModule| SSL Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_ssl.html mod_ssl]  || [http://trac.lighttpd.net/trac/wiki/Docs%3ASSL SSL]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpStubStatusModule| Stub Status Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_status.html mod_status]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModStatus mod_status]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSubModule| Substitution Module]]  || [http://apache.webthing.com/mod_line_edit/ mod_line_edit]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpDavModule| WebDAV Module]]  || [http://httpd.apache.org/docs/2.0/mod/mod_dav.html mod_dav]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModWebDAV mod_webdav]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxUserDir| UserDir Equivalent]]  || [http://httpd.apache.org/docs/2.0/mod/mod_userdir.html mod_userdir]  || [http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs#mod_userdir mod_userdir]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Third-Party Nginx modules ==&lt;br /&gt;
&lt;br /&gt;
The following Nginx modules are not distributed with the Nginx source.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Nginx module''' || '''Apache module''' || '''Lighttpd module'''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpCircleGifModule| Circle GIF Module]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUpstreamRequestHashModule| Upstream Hash Module]]  || ''none'' || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxy mod_proxy]&lt;br /&gt;
|-&lt;br /&gt;
| [http://xph.us/software/nginx-notice/ Notice Module]  || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgxZip| ngx_zip]]  || ''none'' || ''none''&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgx_rrd_graph| ngx_rrd_graph]]  || ''none'' || [http://trac.lighttpd.net/trac/wiki/Docs%3AModRRDTool mod_rrdtool]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgxSCGIModule| SCGI Module]]  || [http://quixote.python.ca/scgi.dev/ ?]  || [http://trac.lighttpd.net/trac/wiki/Docs:ModSCGI mod_scgi]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpUploadProgressModule| Upload Progress Module]]  || ? || [http://trac.lighttpd.net/trac/wiki/Docs:ModUploadProgress mod_uploadprogress]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgxWSGIModule| WSGI Module]]  || [http://code.google.com/p/modwsgi/ mod_wsgi]  || ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Requested Nginx modules ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Nginx module''' || '''Apache module''' || '''Lighttpd module'''&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://httpd.apache.org/docs/2.0/mod/mod_mem_cache.html mod_mem_cache]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModMemCache mod_mem_cache]&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://www.backhand.org/mod_backhand/ mod_backhand]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxy mod_proxy]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxHttpSecureDownload| Secure Download Module]] || [http://www.synd.info/downloads/releases/ mod_auth_token]   || [http://trac.lighttpd.net/trac/wiki/Docs:ModSecDownload mod_secdownload]&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://www.modsecurity.org/ mod_security]  || ?&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || ? || [http://trac.lighttpd.net/trac/wiki/Docs%3AModMySQLVhost mod_mysql_vhost]&lt;br /&gt;
|-&lt;br /&gt;
| ''none'' || [http://httpd.apache.org/docs/2.1/mod/mod_proxy_ajp.html mod_proxy_ajp]  || [http://trac.lighttpd.net/trac/wiki/Docs%3AModProxyCore mod_proxy_core (mod_proxy_backend_ajp13)]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/3rdPartyModules</id>
		<title>3rdPartyModules</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/3rdPartyModules"/>
				<updated>2012-05-03T00:26:13Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Third party modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Third party modules =&lt;br /&gt;
These modules are not officially supported and may not be compatible across versions of Nginx. Nevertheless many of them may prove useful to many people. Enjoy at your own risk.&lt;br /&gt;
&lt;br /&gt;
== Compiling third party modules ==&lt;br /&gt;
Modules are typically added by compiling them along with the Nginx source.&lt;br /&gt;
&lt;br /&gt;
From the Nginx source directory, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --add-module=/path/to/module1/source \&lt;br /&gt;
            --add-module=/path/to/module2/source&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use as many &amp;lt;code&amp;gt;--add-module&amp;lt;/code&amp;gt; arguments as needed.&lt;br /&gt;
&lt;br /&gt;
Be aware that some modules may require additional libraries to be installed on your system.&lt;br /&gt;
&lt;br /&gt;
== Writing your own module ==&lt;br /&gt;
[http://www.evanmiller.org/ Evan Miller] has written the [http://www.evanmiller.org/nginx-modules-guide.html definitive guide] to Nginx module development. But some parts of it are a little out of date. You've been warned.&lt;br /&gt;
&lt;br /&gt;
A github search turned up the [http://github.com/simpl/ngx_devel_kit Nginx Development Kit].  It seems to be more up to date.&lt;br /&gt;
&lt;br /&gt;
See also the tools at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
= Known modules =&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| [[AcceptLanguageModule|Accept Language]]&lt;br /&gt;
| Parses the &amp;lt;code&amp;gt;Accept-Language&amp;lt;/code&amp;gt; header and gives the most suitable locale from a list of supported locales.&lt;br /&gt;
| Guillaume Maury&lt;br /&gt;
| [http://github.com/giom/nginx_accept_language_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAccessKeyModule|Access Key]]&lt;br /&gt;
| Denies access unless the request URL contains an access key. &lt;br /&gt;
| Mykola Grechukh&lt;br /&gt;
| [http://wiki.nginx.org/File:Nginx-accesskey-2.0.3.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/rsms/afcgi AFCGI]&lt;br /&gt;
| Asynchronous/multiplexing FastCGI for nginx (incl. ref server implementation)&lt;br /&gt;
| [http://github.com/rsms rsms]&lt;br /&gt;
| [http://github.com/rsms/afcgi Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/array-var-nginx-module Array Var]&lt;br /&gt;
| Add support for array variables to nginx config files&lt;br /&gt;
| [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/agentzh/array-var-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAuthDigestModule|Auth Digest]]&lt;br /&gt;
| HTTP Digest Authentication.&lt;br /&gt;
| [http://samizdat.cc Christian Swinehart]&lt;br /&gt;
| [https://github.com/samizdatco/nginx-http-auth-digest Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://web.iti.upv.es/~sto/nginx/ Auth PAM]&lt;br /&gt;
| HTTP Basic Authentication using PAM.&lt;br /&gt;
| Sergio Talens-Oliag&lt;br /&gt;
| [http://web.iti.upv.es/~sto/nginx/ngx_http_auth_pam_module-1.2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_auth_request_module/ Auth Request]&lt;br /&gt;
| Allows authorization based on subrequest result.&lt;br /&gt;
| [http://mdounin.ru Maxim Dounin]&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_auth_request_module/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib Auto Lib]&lt;br /&gt;
| Reuse pre-compiled/installed versions of OpenSSL, PCRE and Zlib without re-compiling them each time Nginx is compiled&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/anomalizer/ngx_aws_auth AWS auth]&lt;br /&gt;
| Generate security headers for GET requests to Amazon S3.&lt;br /&gt;
| [http://anomalizer.net/statistically-incorrect Arvind Jayaprakash]&lt;br /&gt;
| [http://github.com/anomalizer/ngx_aws_auth/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_cache_purge/ Cache Purge]&lt;br /&gt;
| Module adding ability to purge content from FastCGI, proxy, and uWSGI caches.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_cache_purge/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpChunkinModule|Chunkin]]&lt;br /&gt;
| HTTP 1.1 chunked-encoding request body support for Nginx.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/chunkin-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCircleGifModule|Circle GIF]]&lt;br /&gt;
| Generates simple circle images with the colors and size specified in the URL.&lt;br /&gt;
| [http://www.evanmiller.org/ Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/nginx_circle_gif/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://ngx-ctpp.vbart.info/ CT++]&lt;br /&gt;
| Embeds  [http://ctpp.havoc.ru/en/whatis.html CT++ (or CTPP2)]  VM, the execution part of a high-performance template engine system.&lt;br /&gt;
| [http://vbart.info/ Valentin V. Bartenev]&lt;br /&gt;
| [http://dl.vbart.ru/ngx-ctpp/ngx_ctpp2-0.5.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit Development Kit]&lt;br /&gt;
| An extension to the core functionality of Nginx which can be used as a basis for other modules&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDrizzleModule|Drizzle]]&lt;br /&gt;
| Make nginx talk directly to mysql and drizzle by libdrizzle.&lt;br /&gt;
| [http://github.com/chaoslawful/ chaoslawful], [http://agentzh.org/ agentzh], Piotr Sikora&lt;br /&gt;
| [http://github.com/chaoslawful/drizzle-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/kali/nginx-dynamic-etags Dynamic etags]&lt;br /&gt;
| Nginx module for etags on dynamic content&lt;br /&gt;
| [http://github.com/kali kali]&lt;br /&gt;
| [http://github.com/kali/nginx-dynamic-etags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpEchoModule|Echo]]&lt;br /&gt;
| Brings &amp;quot;echo&amp;quot;, &amp;quot;sleep&amp;quot;, &amp;quot;time&amp;quot;, &amp;quot;exec&amp;quot;, and more shell-style goodies to Nginx config file.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/echo-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/bpaquet/ngx_http_enhanced_memcached_module Enhanced Memcached]&lt;br /&gt;
| Repackaging of the standard memcached module to add features : custom http headers, hash keys, store entries in memcached with post http request, flush, key namespace&lt;br /&gt;
| [https://github.com/bpaquet Bertrand Paquet]&lt;br /&gt;
| [https://github.com/bpaquet/ngx_http_enhanced_memcached_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/encrypted-session-nginx-module Encrypted Session]&lt;br /&gt;
| encrypt and decrypt nginx variable values, can be used for light-weight session-based authentication&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/encrypted-session-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/vkholodkov/nginx-eval-module Eval]&lt;br /&gt;
| A module for evaluating memcached or proxy response into variable.&lt;br /&gt;
| [http://github.com/vkholodkov/ vkholodkov]&lt;br /&gt;
| [http://github.com/vkholodkov/nginx-eval-module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/nginx-eval-module Eval (agentzh's fork)]&lt;br /&gt;
| Enhanced ngx_eval that can capture arbitrary subrequest's responses into nginx variables (can even with output filters enabled)&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/nginx-eval-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Expressz|Expressz]]&lt;br /&gt;
| First of the Expressz lineup modules, Off-loading image and file/stream compression to (a) GPU(s).&lt;br /&gt;
| [http://www.acronymlabs.com/ Jason Giedymin at AcronymLabs]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/ry/nginx-ey-balancer/tree/master EY Balancer]&lt;br /&gt;
| Adds a request queue to Nginx that allows the limiting of concurrent requests passed to the upstream.&lt;br /&gt;
| Ry Dahl&lt;br /&gt;
| [http://github.com/ry/nginx-ey-balancer/tarball/master Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/NgxFancyIndex Fancy Indexes]&lt;br /&gt;
| Like the built-in [[Modules#HTTP_Auto_Index|autoindex]] module, but fancier.&lt;br /&gt;
| Adrian Perez de Castro&lt;br /&gt;
| [http://gitorious.org/ngx-fancyindex/ngx-fancyindex Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFormInputModule|Form Input]]&lt;br /&gt;
| This module reads HTTP POST request body and parse the arguments into nginx variables.&lt;br /&gt;
| [http://vimedia.org/ Calio], [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/calio/form-input-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Http3rdPartyGeoIPModule|GeoIP]]&lt;br /&gt;
| Country code lookups via the [http://www.maxmind.com/ MaxMind] GeoIP API.&lt;br /&gt;
| [http://www.spilgames.com/ SPIL GAMES]&lt;br /&gt;
| [[File:Nginx-geoip-0.2.tar.gz|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/mdirolf/nginx-gridfs GridFS]&lt;br /&gt;
| Nginx module for serving files from MongoDB's GridFS.&lt;br /&gt;
| [http://github.com/mdirolf mdirolf]&lt;br /&gt;
| [http://github.com/mdirolf/nginx-gridfs Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHeadersMoreModule|Headers More]]&lt;br /&gt;
| Set and clear input and output headers...more than &amp;quot;add&amp;quot;!&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/headers-more-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHealthcheckModule|HTTP Healthcheck]]&lt;br /&gt;
| Health check HTTP servers inside an upstream so you don't forward requests to bad hosts&lt;br /&gt;
| Jack Lindamood&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Lax/ngx_http_accounting_module HTTP Accounting]&lt;br /&gt;
| Realtime netflow and status code monitor solution for nginx, need less memory and cpu than realtime log analyzing. Useful for http traffic accounting based on nginx config logic ( per-location-traffic or per-server-traffic ).&lt;br /&gt;
| [http://www.liulantao.com/portal/ Liu Lantao]&lt;br /&gt;
| [https://github.com/Lax/ngx_http_accounting_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://pushmodule.slact.net/ HTTP Push]&lt;br /&gt;
| Turn Nginx into an adept long-polling HTTP Push (Comet) server.&lt;br /&gt;
| Leo Ponomarev&lt;br /&gt;
| [http://pushmodule.slact.net/downloads/nginx_http_push_module-0.69.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpPushStreamModule|HTTP Push Stream]]&lt;br /&gt;
| Turn Nginx into an adept stream HTTP Push (Comet) server.&lt;br /&gt;
| [https://github.com/wandenberg Wandenberg Peixoto]&lt;br /&gt;
| [https://github.com/wandenberg/nginx-push-stream-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRedis|HTTP Redis]]&lt;br /&gt;
| [http://redis.io/ Redis] support.&lt;br /&gt;
| Sergey A. Osokin &amp;lt;osa@FreeBSD.ORG.ru&amp;gt;&lt;br /&gt;
| [http://people.FreeBSD.ORG/~osa/ngx_http_redis-0.3.5.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kung-fu-tzu/ngx_http_js_module#readme JavaScript]&lt;br /&gt;
| Embedding [http://www.mozilla.org/js/spidermonkey/ SpiderMonkey]. Full port of Perl module and more.&lt;br /&gt;
| [https://github.com/kung-fu-tzu Peter Leonov]&lt;br /&gt;
| [https://github.com/kung-fu-tzu/ngx_http_js_module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpIconvModule|Iconv]]&lt;br /&gt;
| A character encoding conversion nginx module using libiconv.&lt;br /&gt;
| [http://vimedia.org/ Calio], [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/calio/iconv-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLogRequestSpeed|Log Request Speed]]&lt;br /&gt;
| Log the time it took to process each request.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/replay/ngx_http_lower_upper_case Lower Upper Case]&lt;br /&gt;
| Simple module to upper-/lowercase a string in the Nginx config&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [https://github.com/replay/ngx_http_lower_upper_case Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpLuaModule Lua]&lt;br /&gt;
| Embed the power of Lua into nginx&lt;br /&gt;
| [http://github.com/chaoslawful chaoslawful], [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/chaoslawful/lua-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/alacner/nginx_lua_module Luafile]&lt;br /&gt;
| Embed the power of Lua into nginx very easy.&lt;br /&gt;
| [http://alacner.com alacner]&lt;br /&gt;
| [https://github.com/alacner/nginx_lua_module/tarball/master Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMemcModule|Memc]]&lt;br /&gt;
| An extended version of the standard memcached module that supports set, add, delete, and many more memcached commands.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/memc-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.grid.net.ru/nginx/mogilefs.en.html Mogilefs]&lt;br /&gt;
| Implements a MogileFS client, provides a replace to the Perlbal reverse proxy of the original MogileFS.&lt;br /&gt;
| Valery Kholodkov&lt;br /&gt;
| [http://www.grid.net.ru/nginx/download/nginx_mogilefs_module-1.0.2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[MP4StreamingLite|MP4 Streaming Lite]]&lt;br /&gt;
| Will seek to a certain time within H.264/MP4 files when provided with a &amp;quot;start&amp;quot; parameter in the URL. &lt;br /&gt;
| Jiang Hong&lt;br /&gt;
| [[MP4StreamingLite|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://naxsi.googlecode.com Naxsi]&lt;br /&gt;
| Web Application Firewall for nginx.&lt;br /&gt;
| Thibault Koechlin&lt;br /&gt;
| [http://naxsi.googlecode.com Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://xph.us/software/nginx-notice/ Notice]&lt;br /&gt;
| Serve static file to POST requests.&lt;br /&gt;
| Keith Rarick&lt;br /&gt;
| [http://xph.us/software/nginx-notice/nginx-notice-2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpOwnerMatchModule OwnerMatch]&lt;br /&gt;
| This module provides a simple file owner-based access control.&lt;br /&gt;
| [https://heiher.info Heiher]&lt;br /&gt;
| [http://heiher.info/sftp/files/Nginx-0.8.54-Add-OwnerMatch-module.patch Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://mauro-stettler.blogspot.com/2011/08/pecl-memcache-standard-loadbalancer-for.html PHP-Memache Standard Hash]&lt;br /&gt;
| This is a loadbalancer that imitates the PHP-Memcache standard hash's behaviour&lt;br /&gt;
| Mauro Stettler&lt;br /&gt;
| [https://github.com/replay/ngx_http_php_memcache_standard_balancer Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/replay/ngx_http_php_session PHP Session Parser]&lt;br /&gt;
| Extract values that are stored in a serialized PHP session&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [http://github.com/replay/ngx_http_php_session Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_postgres/ Postgres]&lt;br /&gt;
| Upstream module that allows nginx to communicate directly with PostgreSQL database.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_postgres/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://vitki.net/pubcookie Pubcookie]&lt;br /&gt;
| Adds [http://www.pubcookie.org Pubcookie]-based cross-site authentication method to Nginx.&lt;br /&gt;
| [http://www.vitki.net/ Vitki]&lt;br /&gt;
| [http://vitki.net/pubcookie#Installation Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/rds-csv-nginx-module RDS CSV]&lt;br /&gt;
| Help [http://github.com/chaoslawful/drizzle-nginx-module ngx_drizzle], [http://github.com/FRiCKLE/ngx_postgres/ ngx_postgres], and others emit Comma-Separated Values (CSV).&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/rds-csv-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/rds-json-nginx-module RDS JSON]&lt;br /&gt;
| Help [http://github.com/chaoslawful/drizzle-nginx-module ngx_drizzle], [http://github.com/FRiCKLE/ngx_postgres/ ngx_postgres], and others emit JSON data.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/rds-json-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRedis2Module|Redis2]]&lt;br /&gt;
| Upstream module for the full [http://redis.io/ Redis] 2.0 protocol&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/redis2-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/yuri-gushin/Roboo Roboo]&lt;br /&gt;
| HTTP Robot mitigator utilizing advanced non-interactive HTTP challenge/response mechanisms&lt;br /&gt;
| [http://www.ecl-labs.org/ Yuri Gushin, Alex Behar]&lt;br /&gt;
| [https://github.com/yuri-gushin/Roboo/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgx_rrd_graph|RRD Graph]]&lt;br /&gt;
| This module provides an HTTP interface to [http://oss.oetiker.ch/rrdtool/ RRDtool]'s graphing facilities.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/mod_rrd_graph Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSecureDownload|Secure Download]]&lt;br /&gt;
| Create expiring links.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler], Szymon Modzelewski&lt;br /&gt;
| [http://github.com/replay/ngx_http_secure_download Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/liseen/set-cconv-nginx-module/ Set CConv]&lt;br /&gt;
| Conversion between Simplified Chinese and Traditional Chinese at rewrite phase&lt;br /&gt;
| [http://github.com/liseen/ Liseen Wan]&lt;br /&gt;
| [http://github.com/liseen/set-cconv-nginx-module/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_hash Set Hash]&lt;br /&gt;
| Set a variable to a variety of hash functions (upper/lowercase), including MD5, SHA1 and Murmurhash 2&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_hash/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_lang Set Lang]&lt;br /&gt;
| Set a variable to indicate the language based on a variety of sources including cookies, GET/POST variables, Accept Language header and more&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_lang/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSetMiscModule Set Misc]&lt;br /&gt;
| Various set_xxx directives added to nginx's rewrite module (md5/sha1, sql/json quoting, and many more)&lt;br /&gt;
| [http://agentzh.org agentzh], [http://vimedia.org/ Calio], [http://github.com/shrimp/ shrimp]&lt;br /&gt;
| [http://github.com/agentzh/set-misc-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://nginx-sflow-module.googlecode.com sFlow]&lt;br /&gt;
| Operational performance monitoring with standard [http://sflow.org sFlow] protocol&lt;br /&gt;
| Neil McKee&lt;br /&gt;
| [http://code.google.com/p/nginx-sflow-module/downloads/list Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_slowfs_cache/ SlowFS Cache]&lt;br /&gt;
| Module adding ability to cache static files.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_slowfs_cache/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/muhgatus/spnego-http-auth-nginx-module SPNEGO]&lt;br /&gt;
| Support for SPNEGO/gssapi in nginx.&lt;br /&gt;
| [https://github.com/mike503 mike503]/[https://github.com/muhgatus/ muhgatus]&lt;br /&gt;
| [https://github.com/muhgatus/spnego-http-auth-nginx-module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSRCacheModule SR Cache]&lt;br /&gt;
| Transparent subrequest-based caching layout for arbitrary nginx locations (can be used with ngx_memc + memcached!)&lt;br /&gt;
| [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/agentzh/srcache-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/mikewest/nginx-static-etags Static etags]&lt;br /&gt;
| Nginx doesn't generate etags for static content. I'd like it to. Let's see if I can remember some C from college.&lt;br /&gt;
| [http://github.com/mikewest mikewest]&lt;br /&gt;
| [http://github.com/mikewest/nginx-static-etags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/zebrafishlabs/nginx-statsd Statsd]&lt;br /&gt;
| Adds the ability for Nginx to interacting with statsd.&lt;br /&gt;
| [https://github.com/zebrafishlabs zebrafishlabs]&lt;br /&gt;
| [https://github.com/zebrafishlabs/nginx-statsd Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://code.google.com/p/nginx-sticky-module/ Sticky upstream]&lt;br /&gt;
| A nginx module to add an upstream server persistance using cookies.&lt;br /&gt;
| [http://code.google.com/u/jerome@loyet.net/ Jérôme Loyet]&lt;br /&gt;
| [http://code.google.com/p/nginx-sticky-module/downloads/list Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpStripModule|Strip]]&lt;br /&gt;
| Whitespace remover.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [[File:mod_strip-0.1.tar.gz|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSubsModule Substitutions]&lt;br /&gt;
| A filter module which can do both regular expression and fixed string substitutions on response bodies.&lt;br /&gt;
| [http://yaoweibin.cn Weibin Yao]&lt;br /&gt;
| [http://code.google.com/p/substitutions4nginx/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_supervisord/ Supervisord]&lt;br /&gt;
| Module providing nginx with API to communicate with supervisord and manage (start/stop) backends on-demand.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_supervisord/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.grid.net.ru/nginx/upload.en.html Upload]&lt;br /&gt;
| Parses &amp;lt;code&amp;gt;multipart/form-data&amp;lt;/code&amp;gt; allowing arbitrary handling of uploaded files.&lt;br /&gt;
| Valery Kholodkov&lt;br /&gt;
| [http://www.grid.net.ru/nginx/upload.en.html#download Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUploadProgressModule|Upload Progress]]&lt;br /&gt;
| Tracks and reports upload progress.&lt;br /&gt;
| Brice Figureau&lt;br /&gt;
| [http://github.com/masterzen/nginx-upload-progress-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamConsistentHash|Upstream Consistent Hash]]&lt;br /&gt;
| Select backend based on Consistent hash ring.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [http://github.com/replay/ngx_http_consistent_hash Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamFairModule|Upstream Fair Balancer]]&lt;br /&gt;
| Sends an incoming request to the least-busy backend server, rather than distributing requests round-robin.&lt;br /&gt;
| Gregory Nosek&lt;br /&gt;
| [http://github.com/gnosek/nginx-upstream-fair Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamRequestHashModule|Upstream Hash]]&lt;br /&gt;
| Provides simple upstream load distribution by hashing a configurable variable.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/nginx_upstream_hash/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamKeepaliveModule|Upstream Keepalive]]&lt;br /&gt;
| Provides keep-alive connections to memcached upstreams.&lt;br /&gt;
| [http://mdounin.ru Maxim Dounin]&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_upstream_keepalive/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/wandenberg/nginx-video-thumbextractor-module Video Thumb Extractor]&lt;br /&gt;
| Nginx module to extract thumbs from a video file.&lt;br /&gt;
| [https://github.com/wandenberg Wandenberg Peixoto]&lt;br /&gt;
| [https://github.com/wandenberg/nginx-video-thumbextractor-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NgxWSGIModule|WSGI]]&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Wsgi WSGI] implementation for Nginx.  Allows easy deployment of Python applications.&lt;br /&gt;
| Manlio Perillo&lt;br /&gt;
| [http://hg.mperillo.ath.cx/nginx/mod_wsgi/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/xss-nginx-module XSS]&lt;br /&gt;
| Native support for cross-site scripting (XSS) in an nginx.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/xss-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NgxZip|Zip]]&lt;br /&gt;
| Assemble ZIP archives on the fly.&lt;br /&gt;
| [http://www.evanmiller.org/ Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/mod_zip/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Extended status module|Extended status module]]&lt;br /&gt;
| Extended status module for nginx&lt;br /&gt;
| 최영석(Choi Youngseok), 李金虎(Li Jinhu)&lt;br /&gt;
| [http://github.com/zealot83/ngx_http_extended_status_module Download]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools for module developers =&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib Nginx Auto Lib Core]&lt;br /&gt;
| Reusable file for module developers to include with their modules to easily and consistently handle including external libraries; used in the Auto Lib module and included in the Nginx Development Kit&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit Nginx Development Kit]&lt;br /&gt;
| An extension to the core functionality of Nginx which can be used as a basis for other modules&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit/downloads Download]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Third party patches =&lt;br /&gt;
These patches must be applied to the Nginx source code tree.   There's no guarantee these patches will apply to a particular version of Nginx.&lt;br /&gt;
&lt;br /&gt;
As with third party modules, these patches are not officially supported.  Your mileage may vary.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Log to syslog.&lt;br /&gt;
| Marlon de Boer&lt;br /&gt;
| [http://bugs.gentoo.org/attachment.cgi?id=197180 Patch against 0.8.4] (works on 0.7.x and 0.8.x) | [http://dl.dropbox.com/u/5836407/Patches/Nginx_0.8.49-syslog-support.txt Patch for version 0.8.49 with 'sh is not bash' fix] | [https://github.com/yaoweibin/nginx_syslog_patch Syslog Patch for Nginx 0.8.54+]&lt;br /&gt;
|-&lt;br /&gt;
| Disable nginx's memory pool to help valgrind and other tools (for nginx C developers only)&lt;br /&gt;
| [http://github.com/shrimp/ shrimp], [http://agentzh.spaces.live.com/ agentzh]&lt;br /&gt;
| [http://github.com/shrimp/no-pool-nginx Git repository for the patch]&lt;br /&gt;
|-&lt;br /&gt;
| SSL Session tickets distributed via memcached&lt;br /&gt;
| [http://hezmatt.org/~mpalmer/blog/2011/07/24/followup-to-ssl-session-caching-with-nginx.html Matthew Palmer]&lt;br /&gt;
| [https://github.com/mpalmer/nginx Git repository for changes]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* [http://github.com/search?type=Repositories&amp;amp;language=c&amp;amp;q=nginx&amp;amp;repo=&amp;amp;langOverride=&amp;amp;x=13&amp;amp;y=17&amp;amp;start_value=1 github search]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/3rdPartyModules</id>
		<title>3rdPartyModules</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/3rdPartyModules"/>
				<updated>2012-05-03T00:24:44Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Third party modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Third party modules =&lt;br /&gt;
These modules are not officially supported. Nevertheless many of them may prove useful to many people. Enjoy at your own risk.&lt;br /&gt;
&lt;br /&gt;
== Compiling third party modules ==&lt;br /&gt;
Modules are typically added by compiling them along with the Nginx source.&lt;br /&gt;
&lt;br /&gt;
From the Nginx source directory, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --add-module=/path/to/module1/source \&lt;br /&gt;
            --add-module=/path/to/module2/source&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use as many &amp;lt;code&amp;gt;--add-module&amp;lt;/code&amp;gt; arguments as needed.&lt;br /&gt;
&lt;br /&gt;
Be aware that some modules may require additional libraries to be installed on your system.&lt;br /&gt;
&lt;br /&gt;
== Writing your own module ==&lt;br /&gt;
[http://www.evanmiller.org/ Evan Miller] has written the [http://www.evanmiller.org/nginx-modules-guide.html definitive guide] to Nginx module development. But some parts of it are a little out of date. You've been warned.&lt;br /&gt;
&lt;br /&gt;
A github search turned up the [http://github.com/simpl/ngx_devel_kit Nginx Development Kit].  It seems to be more up to date.&lt;br /&gt;
&lt;br /&gt;
See also the tools at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
= Known modules =&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| [[AcceptLanguageModule|Accept Language]]&lt;br /&gt;
| Parses the &amp;lt;code&amp;gt;Accept-Language&amp;lt;/code&amp;gt; header and gives the most suitable locale from a list of supported locales.&lt;br /&gt;
| Guillaume Maury&lt;br /&gt;
| [http://github.com/giom/nginx_accept_language_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAccessKeyModule|Access Key]]&lt;br /&gt;
| Denies access unless the request URL contains an access key. &lt;br /&gt;
| Mykola Grechukh&lt;br /&gt;
| [http://wiki.nginx.org/File:Nginx-accesskey-2.0.3.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/rsms/afcgi AFCGI]&lt;br /&gt;
| Asynchronous/multiplexing FastCGI for nginx (incl. ref server implementation)&lt;br /&gt;
| [http://github.com/rsms rsms]&lt;br /&gt;
| [http://github.com/rsms/afcgi Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/array-var-nginx-module Array Var]&lt;br /&gt;
| Add support for array variables to nginx config files&lt;br /&gt;
| [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/agentzh/array-var-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAuthDigestModule|Auth Digest]]&lt;br /&gt;
| HTTP Digest Authentication.&lt;br /&gt;
| [http://samizdat.cc Christian Swinehart]&lt;br /&gt;
| [https://github.com/samizdatco/nginx-http-auth-digest Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://web.iti.upv.es/~sto/nginx/ Auth PAM]&lt;br /&gt;
| HTTP Basic Authentication using PAM.&lt;br /&gt;
| Sergio Talens-Oliag&lt;br /&gt;
| [http://web.iti.upv.es/~sto/nginx/ngx_http_auth_pam_module-1.2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_auth_request_module/ Auth Request]&lt;br /&gt;
| Allows authorization based on subrequest result.&lt;br /&gt;
| [http://mdounin.ru Maxim Dounin]&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_auth_request_module/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib Auto Lib]&lt;br /&gt;
| Reuse pre-compiled/installed versions of OpenSSL, PCRE and Zlib without re-compiling them each time Nginx is compiled&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/anomalizer/ngx_aws_auth AWS auth]&lt;br /&gt;
| Generate security headers for GET requests to Amazon S3.&lt;br /&gt;
| [http://anomalizer.net/statistically-incorrect Arvind Jayaprakash]&lt;br /&gt;
| [http://github.com/anomalizer/ngx_aws_auth/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_cache_purge/ Cache Purge]&lt;br /&gt;
| Module adding ability to purge content from FastCGI, proxy, and uWSGI caches.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_cache_purge/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpChunkinModule|Chunkin]]&lt;br /&gt;
| HTTP 1.1 chunked-encoding request body support for Nginx.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/chunkin-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCircleGifModule|Circle GIF]]&lt;br /&gt;
| Generates simple circle images with the colors and size specified in the URL.&lt;br /&gt;
| [http://www.evanmiller.org/ Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/nginx_circle_gif/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://ngx-ctpp.vbart.info/ CT++]&lt;br /&gt;
| Embeds  [http://ctpp.havoc.ru/en/whatis.html CT++ (or CTPP2)]  VM, the execution part of a high-performance template engine system.&lt;br /&gt;
| [http://vbart.info/ Valentin V. Bartenev]&lt;br /&gt;
| [http://dl.vbart.ru/ngx-ctpp/ngx_ctpp2-0.5.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit Development Kit]&lt;br /&gt;
| An extension to the core functionality of Nginx which can be used as a basis for other modules&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDrizzleModule|Drizzle]]&lt;br /&gt;
| Make nginx talk directly to mysql and drizzle by libdrizzle.&lt;br /&gt;
| [http://github.com/chaoslawful/ chaoslawful], [http://agentzh.org/ agentzh], Piotr Sikora&lt;br /&gt;
| [http://github.com/chaoslawful/drizzle-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/kali/nginx-dynamic-etags Dynamic etags]&lt;br /&gt;
| Nginx module for etags on dynamic content&lt;br /&gt;
| [http://github.com/kali kali]&lt;br /&gt;
| [http://github.com/kali/nginx-dynamic-etags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpEchoModule|Echo]]&lt;br /&gt;
| Brings &amp;quot;echo&amp;quot;, &amp;quot;sleep&amp;quot;, &amp;quot;time&amp;quot;, &amp;quot;exec&amp;quot;, and more shell-style goodies to Nginx config file.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/echo-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/bpaquet/ngx_http_enhanced_memcached_module Enhanced Memcached]&lt;br /&gt;
| Repackaging of the standard memcached module to add features : custom http headers, hash keys, store entries in memcached with post http request, flush, key namespace&lt;br /&gt;
| [https://github.com/bpaquet Bertrand Paquet]&lt;br /&gt;
| [https://github.com/bpaquet/ngx_http_enhanced_memcached_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/encrypted-session-nginx-module Encrypted Session]&lt;br /&gt;
| encrypt and decrypt nginx variable values, can be used for light-weight session-based authentication&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/encrypted-session-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/vkholodkov/nginx-eval-module Eval]&lt;br /&gt;
| A module for evaluating memcached or proxy response into variable.&lt;br /&gt;
| [http://github.com/vkholodkov/ vkholodkov]&lt;br /&gt;
| [http://github.com/vkholodkov/nginx-eval-module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/nginx-eval-module Eval (agentzh's fork)]&lt;br /&gt;
| Enhanced ngx_eval that can capture arbitrary subrequest's responses into nginx variables (can even with output filters enabled)&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/nginx-eval-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Expressz|Expressz]]&lt;br /&gt;
| First of the Expressz lineup modules, Off-loading image and file/stream compression to (a) GPU(s).&lt;br /&gt;
| [http://www.acronymlabs.com/ Jason Giedymin at AcronymLabs]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/ry/nginx-ey-balancer/tree/master EY Balancer]&lt;br /&gt;
| Adds a request queue to Nginx that allows the limiting of concurrent requests passed to the upstream.&lt;br /&gt;
| Ry Dahl&lt;br /&gt;
| [http://github.com/ry/nginx-ey-balancer/tarball/master Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/NgxFancyIndex Fancy Indexes]&lt;br /&gt;
| Like the built-in [[Modules#HTTP_Auto_Index|autoindex]] module, but fancier.&lt;br /&gt;
| Adrian Perez de Castro&lt;br /&gt;
| [http://gitorious.org/ngx-fancyindex/ngx-fancyindex Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFormInputModule|Form Input]]&lt;br /&gt;
| This module reads HTTP POST request body and parse the arguments into nginx variables.&lt;br /&gt;
| [http://vimedia.org/ Calio], [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/calio/form-input-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Http3rdPartyGeoIPModule|GeoIP]]&lt;br /&gt;
| Country code lookups via the [http://www.maxmind.com/ MaxMind] GeoIP API.&lt;br /&gt;
| [http://www.spilgames.com/ SPIL GAMES]&lt;br /&gt;
| [[File:Nginx-geoip-0.2.tar.gz|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/mdirolf/nginx-gridfs GridFS]&lt;br /&gt;
| Nginx module for serving files from MongoDB's GridFS.&lt;br /&gt;
| [http://github.com/mdirolf mdirolf]&lt;br /&gt;
| [http://github.com/mdirolf/nginx-gridfs Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHeadersMoreModule|Headers More]]&lt;br /&gt;
| Set and clear input and output headers...more than &amp;quot;add&amp;quot;!&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/headers-more-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHealthcheckModule|HTTP Healthcheck]]&lt;br /&gt;
| Health check HTTP servers inside an upstream so you don't forward requests to bad hosts&lt;br /&gt;
| Jack Lindamood&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Lax/ngx_http_accounting_module HTTP Accounting]&lt;br /&gt;
| Realtime netflow and status code monitor solution for nginx, need less memory and cpu than realtime log analyzing. Useful for http traffic accounting based on nginx config logic ( per-location-traffic or per-server-traffic ).&lt;br /&gt;
| [http://www.liulantao.com/portal/ Liu Lantao]&lt;br /&gt;
| [https://github.com/Lax/ngx_http_accounting_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://pushmodule.slact.net/ HTTP Push]&lt;br /&gt;
| Turn Nginx into an adept long-polling HTTP Push (Comet) server.&lt;br /&gt;
| Leo Ponomarev&lt;br /&gt;
| [http://pushmodule.slact.net/downloads/nginx_http_push_module-0.69.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpPushStreamModule|HTTP Push Stream]]&lt;br /&gt;
| Turn Nginx into an adept stream HTTP Push (Comet) server.&lt;br /&gt;
| [https://github.com/wandenberg Wandenberg Peixoto]&lt;br /&gt;
| [https://github.com/wandenberg/nginx-push-stream-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRedis|HTTP Redis]]&lt;br /&gt;
| [http://redis.io/ Redis] support.&lt;br /&gt;
| Sergey A. Osokin &amp;lt;osa@FreeBSD.ORG.ru&amp;gt;&lt;br /&gt;
| [http://people.FreeBSD.ORG/~osa/ngx_http_redis-0.3.5.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kung-fu-tzu/ngx_http_js_module#readme JavaScript]&lt;br /&gt;
| Embedding [http://www.mozilla.org/js/spidermonkey/ SpiderMonkey]. Full port of Perl module and more.&lt;br /&gt;
| [https://github.com/kung-fu-tzu Peter Leonov]&lt;br /&gt;
| [https://github.com/kung-fu-tzu/ngx_http_js_module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpIconvModule|Iconv]]&lt;br /&gt;
| A character encoding conversion nginx module using libiconv.&lt;br /&gt;
| [http://vimedia.org/ Calio], [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/calio/iconv-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLogRequestSpeed|Log Request Speed]]&lt;br /&gt;
| Log the time it took to process each request.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/replay/ngx_http_lower_upper_case Lower Upper Case]&lt;br /&gt;
| Simple module to upper-/lowercase a string in the Nginx config&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [https://github.com/replay/ngx_http_lower_upper_case Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpLuaModule Lua]&lt;br /&gt;
| Embed the power of Lua into nginx&lt;br /&gt;
| [http://github.com/chaoslawful chaoslawful], [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/chaoslawful/lua-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/alacner/nginx_lua_module Luafile]&lt;br /&gt;
| Embed the power of Lua into nginx very easy.&lt;br /&gt;
| [http://alacner.com alacner]&lt;br /&gt;
| [https://github.com/alacner/nginx_lua_module/tarball/master Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMemcModule|Memc]]&lt;br /&gt;
| An extended version of the standard memcached module that supports set, add, delete, and many more memcached commands.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/memc-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.grid.net.ru/nginx/mogilefs.en.html Mogilefs]&lt;br /&gt;
| Implements a MogileFS client, provides a replace to the Perlbal reverse proxy of the original MogileFS.&lt;br /&gt;
| Valery Kholodkov&lt;br /&gt;
| [http://www.grid.net.ru/nginx/download/nginx_mogilefs_module-1.0.2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[MP4StreamingLite|MP4 Streaming Lite]]&lt;br /&gt;
| Will seek to a certain time within H.264/MP4 files when provided with a &amp;quot;start&amp;quot; parameter in the URL. &lt;br /&gt;
| Jiang Hong&lt;br /&gt;
| [[MP4StreamingLite|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://naxsi.googlecode.com Naxsi]&lt;br /&gt;
| Web Application Firewall for nginx.&lt;br /&gt;
| Thibault Koechlin&lt;br /&gt;
| [http://naxsi.googlecode.com Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://xph.us/software/nginx-notice/ Notice]&lt;br /&gt;
| Serve static file to POST requests.&lt;br /&gt;
| Keith Rarick&lt;br /&gt;
| [http://xph.us/software/nginx-notice/nginx-notice-2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpOwnerMatchModule OwnerMatch]&lt;br /&gt;
| This module provides a simple file owner-based access control.&lt;br /&gt;
| [https://heiher.info Heiher]&lt;br /&gt;
| [http://heiher.info/sftp/files/Nginx-0.8.54-Add-OwnerMatch-module.patch Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://mauro-stettler.blogspot.com/2011/08/pecl-memcache-standard-loadbalancer-for.html PHP-Memache Standard Hash]&lt;br /&gt;
| This is a loadbalancer that imitates the PHP-Memcache standard hash's behaviour&lt;br /&gt;
| Mauro Stettler&lt;br /&gt;
| [https://github.com/replay/ngx_http_php_memcache_standard_balancer Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/replay/ngx_http_php_session PHP Session Parser]&lt;br /&gt;
| Extract values that are stored in a serialized PHP session&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [http://github.com/replay/ngx_http_php_session Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_postgres/ Postgres]&lt;br /&gt;
| Upstream module that allows nginx to communicate directly with PostgreSQL database.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_postgres/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://vitki.net/pubcookie Pubcookie]&lt;br /&gt;
| Adds [http://www.pubcookie.org Pubcookie]-based cross-site authentication method to Nginx.&lt;br /&gt;
| [http://www.vitki.net/ Vitki]&lt;br /&gt;
| [http://vitki.net/pubcookie#Installation Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/rds-csv-nginx-module RDS CSV]&lt;br /&gt;
| Help [http://github.com/chaoslawful/drizzle-nginx-module ngx_drizzle], [http://github.com/FRiCKLE/ngx_postgres/ ngx_postgres], and others emit Comma-Separated Values (CSV).&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/rds-csv-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/rds-json-nginx-module RDS JSON]&lt;br /&gt;
| Help [http://github.com/chaoslawful/drizzle-nginx-module ngx_drizzle], [http://github.com/FRiCKLE/ngx_postgres/ ngx_postgres], and others emit JSON data.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/rds-json-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRedis2Module|Redis2]]&lt;br /&gt;
| Upstream module for the full [http://redis.io/ Redis] 2.0 protocol&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/redis2-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/yuri-gushin/Roboo Roboo]&lt;br /&gt;
| HTTP Robot mitigator utilizing advanced non-interactive HTTP challenge/response mechanisms&lt;br /&gt;
| [http://www.ecl-labs.org/ Yuri Gushin, Alex Behar]&lt;br /&gt;
| [https://github.com/yuri-gushin/Roboo/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgx_rrd_graph|RRD Graph]]&lt;br /&gt;
| This module provides an HTTP interface to [http://oss.oetiker.ch/rrdtool/ RRDtool]'s graphing facilities.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/mod_rrd_graph Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSecureDownload|Secure Download]]&lt;br /&gt;
| Create expiring links.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler], Szymon Modzelewski&lt;br /&gt;
| [http://github.com/replay/ngx_http_secure_download Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/liseen/set-cconv-nginx-module/ Set CConv]&lt;br /&gt;
| Conversion between Simplified Chinese and Traditional Chinese at rewrite phase&lt;br /&gt;
| [http://github.com/liseen/ Liseen Wan]&lt;br /&gt;
| [http://github.com/liseen/set-cconv-nginx-module/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_hash Set Hash]&lt;br /&gt;
| Set a variable to a variety of hash functions (upper/lowercase), including MD5, SHA1 and Murmurhash 2&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_hash/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_lang Set Lang]&lt;br /&gt;
| Set a variable to indicate the language based on a variety of sources including cookies, GET/POST variables, Accept Language header and more&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_lang/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSetMiscModule Set Misc]&lt;br /&gt;
| Various set_xxx directives added to nginx's rewrite module (md5/sha1, sql/json quoting, and many more)&lt;br /&gt;
| [http://agentzh.org agentzh], [http://vimedia.org/ Calio], [http://github.com/shrimp/ shrimp]&lt;br /&gt;
| [http://github.com/agentzh/set-misc-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://nginx-sflow-module.googlecode.com sFlow]&lt;br /&gt;
| Operational performance monitoring with standard [http://sflow.org sFlow] protocol&lt;br /&gt;
| Neil McKee&lt;br /&gt;
| [http://code.google.com/p/nginx-sflow-module/downloads/list Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_slowfs_cache/ SlowFS Cache]&lt;br /&gt;
| Module adding ability to cache static files.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_slowfs_cache/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/muhgatus/spnego-http-auth-nginx-module SPNEGO]&lt;br /&gt;
| Support for SPNEGO/gssapi in nginx.&lt;br /&gt;
| [https://github.com/mike503 mike503]/[https://github.com/muhgatus/ muhgatus]&lt;br /&gt;
| [https://github.com/muhgatus/spnego-http-auth-nginx-module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSRCacheModule SR Cache]&lt;br /&gt;
| Transparent subrequest-based caching layout for arbitrary nginx locations (can be used with ngx_memc + memcached!)&lt;br /&gt;
| [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/agentzh/srcache-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/mikewest/nginx-static-etags Static etags]&lt;br /&gt;
| Nginx doesn't generate etags for static content. I'd like it to. Let's see if I can remember some C from college.&lt;br /&gt;
| [http://github.com/mikewest mikewest]&lt;br /&gt;
| [http://github.com/mikewest/nginx-static-etags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/zebrafishlabs/nginx-statsd Statsd]&lt;br /&gt;
| Adds the ability for Nginx to interacting with statsd.&lt;br /&gt;
| [https://github.com/zebrafishlabs zebrafishlabs]&lt;br /&gt;
| [https://github.com/zebrafishlabs/nginx-statsd Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://code.google.com/p/nginx-sticky-module/ Sticky upstream]&lt;br /&gt;
| A nginx module to add an upstream server persistance using cookies.&lt;br /&gt;
| [http://code.google.com/u/jerome@loyet.net/ Jérôme Loyet]&lt;br /&gt;
| [http://code.google.com/p/nginx-sticky-module/downloads/list Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpStripModule|Strip]]&lt;br /&gt;
| Whitespace remover.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [[File:mod_strip-0.1.tar.gz|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSubsModule Substitutions]&lt;br /&gt;
| A filter module which can do both regular expression and fixed string substitutions on response bodies.&lt;br /&gt;
| [http://yaoweibin.cn Weibin Yao]&lt;br /&gt;
| [http://code.google.com/p/substitutions4nginx/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_supervisord/ Supervisord]&lt;br /&gt;
| Module providing nginx with API to communicate with supervisord and manage (start/stop) backends on-demand.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_supervisord/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.grid.net.ru/nginx/upload.en.html Upload]&lt;br /&gt;
| Parses &amp;lt;code&amp;gt;multipart/form-data&amp;lt;/code&amp;gt; allowing arbitrary handling of uploaded files.&lt;br /&gt;
| Valery Kholodkov&lt;br /&gt;
| [http://www.grid.net.ru/nginx/upload.en.html#download Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUploadProgressModule|Upload Progress]]&lt;br /&gt;
| Tracks and reports upload progress.&lt;br /&gt;
| Brice Figureau&lt;br /&gt;
| [http://github.com/masterzen/nginx-upload-progress-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamConsistentHash|Upstream Consistent Hash]]&lt;br /&gt;
| Select backend based on Consistent hash ring.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [http://github.com/replay/ngx_http_consistent_hash Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamFairModule|Upstream Fair Balancer]]&lt;br /&gt;
| Sends an incoming request to the least-busy backend server, rather than distributing requests round-robin.&lt;br /&gt;
| Gregory Nosek&lt;br /&gt;
| [http://github.com/gnosek/nginx-upstream-fair Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamRequestHashModule|Upstream Hash]]&lt;br /&gt;
| Provides simple upstream load distribution by hashing a configurable variable.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/nginx_upstream_hash/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamKeepaliveModule|Upstream Keepalive]]&lt;br /&gt;
| Provides keep-alive connections to memcached upstreams.&lt;br /&gt;
| [http://mdounin.ru Maxim Dounin]&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_upstream_keepalive/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/wandenberg/nginx-video-thumbextractor-module Video Thumb Extractor]&lt;br /&gt;
| Nginx module to extract thumbs from a video file.&lt;br /&gt;
| [https://github.com/wandenberg Wandenberg Peixoto]&lt;br /&gt;
| [https://github.com/wandenberg/nginx-video-thumbextractor-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NgxWSGIModule|WSGI]]&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Wsgi WSGI] implementation for Nginx.  Allows easy deployment of Python applications.&lt;br /&gt;
| Manlio Perillo&lt;br /&gt;
| [http://hg.mperillo.ath.cx/nginx/mod_wsgi/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/xss-nginx-module XSS]&lt;br /&gt;
| Native support for cross-site scripting (XSS) in an nginx.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/xss-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NgxZip|Zip]]&lt;br /&gt;
| Assemble ZIP archives on the fly.&lt;br /&gt;
| [http://www.evanmiller.org/ Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/mod_zip/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Extended status module|Extended status module]]&lt;br /&gt;
| Extended status module for nginx&lt;br /&gt;
| 최영석(Choi Youngseok), 李金虎(Li Jinhu)&lt;br /&gt;
| [http://github.com/zealot83/ngx_http_extended_status_module Download]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools for module developers =&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib Nginx Auto Lib Core]&lt;br /&gt;
| Reusable file for module developers to include with their modules to easily and consistently handle including external libraries; used in the Auto Lib module and included in the Nginx Development Kit&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit Nginx Development Kit]&lt;br /&gt;
| An extension to the core functionality of Nginx which can be used as a basis for other modules&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit/downloads Download]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Third party patches =&lt;br /&gt;
These patches must be applied to the Nginx source code tree.   There's no guarantee these patches will apply to a particular version of Nginx.&lt;br /&gt;
&lt;br /&gt;
As with third party modules, these patches are not officially supported.  Your mileage may vary.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Log to syslog.&lt;br /&gt;
| Marlon de Boer&lt;br /&gt;
| [http://bugs.gentoo.org/attachment.cgi?id=197180 Patch against 0.8.4] (works on 0.7.x and 0.8.x) | [http://dl.dropbox.com/u/5836407/Patches/Nginx_0.8.49-syslog-support.txt Patch for version 0.8.49 with 'sh is not bash' fix] | [https://github.com/yaoweibin/nginx_syslog_patch Syslog Patch for Nginx 0.8.54+]&lt;br /&gt;
|-&lt;br /&gt;
| Disable nginx's memory pool to help valgrind and other tools (for nginx C developers only)&lt;br /&gt;
| [http://github.com/shrimp/ shrimp], [http://agentzh.spaces.live.com/ agentzh]&lt;br /&gt;
| [http://github.com/shrimp/no-pool-nginx Git repository for the patch]&lt;br /&gt;
|-&lt;br /&gt;
| SSL Session tickets distributed via memcached&lt;br /&gt;
| [http://hezmatt.org/~mpalmer/blog/2011/07/24/followup-to-ssl-session-caching-with-nginx.html Matthew Palmer]&lt;br /&gt;
| [https://github.com/mpalmer/nginx Git repository for changes]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* [http://github.com/search?type=Repositories&amp;amp;language=c&amp;amp;q=nginx&amp;amp;repo=&amp;amp;langOverride=&amp;amp;x=13&amp;amp;y=17&amp;amp;start_value=1 github search]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/3rdPartyModules</id>
		<title>3rdPartyModules</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/3rdPartyModules"/>
				<updated>2012-05-03T00:24:12Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Tools for module developers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Third party modules =&lt;br /&gt;
These modules are not officially supported. Nevertheless many of them may prove useful to many people.  Enjoy at your own risk.&lt;br /&gt;
&lt;br /&gt;
== Compiling third party modules ==&lt;br /&gt;
Modules are typically added by compiling them along with the Nginx source.&lt;br /&gt;
&lt;br /&gt;
From the Nginx source directory, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --add-module=/path/to/module1/source \&lt;br /&gt;
            --add-module=/path/to/module2/source&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use as many &amp;lt;code&amp;gt;--add-module&amp;lt;/code&amp;gt; arguments as needed.&lt;br /&gt;
&lt;br /&gt;
Be aware that some modules may require additional libraries to be installed on your system.&lt;br /&gt;
&lt;br /&gt;
== Writing your own module ==&lt;br /&gt;
[http://www.evanmiller.org/ Evan Miller] has written the [http://www.evanmiller.org/nginx-modules-guide.html definitive guide] to Nginx module development. But some parts of it are a little out of date. You've been warned.&lt;br /&gt;
&lt;br /&gt;
A github search turned up the [http://github.com/simpl/ngx_devel_kit Nginx Development Kit].  It seems to be more up to date.&lt;br /&gt;
&lt;br /&gt;
See also the tools at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
= Known modules =&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| [[AcceptLanguageModule|Accept Language]]&lt;br /&gt;
| Parses the &amp;lt;code&amp;gt;Accept-Language&amp;lt;/code&amp;gt; header and gives the most suitable locale from a list of supported locales.&lt;br /&gt;
| Guillaume Maury&lt;br /&gt;
| [http://github.com/giom/nginx_accept_language_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAccessKeyModule|Access Key]]&lt;br /&gt;
| Denies access unless the request URL contains an access key. &lt;br /&gt;
| Mykola Grechukh&lt;br /&gt;
| [http://wiki.nginx.org/File:Nginx-accesskey-2.0.3.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/rsms/afcgi AFCGI]&lt;br /&gt;
| Asynchronous/multiplexing FastCGI for nginx (incl. ref server implementation)&lt;br /&gt;
| [http://github.com/rsms rsms]&lt;br /&gt;
| [http://github.com/rsms/afcgi Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/array-var-nginx-module Array Var]&lt;br /&gt;
| Add support for array variables to nginx config files&lt;br /&gt;
| [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/agentzh/array-var-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAuthDigestModule|Auth Digest]]&lt;br /&gt;
| HTTP Digest Authentication.&lt;br /&gt;
| [http://samizdat.cc Christian Swinehart]&lt;br /&gt;
| [https://github.com/samizdatco/nginx-http-auth-digest Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://web.iti.upv.es/~sto/nginx/ Auth PAM]&lt;br /&gt;
| HTTP Basic Authentication using PAM.&lt;br /&gt;
| Sergio Talens-Oliag&lt;br /&gt;
| [http://web.iti.upv.es/~sto/nginx/ngx_http_auth_pam_module-1.2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_auth_request_module/ Auth Request]&lt;br /&gt;
| Allows authorization based on subrequest result.&lt;br /&gt;
| [http://mdounin.ru Maxim Dounin]&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_auth_request_module/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib Auto Lib]&lt;br /&gt;
| Reuse pre-compiled/installed versions of OpenSSL, PCRE and Zlib without re-compiling them each time Nginx is compiled&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/anomalizer/ngx_aws_auth AWS auth]&lt;br /&gt;
| Generate security headers for GET requests to Amazon S3.&lt;br /&gt;
| [http://anomalizer.net/statistically-incorrect Arvind Jayaprakash]&lt;br /&gt;
| [http://github.com/anomalizer/ngx_aws_auth/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_cache_purge/ Cache Purge]&lt;br /&gt;
| Module adding ability to purge content from FastCGI, proxy, and uWSGI caches.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_cache_purge/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpChunkinModule|Chunkin]]&lt;br /&gt;
| HTTP 1.1 chunked-encoding request body support for Nginx.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/chunkin-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCircleGifModule|Circle GIF]]&lt;br /&gt;
| Generates simple circle images with the colors and size specified in the URL.&lt;br /&gt;
| [http://www.evanmiller.org/ Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/nginx_circle_gif/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://ngx-ctpp.vbart.info/ CT++]&lt;br /&gt;
| Embeds  [http://ctpp.havoc.ru/en/whatis.html CT++ (or CTPP2)]  VM, the execution part of a high-performance template engine system.&lt;br /&gt;
| [http://vbart.info/ Valentin V. Bartenev]&lt;br /&gt;
| [http://dl.vbart.ru/ngx-ctpp/ngx_ctpp2-0.5.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit Development Kit]&lt;br /&gt;
| An extension to the core functionality of Nginx which can be used as a basis for other modules&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDrizzleModule|Drizzle]]&lt;br /&gt;
| Make nginx talk directly to mysql and drizzle by libdrizzle.&lt;br /&gt;
| [http://github.com/chaoslawful/ chaoslawful], [http://agentzh.org/ agentzh], Piotr Sikora&lt;br /&gt;
| [http://github.com/chaoslawful/drizzle-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/kali/nginx-dynamic-etags Dynamic etags]&lt;br /&gt;
| Nginx module for etags on dynamic content&lt;br /&gt;
| [http://github.com/kali kali]&lt;br /&gt;
| [http://github.com/kali/nginx-dynamic-etags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpEchoModule|Echo]]&lt;br /&gt;
| Brings &amp;quot;echo&amp;quot;, &amp;quot;sleep&amp;quot;, &amp;quot;time&amp;quot;, &amp;quot;exec&amp;quot;, and more shell-style goodies to Nginx config file.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/echo-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/bpaquet/ngx_http_enhanced_memcached_module Enhanced Memcached]&lt;br /&gt;
| Repackaging of the standard memcached module to add features : custom http headers, hash keys, store entries in memcached with post http request, flush, key namespace&lt;br /&gt;
| [https://github.com/bpaquet Bertrand Paquet]&lt;br /&gt;
| [https://github.com/bpaquet/ngx_http_enhanced_memcached_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/encrypted-session-nginx-module Encrypted Session]&lt;br /&gt;
| encrypt and decrypt nginx variable values, can be used for light-weight session-based authentication&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/encrypted-session-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/vkholodkov/nginx-eval-module Eval]&lt;br /&gt;
| A module for evaluating memcached or proxy response into variable.&lt;br /&gt;
| [http://github.com/vkholodkov/ vkholodkov]&lt;br /&gt;
| [http://github.com/vkholodkov/nginx-eval-module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/nginx-eval-module Eval (agentzh's fork)]&lt;br /&gt;
| Enhanced ngx_eval that can capture arbitrary subrequest's responses into nginx variables (can even with output filters enabled)&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/nginx-eval-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Expressz|Expressz]]&lt;br /&gt;
| First of the Expressz lineup modules, Off-loading image and file/stream compression to (a) GPU(s).&lt;br /&gt;
| [http://www.acronymlabs.com/ Jason Giedymin at AcronymLabs]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/ry/nginx-ey-balancer/tree/master EY Balancer]&lt;br /&gt;
| Adds a request queue to Nginx that allows the limiting of concurrent requests passed to the upstream.&lt;br /&gt;
| Ry Dahl&lt;br /&gt;
| [http://github.com/ry/nginx-ey-balancer/tarball/master Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/NgxFancyIndex Fancy Indexes]&lt;br /&gt;
| Like the built-in [[Modules#HTTP_Auto_Index|autoindex]] module, but fancier.&lt;br /&gt;
| Adrian Perez de Castro&lt;br /&gt;
| [http://gitorious.org/ngx-fancyindex/ngx-fancyindex Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFormInputModule|Form Input]]&lt;br /&gt;
| This module reads HTTP POST request body and parse the arguments into nginx variables.&lt;br /&gt;
| [http://vimedia.org/ Calio], [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/calio/form-input-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Http3rdPartyGeoIPModule|GeoIP]]&lt;br /&gt;
| Country code lookups via the [http://www.maxmind.com/ MaxMind] GeoIP API.&lt;br /&gt;
| [http://www.spilgames.com/ SPIL GAMES]&lt;br /&gt;
| [[File:Nginx-geoip-0.2.tar.gz|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/mdirolf/nginx-gridfs GridFS]&lt;br /&gt;
| Nginx module for serving files from MongoDB's GridFS.&lt;br /&gt;
| [http://github.com/mdirolf mdirolf]&lt;br /&gt;
| [http://github.com/mdirolf/nginx-gridfs Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHeadersMoreModule|Headers More]]&lt;br /&gt;
| Set and clear input and output headers...more than &amp;quot;add&amp;quot;!&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/headers-more-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHealthcheckModule|HTTP Healthcheck]]&lt;br /&gt;
| Health check HTTP servers inside an upstream so you don't forward requests to bad hosts&lt;br /&gt;
| Jack Lindamood&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Lax/ngx_http_accounting_module HTTP Accounting]&lt;br /&gt;
| Realtime netflow and status code monitor solution for nginx, need less memory and cpu than realtime log analyzing. Useful for http traffic accounting based on nginx config logic ( per-location-traffic or per-server-traffic ).&lt;br /&gt;
| [http://www.liulantao.com/portal/ Liu Lantao]&lt;br /&gt;
| [https://github.com/Lax/ngx_http_accounting_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://pushmodule.slact.net/ HTTP Push]&lt;br /&gt;
| Turn Nginx into an adept long-polling HTTP Push (Comet) server.&lt;br /&gt;
| Leo Ponomarev&lt;br /&gt;
| [http://pushmodule.slact.net/downloads/nginx_http_push_module-0.69.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpPushStreamModule|HTTP Push Stream]]&lt;br /&gt;
| Turn Nginx into an adept stream HTTP Push (Comet) server.&lt;br /&gt;
| [https://github.com/wandenberg Wandenberg Peixoto]&lt;br /&gt;
| [https://github.com/wandenberg/nginx-push-stream-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRedis|HTTP Redis]]&lt;br /&gt;
| [http://redis.io/ Redis] support.&lt;br /&gt;
| Sergey A. Osokin &amp;lt;osa@FreeBSD.ORG.ru&amp;gt;&lt;br /&gt;
| [http://people.FreeBSD.ORG/~osa/ngx_http_redis-0.3.5.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kung-fu-tzu/ngx_http_js_module#readme JavaScript]&lt;br /&gt;
| Embedding [http://www.mozilla.org/js/spidermonkey/ SpiderMonkey]. Full port of Perl module and more.&lt;br /&gt;
| [https://github.com/kung-fu-tzu Peter Leonov]&lt;br /&gt;
| [https://github.com/kung-fu-tzu/ngx_http_js_module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpIconvModule|Iconv]]&lt;br /&gt;
| A character encoding conversion nginx module using libiconv.&lt;br /&gt;
| [http://vimedia.org/ Calio], [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/calio/iconv-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLogRequestSpeed|Log Request Speed]]&lt;br /&gt;
| Log the time it took to process each request.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/replay/ngx_http_lower_upper_case Lower Upper Case]&lt;br /&gt;
| Simple module to upper-/lowercase a string in the Nginx config&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [https://github.com/replay/ngx_http_lower_upper_case Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpLuaModule Lua]&lt;br /&gt;
| Embed the power of Lua into nginx&lt;br /&gt;
| [http://github.com/chaoslawful chaoslawful], [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/chaoslawful/lua-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/alacner/nginx_lua_module Luafile]&lt;br /&gt;
| Embed the power of Lua into nginx very easy.&lt;br /&gt;
| [http://alacner.com alacner]&lt;br /&gt;
| [https://github.com/alacner/nginx_lua_module/tarball/master Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMemcModule|Memc]]&lt;br /&gt;
| An extended version of the standard memcached module that supports set, add, delete, and many more memcached commands.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/memc-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.grid.net.ru/nginx/mogilefs.en.html Mogilefs]&lt;br /&gt;
| Implements a MogileFS client, provides a replace to the Perlbal reverse proxy of the original MogileFS.&lt;br /&gt;
| Valery Kholodkov&lt;br /&gt;
| [http://www.grid.net.ru/nginx/download/nginx_mogilefs_module-1.0.2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[MP4StreamingLite|MP4 Streaming Lite]]&lt;br /&gt;
| Will seek to a certain time within H.264/MP4 files when provided with a &amp;quot;start&amp;quot; parameter in the URL. &lt;br /&gt;
| Jiang Hong&lt;br /&gt;
| [[MP4StreamingLite|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://naxsi.googlecode.com Naxsi]&lt;br /&gt;
| Web Application Firewall for nginx.&lt;br /&gt;
| Thibault Koechlin&lt;br /&gt;
| [http://naxsi.googlecode.com Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://xph.us/software/nginx-notice/ Notice]&lt;br /&gt;
| Serve static file to POST requests.&lt;br /&gt;
| Keith Rarick&lt;br /&gt;
| [http://xph.us/software/nginx-notice/nginx-notice-2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpOwnerMatchModule OwnerMatch]&lt;br /&gt;
| This module provides a simple file owner-based access control.&lt;br /&gt;
| [https://heiher.info Heiher]&lt;br /&gt;
| [http://heiher.info/sftp/files/Nginx-0.8.54-Add-OwnerMatch-module.patch Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://mauro-stettler.blogspot.com/2011/08/pecl-memcache-standard-loadbalancer-for.html PHP-Memache Standard Hash]&lt;br /&gt;
| This is a loadbalancer that imitates the PHP-Memcache standard hash's behaviour&lt;br /&gt;
| Mauro Stettler&lt;br /&gt;
| [https://github.com/replay/ngx_http_php_memcache_standard_balancer Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/replay/ngx_http_php_session PHP Session Parser]&lt;br /&gt;
| Extract values that are stored in a serialized PHP session&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [http://github.com/replay/ngx_http_php_session Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_postgres/ Postgres]&lt;br /&gt;
| Upstream module that allows nginx to communicate directly with PostgreSQL database.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_postgres/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://vitki.net/pubcookie Pubcookie]&lt;br /&gt;
| Adds [http://www.pubcookie.org Pubcookie]-based cross-site authentication method to Nginx.&lt;br /&gt;
| [http://www.vitki.net/ Vitki]&lt;br /&gt;
| [http://vitki.net/pubcookie#Installation Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/rds-csv-nginx-module RDS CSV]&lt;br /&gt;
| Help [http://github.com/chaoslawful/drizzle-nginx-module ngx_drizzle], [http://github.com/FRiCKLE/ngx_postgres/ ngx_postgres], and others emit Comma-Separated Values (CSV).&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/rds-csv-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/rds-json-nginx-module RDS JSON]&lt;br /&gt;
| Help [http://github.com/chaoslawful/drizzle-nginx-module ngx_drizzle], [http://github.com/FRiCKLE/ngx_postgres/ ngx_postgres], and others emit JSON data.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/rds-json-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRedis2Module|Redis2]]&lt;br /&gt;
| Upstream module for the full [http://redis.io/ Redis] 2.0 protocol&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/redis2-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/yuri-gushin/Roboo Roboo]&lt;br /&gt;
| HTTP Robot mitigator utilizing advanced non-interactive HTTP challenge/response mechanisms&lt;br /&gt;
| [http://www.ecl-labs.org/ Yuri Gushin, Alex Behar]&lt;br /&gt;
| [https://github.com/yuri-gushin/Roboo/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgx_rrd_graph|RRD Graph]]&lt;br /&gt;
| This module provides an HTTP interface to [http://oss.oetiker.ch/rrdtool/ RRDtool]'s graphing facilities.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/mod_rrd_graph Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSecureDownload|Secure Download]]&lt;br /&gt;
| Create expiring links.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler], Szymon Modzelewski&lt;br /&gt;
| [http://github.com/replay/ngx_http_secure_download Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/liseen/set-cconv-nginx-module/ Set CConv]&lt;br /&gt;
| Conversion between Simplified Chinese and Traditional Chinese at rewrite phase&lt;br /&gt;
| [http://github.com/liseen/ Liseen Wan]&lt;br /&gt;
| [http://github.com/liseen/set-cconv-nginx-module/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_hash Set Hash]&lt;br /&gt;
| Set a variable to a variety of hash functions (upper/lowercase), including MD5, SHA1 and Murmurhash 2&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_hash/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_lang Set Lang]&lt;br /&gt;
| Set a variable to indicate the language based on a variety of sources including cookies, GET/POST variables, Accept Language header and more&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_lang/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSetMiscModule Set Misc]&lt;br /&gt;
| Various set_xxx directives added to nginx's rewrite module (md5/sha1, sql/json quoting, and many more)&lt;br /&gt;
| [http://agentzh.org agentzh], [http://vimedia.org/ Calio], [http://github.com/shrimp/ shrimp]&lt;br /&gt;
| [http://github.com/agentzh/set-misc-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://nginx-sflow-module.googlecode.com sFlow]&lt;br /&gt;
| Operational performance monitoring with standard [http://sflow.org sFlow] protocol&lt;br /&gt;
| Neil McKee&lt;br /&gt;
| [http://code.google.com/p/nginx-sflow-module/downloads/list Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_slowfs_cache/ SlowFS Cache]&lt;br /&gt;
| Module adding ability to cache static files.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_slowfs_cache/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/muhgatus/spnego-http-auth-nginx-module SPNEGO]&lt;br /&gt;
| Support for SPNEGO/gssapi in nginx.&lt;br /&gt;
| [https://github.com/mike503 mike503]/[https://github.com/muhgatus/ muhgatus]&lt;br /&gt;
| [https://github.com/muhgatus/spnego-http-auth-nginx-module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSRCacheModule SR Cache]&lt;br /&gt;
| Transparent subrequest-based caching layout for arbitrary nginx locations (can be used with ngx_memc + memcached!)&lt;br /&gt;
| [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/agentzh/srcache-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/mikewest/nginx-static-etags Static etags]&lt;br /&gt;
| Nginx doesn't generate etags for static content. I'd like it to. Let's see if I can remember some C from college.&lt;br /&gt;
| [http://github.com/mikewest mikewest]&lt;br /&gt;
| [http://github.com/mikewest/nginx-static-etags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/zebrafishlabs/nginx-statsd Statsd]&lt;br /&gt;
| Adds the ability for Nginx to interacting with statsd.&lt;br /&gt;
| [https://github.com/zebrafishlabs zebrafishlabs]&lt;br /&gt;
| [https://github.com/zebrafishlabs/nginx-statsd Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://code.google.com/p/nginx-sticky-module/ Sticky upstream]&lt;br /&gt;
| A nginx module to add an upstream server persistance using cookies.&lt;br /&gt;
| [http://code.google.com/u/jerome@loyet.net/ Jérôme Loyet]&lt;br /&gt;
| [http://code.google.com/p/nginx-sticky-module/downloads/list Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpStripModule|Strip]]&lt;br /&gt;
| Whitespace remover.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [[File:mod_strip-0.1.tar.gz|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSubsModule Substitutions]&lt;br /&gt;
| A filter module which can do both regular expression and fixed string substitutions on response bodies.&lt;br /&gt;
| [http://yaoweibin.cn Weibin Yao]&lt;br /&gt;
| [http://code.google.com/p/substitutions4nginx/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_supervisord/ Supervisord]&lt;br /&gt;
| Module providing nginx with API to communicate with supervisord and manage (start/stop) backends on-demand.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_supervisord/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.grid.net.ru/nginx/upload.en.html Upload]&lt;br /&gt;
| Parses &amp;lt;code&amp;gt;multipart/form-data&amp;lt;/code&amp;gt; allowing arbitrary handling of uploaded files.&lt;br /&gt;
| Valery Kholodkov&lt;br /&gt;
| [http://www.grid.net.ru/nginx/upload.en.html#download Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUploadProgressModule|Upload Progress]]&lt;br /&gt;
| Tracks and reports upload progress.&lt;br /&gt;
| Brice Figureau&lt;br /&gt;
| [http://github.com/masterzen/nginx-upload-progress-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamConsistentHash|Upstream Consistent Hash]]&lt;br /&gt;
| Select backend based on Consistent hash ring.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [http://github.com/replay/ngx_http_consistent_hash Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamFairModule|Upstream Fair Balancer]]&lt;br /&gt;
| Sends an incoming request to the least-busy backend server, rather than distributing requests round-robin.&lt;br /&gt;
| Gregory Nosek&lt;br /&gt;
| [http://github.com/gnosek/nginx-upstream-fair Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamRequestHashModule|Upstream Hash]]&lt;br /&gt;
| Provides simple upstream load distribution by hashing a configurable variable.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/nginx_upstream_hash/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamKeepaliveModule|Upstream Keepalive]]&lt;br /&gt;
| Provides keep-alive connections to memcached upstreams.&lt;br /&gt;
| [http://mdounin.ru Maxim Dounin]&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_upstream_keepalive/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/wandenberg/nginx-video-thumbextractor-module Video Thumb Extractor]&lt;br /&gt;
| Nginx module to extract thumbs from a video file.&lt;br /&gt;
| [https://github.com/wandenberg Wandenberg Peixoto]&lt;br /&gt;
| [https://github.com/wandenberg/nginx-video-thumbextractor-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NgxWSGIModule|WSGI]]&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Wsgi WSGI] implementation for Nginx.  Allows easy deployment of Python applications.&lt;br /&gt;
| Manlio Perillo&lt;br /&gt;
| [http://hg.mperillo.ath.cx/nginx/mod_wsgi/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/xss-nginx-module XSS]&lt;br /&gt;
| Native support for cross-site scripting (XSS) in an nginx.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/xss-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NgxZip|Zip]]&lt;br /&gt;
| Assemble ZIP archives on the fly.&lt;br /&gt;
| [http://www.evanmiller.org/ Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/mod_zip/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Extended status module|Extended status module]]&lt;br /&gt;
| Extended status module for nginx&lt;br /&gt;
| 최영석(Choi Youngseok), 李金虎(Li Jinhu)&lt;br /&gt;
| [http://github.com/zealot83/ngx_http_extended_status_module Download]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools for module developers =&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib Nginx Auto Lib Core]&lt;br /&gt;
| Reusable file for module developers to include with their modules to easily and consistently handle including external libraries; used in the Auto Lib module and included in the Nginx Development Kit&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit Nginx Development Kit]&lt;br /&gt;
| An extension to the core functionality of Nginx which can be used as a basis for other modules&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit/downloads Download]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Third party patches =&lt;br /&gt;
These patches must be applied to the Nginx source code tree.   There's no guarantee these patches will apply to a particular version of Nginx.&lt;br /&gt;
&lt;br /&gt;
As with third party modules, these patches are not officially supported.  Your mileage may vary.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Log to syslog.&lt;br /&gt;
| Marlon de Boer&lt;br /&gt;
| [http://bugs.gentoo.org/attachment.cgi?id=197180 Patch against 0.8.4] (works on 0.7.x and 0.8.x) | [http://dl.dropbox.com/u/5836407/Patches/Nginx_0.8.49-syslog-support.txt Patch for version 0.8.49 with 'sh is not bash' fix] | [https://github.com/yaoweibin/nginx_syslog_patch Syslog Patch for Nginx 0.8.54+]&lt;br /&gt;
|-&lt;br /&gt;
| Disable nginx's memory pool to help valgrind and other tools (for nginx C developers only)&lt;br /&gt;
| [http://github.com/shrimp/ shrimp], [http://agentzh.spaces.live.com/ agentzh]&lt;br /&gt;
| [http://github.com/shrimp/no-pool-nginx Git repository for the patch]&lt;br /&gt;
|-&lt;br /&gt;
| SSL Session tickets distributed via memcached&lt;br /&gt;
| [http://hezmatt.org/~mpalmer/blog/2011/07/24/followup-to-ssl-session-caching-with-nginx.html Matthew Palmer]&lt;br /&gt;
| [https://github.com/mpalmer/nginx Git repository for changes]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* [http://github.com/search?type=Repositories&amp;amp;language=c&amp;amp;q=nginx&amp;amp;repo=&amp;amp;langOverride=&amp;amp;x=13&amp;amp;y=17&amp;amp;start_value=1 github search]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/3rdPartyModules</id>
		<title>3rdPartyModules</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/3rdPartyModules"/>
				<updated>2012-05-03T00:23:44Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Third party patches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Third party modules =&lt;br /&gt;
These modules are not officially supported. Nevertheless many of them may prove useful to many people.  Enjoy at your own risk.&lt;br /&gt;
&lt;br /&gt;
== Compiling third party modules ==&lt;br /&gt;
Modules are typically added by compiling them along with the Nginx source.&lt;br /&gt;
&lt;br /&gt;
From the Nginx source directory, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --add-module=/path/to/module1/source \&lt;br /&gt;
            --add-module=/path/to/module2/source&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use as many &amp;lt;code&amp;gt;--add-module&amp;lt;/code&amp;gt; arguments as needed.&lt;br /&gt;
&lt;br /&gt;
Be aware that some modules may require additional libraries to be installed on your system.&lt;br /&gt;
&lt;br /&gt;
== Writing your own module ==&lt;br /&gt;
[http://www.evanmiller.org/ Evan Miller] has written the [http://www.evanmiller.org/nginx-modules-guide.html definitive guide] to Nginx module development. But some parts of it are a little out of date. You've been warned.&lt;br /&gt;
&lt;br /&gt;
A github search turned up the [http://github.com/simpl/ngx_devel_kit Nginx Development Kit].  It seems to be more up to date.&lt;br /&gt;
&lt;br /&gt;
See also the tools at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
= Known modules =&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| [[AcceptLanguageModule|Accept Language]]&lt;br /&gt;
| Parses the &amp;lt;code&amp;gt;Accept-Language&amp;lt;/code&amp;gt; header and gives the most suitable locale from a list of supported locales.&lt;br /&gt;
| Guillaume Maury&lt;br /&gt;
| [http://github.com/giom/nginx_accept_language_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAccessKeyModule|Access Key]]&lt;br /&gt;
| Denies access unless the request URL contains an access key. &lt;br /&gt;
| Mykola Grechukh&lt;br /&gt;
| [http://wiki.nginx.org/File:Nginx-accesskey-2.0.3.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/rsms/afcgi AFCGI]&lt;br /&gt;
| Asynchronous/multiplexing FastCGI for nginx (incl. ref server implementation)&lt;br /&gt;
| [http://github.com/rsms rsms]&lt;br /&gt;
| [http://github.com/rsms/afcgi Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/array-var-nginx-module Array Var]&lt;br /&gt;
| Add support for array variables to nginx config files&lt;br /&gt;
| [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/agentzh/array-var-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAuthDigestModule|Auth Digest]]&lt;br /&gt;
| HTTP Digest Authentication.&lt;br /&gt;
| [http://samizdat.cc Christian Swinehart]&lt;br /&gt;
| [https://github.com/samizdatco/nginx-http-auth-digest Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://web.iti.upv.es/~sto/nginx/ Auth PAM]&lt;br /&gt;
| HTTP Basic Authentication using PAM.&lt;br /&gt;
| Sergio Talens-Oliag&lt;br /&gt;
| [http://web.iti.upv.es/~sto/nginx/ngx_http_auth_pam_module-1.2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_auth_request_module/ Auth Request]&lt;br /&gt;
| Allows authorization based on subrequest result.&lt;br /&gt;
| [http://mdounin.ru Maxim Dounin]&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_auth_request_module/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib Auto Lib]&lt;br /&gt;
| Reuse pre-compiled/installed versions of OpenSSL, PCRE and Zlib without re-compiling them each time Nginx is compiled&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/anomalizer/ngx_aws_auth AWS auth]&lt;br /&gt;
| Generate security headers for GET requests to Amazon S3.&lt;br /&gt;
| [http://anomalizer.net/statistically-incorrect Arvind Jayaprakash]&lt;br /&gt;
| [http://github.com/anomalizer/ngx_aws_auth/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_cache_purge/ Cache Purge]&lt;br /&gt;
| Module adding ability to purge content from FastCGI, proxy, and uWSGI caches.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_cache_purge/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpChunkinModule|Chunkin]]&lt;br /&gt;
| HTTP 1.1 chunked-encoding request body support for Nginx.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/chunkin-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCircleGifModule|Circle GIF]]&lt;br /&gt;
| Generates simple circle images with the colors and size specified in the URL.&lt;br /&gt;
| [http://www.evanmiller.org/ Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/nginx_circle_gif/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://ngx-ctpp.vbart.info/ CT++]&lt;br /&gt;
| Embeds  [http://ctpp.havoc.ru/en/whatis.html CT++ (or CTPP2)]  VM, the execution part of a high-performance template engine system.&lt;br /&gt;
| [http://vbart.info/ Valentin V. Bartenev]&lt;br /&gt;
| [http://dl.vbart.ru/ngx-ctpp/ngx_ctpp2-0.5.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit Development Kit]&lt;br /&gt;
| An extension to the core functionality of Nginx which can be used as a basis for other modules&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDrizzleModule|Drizzle]]&lt;br /&gt;
| Make nginx talk directly to mysql and drizzle by libdrizzle.&lt;br /&gt;
| [http://github.com/chaoslawful/ chaoslawful], [http://agentzh.org/ agentzh], Piotr Sikora&lt;br /&gt;
| [http://github.com/chaoslawful/drizzle-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/kali/nginx-dynamic-etags Dynamic etags]&lt;br /&gt;
| Nginx module for etags on dynamic content&lt;br /&gt;
| [http://github.com/kali kali]&lt;br /&gt;
| [http://github.com/kali/nginx-dynamic-etags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpEchoModule|Echo]]&lt;br /&gt;
| Brings &amp;quot;echo&amp;quot;, &amp;quot;sleep&amp;quot;, &amp;quot;time&amp;quot;, &amp;quot;exec&amp;quot;, and more shell-style goodies to Nginx config file.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/echo-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/bpaquet/ngx_http_enhanced_memcached_module Enhanced Memcached]&lt;br /&gt;
| Repackaging of the standard memcached module to add features : custom http headers, hash keys, store entries in memcached with post http request, flush, key namespace&lt;br /&gt;
| [https://github.com/bpaquet Bertrand Paquet]&lt;br /&gt;
| [https://github.com/bpaquet/ngx_http_enhanced_memcached_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/encrypted-session-nginx-module Encrypted Session]&lt;br /&gt;
| encrypt and decrypt nginx variable values, can be used for light-weight session-based authentication&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/encrypted-session-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/vkholodkov/nginx-eval-module Eval]&lt;br /&gt;
| A module for evaluating memcached or proxy response into variable.&lt;br /&gt;
| [http://github.com/vkholodkov/ vkholodkov]&lt;br /&gt;
| [http://github.com/vkholodkov/nginx-eval-module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/nginx-eval-module Eval (agentzh's fork)]&lt;br /&gt;
| Enhanced ngx_eval that can capture arbitrary subrequest's responses into nginx variables (can even with output filters enabled)&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/nginx-eval-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Expressz|Expressz]]&lt;br /&gt;
| First of the Expressz lineup modules, Off-loading image and file/stream compression to (a) GPU(s).&lt;br /&gt;
| [http://www.acronymlabs.com/ Jason Giedymin at AcronymLabs]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/ry/nginx-ey-balancer/tree/master EY Balancer]&lt;br /&gt;
| Adds a request queue to Nginx that allows the limiting of concurrent requests passed to the upstream.&lt;br /&gt;
| Ry Dahl&lt;br /&gt;
| [http://github.com/ry/nginx-ey-balancer/tarball/master Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/NgxFancyIndex Fancy Indexes]&lt;br /&gt;
| Like the built-in [[Modules#HTTP_Auto_Index|autoindex]] module, but fancier.&lt;br /&gt;
| Adrian Perez de Castro&lt;br /&gt;
| [http://gitorious.org/ngx-fancyindex/ngx-fancyindex Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFormInputModule|Form Input]]&lt;br /&gt;
| This module reads HTTP POST request body and parse the arguments into nginx variables.&lt;br /&gt;
| [http://vimedia.org/ Calio], [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/calio/form-input-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Http3rdPartyGeoIPModule|GeoIP]]&lt;br /&gt;
| Country code lookups via the [http://www.maxmind.com/ MaxMind] GeoIP API.&lt;br /&gt;
| [http://www.spilgames.com/ SPIL GAMES]&lt;br /&gt;
| [[File:Nginx-geoip-0.2.tar.gz|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/mdirolf/nginx-gridfs GridFS]&lt;br /&gt;
| Nginx module for serving files from MongoDB's GridFS.&lt;br /&gt;
| [http://github.com/mdirolf mdirolf]&lt;br /&gt;
| [http://github.com/mdirolf/nginx-gridfs Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHeadersMoreModule|Headers More]]&lt;br /&gt;
| Set and clear input and output headers...more than &amp;quot;add&amp;quot;!&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/headers-more-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHealthcheckModule|HTTP Healthcheck]]&lt;br /&gt;
| Health check HTTP servers inside an upstream so you don't forward requests to bad hosts&lt;br /&gt;
| Jack Lindamood&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Lax/ngx_http_accounting_module HTTP Accounting]&lt;br /&gt;
| Realtime netflow and status code monitor solution for nginx, need less memory and cpu than realtime log analyzing. Useful for http traffic accounting based on nginx config logic ( per-location-traffic or per-server-traffic ).&lt;br /&gt;
| [http://www.liulantao.com/portal/ Liu Lantao]&lt;br /&gt;
| [https://github.com/Lax/ngx_http_accounting_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://pushmodule.slact.net/ HTTP Push]&lt;br /&gt;
| Turn Nginx into an adept long-polling HTTP Push (Comet) server.&lt;br /&gt;
| Leo Ponomarev&lt;br /&gt;
| [http://pushmodule.slact.net/downloads/nginx_http_push_module-0.69.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpPushStreamModule|HTTP Push Stream]]&lt;br /&gt;
| Turn Nginx into an adept stream HTTP Push (Comet) server.&lt;br /&gt;
| [https://github.com/wandenberg Wandenberg Peixoto]&lt;br /&gt;
| [https://github.com/wandenberg/nginx-push-stream-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRedis|HTTP Redis]]&lt;br /&gt;
| [http://redis.io/ Redis] support.&lt;br /&gt;
| Sergey A. Osokin &amp;lt;osa@FreeBSD.ORG.ru&amp;gt;&lt;br /&gt;
| [http://people.FreeBSD.ORG/~osa/ngx_http_redis-0.3.5.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kung-fu-tzu/ngx_http_js_module#readme JavaScript]&lt;br /&gt;
| Embedding [http://www.mozilla.org/js/spidermonkey/ SpiderMonkey]. Full port of Perl module and more.&lt;br /&gt;
| [https://github.com/kung-fu-tzu Peter Leonov]&lt;br /&gt;
| [https://github.com/kung-fu-tzu/ngx_http_js_module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpIconvModule|Iconv]]&lt;br /&gt;
| A character encoding conversion nginx module using libiconv.&lt;br /&gt;
| [http://vimedia.org/ Calio], [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/calio/iconv-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLogRequestSpeed|Log Request Speed]]&lt;br /&gt;
| Log the time it took to process each request.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/replay/ngx_http_lower_upper_case Lower Upper Case]&lt;br /&gt;
| Simple module to upper-/lowercase a string in the Nginx config&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [https://github.com/replay/ngx_http_lower_upper_case Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpLuaModule Lua]&lt;br /&gt;
| Embed the power of Lua into nginx&lt;br /&gt;
| [http://github.com/chaoslawful chaoslawful], [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/chaoslawful/lua-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/alacner/nginx_lua_module Luafile]&lt;br /&gt;
| Embed the power of Lua into nginx very easy.&lt;br /&gt;
| [http://alacner.com alacner]&lt;br /&gt;
| [https://github.com/alacner/nginx_lua_module/tarball/master Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMemcModule|Memc]]&lt;br /&gt;
| An extended version of the standard memcached module that supports set, add, delete, and many more memcached commands.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/memc-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.grid.net.ru/nginx/mogilefs.en.html Mogilefs]&lt;br /&gt;
| Implements a MogileFS client, provides a replace to the Perlbal reverse proxy of the original MogileFS.&lt;br /&gt;
| Valery Kholodkov&lt;br /&gt;
| [http://www.grid.net.ru/nginx/download/nginx_mogilefs_module-1.0.2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[MP4StreamingLite|MP4 Streaming Lite]]&lt;br /&gt;
| Will seek to a certain time within H.264/MP4 files when provided with a &amp;quot;start&amp;quot; parameter in the URL. &lt;br /&gt;
| Jiang Hong&lt;br /&gt;
| [[MP4StreamingLite|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://naxsi.googlecode.com Naxsi]&lt;br /&gt;
| Web Application Firewall for nginx.&lt;br /&gt;
| Thibault Koechlin&lt;br /&gt;
| [http://naxsi.googlecode.com Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://xph.us/software/nginx-notice/ Notice]&lt;br /&gt;
| Serve static file to POST requests.&lt;br /&gt;
| Keith Rarick&lt;br /&gt;
| [http://xph.us/software/nginx-notice/nginx-notice-2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpOwnerMatchModule OwnerMatch]&lt;br /&gt;
| This module provides a simple file owner-based access control.&lt;br /&gt;
| [https://heiher.info Heiher]&lt;br /&gt;
| [http://heiher.info/sftp/files/Nginx-0.8.54-Add-OwnerMatch-module.patch Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://mauro-stettler.blogspot.com/2011/08/pecl-memcache-standard-loadbalancer-for.html PHP-Memache Standard Hash]&lt;br /&gt;
| This is a loadbalancer that imitates the PHP-Memcache standard hash's behaviour&lt;br /&gt;
| Mauro Stettler&lt;br /&gt;
| [https://github.com/replay/ngx_http_php_memcache_standard_balancer Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/replay/ngx_http_php_session PHP Session Parser]&lt;br /&gt;
| Extract values that are stored in a serialized PHP session&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [http://github.com/replay/ngx_http_php_session Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_postgres/ Postgres]&lt;br /&gt;
| Upstream module that allows nginx to communicate directly with PostgreSQL database.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_postgres/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://vitki.net/pubcookie Pubcookie]&lt;br /&gt;
| Adds [http://www.pubcookie.org Pubcookie]-based cross-site authentication method to Nginx.&lt;br /&gt;
| [http://www.vitki.net/ Vitki]&lt;br /&gt;
| [http://vitki.net/pubcookie#Installation Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/rds-csv-nginx-module RDS CSV]&lt;br /&gt;
| Help [http://github.com/chaoslawful/drizzle-nginx-module ngx_drizzle], [http://github.com/FRiCKLE/ngx_postgres/ ngx_postgres], and others emit Comma-Separated Values (CSV).&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/rds-csv-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/rds-json-nginx-module RDS JSON]&lt;br /&gt;
| Help [http://github.com/chaoslawful/drizzle-nginx-module ngx_drizzle], [http://github.com/FRiCKLE/ngx_postgres/ ngx_postgres], and others emit JSON data.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/rds-json-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRedis2Module|Redis2]]&lt;br /&gt;
| Upstream module for the full [http://redis.io/ Redis] 2.0 protocol&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/redis2-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/yuri-gushin/Roboo Roboo]&lt;br /&gt;
| HTTP Robot mitigator utilizing advanced non-interactive HTTP challenge/response mechanisms&lt;br /&gt;
| [http://www.ecl-labs.org/ Yuri Gushin, Alex Behar]&lt;br /&gt;
| [https://github.com/yuri-gushin/Roboo/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgx_rrd_graph|RRD Graph]]&lt;br /&gt;
| This module provides an HTTP interface to [http://oss.oetiker.ch/rrdtool/ RRDtool]'s graphing facilities.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/mod_rrd_graph Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSecureDownload|Secure Download]]&lt;br /&gt;
| Create expiring links.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler], Szymon Modzelewski&lt;br /&gt;
| [http://github.com/replay/ngx_http_secure_download Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/liseen/set-cconv-nginx-module/ Set CConv]&lt;br /&gt;
| Conversion between Simplified Chinese and Traditional Chinese at rewrite phase&lt;br /&gt;
| [http://github.com/liseen/ Liseen Wan]&lt;br /&gt;
| [http://github.com/liseen/set-cconv-nginx-module/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_hash Set Hash]&lt;br /&gt;
| Set a variable to a variety of hash functions (upper/lowercase), including MD5, SHA1 and Murmurhash 2&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_hash/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_lang Set Lang]&lt;br /&gt;
| Set a variable to indicate the language based on a variety of sources including cookies, GET/POST variables, Accept Language header and more&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_lang/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSetMiscModule Set Misc]&lt;br /&gt;
| Various set_xxx directives added to nginx's rewrite module (md5/sha1, sql/json quoting, and many more)&lt;br /&gt;
| [http://agentzh.org agentzh], [http://vimedia.org/ Calio], [http://github.com/shrimp/ shrimp]&lt;br /&gt;
| [http://github.com/agentzh/set-misc-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://nginx-sflow-module.googlecode.com sFlow]&lt;br /&gt;
| Operational performance monitoring with standard [http://sflow.org sFlow] protocol&lt;br /&gt;
| Neil McKee&lt;br /&gt;
| [http://code.google.com/p/nginx-sflow-module/downloads/list Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_slowfs_cache/ SlowFS Cache]&lt;br /&gt;
| Module adding ability to cache static files.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_slowfs_cache/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/muhgatus/spnego-http-auth-nginx-module SPNEGO]&lt;br /&gt;
| Support for SPNEGO/gssapi in nginx.&lt;br /&gt;
| [https://github.com/mike503 mike503]/[https://github.com/muhgatus/ muhgatus]&lt;br /&gt;
| [https://github.com/muhgatus/spnego-http-auth-nginx-module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSRCacheModule SR Cache]&lt;br /&gt;
| Transparent subrequest-based caching layout for arbitrary nginx locations (can be used with ngx_memc + memcached!)&lt;br /&gt;
| [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/agentzh/srcache-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/mikewest/nginx-static-etags Static etags]&lt;br /&gt;
| Nginx doesn't generate etags for static content. I'd like it to. Let's see if I can remember some C from college.&lt;br /&gt;
| [http://github.com/mikewest mikewest]&lt;br /&gt;
| [http://github.com/mikewest/nginx-static-etags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/zebrafishlabs/nginx-statsd Statsd]&lt;br /&gt;
| Adds the ability for Nginx to interacting with statsd.&lt;br /&gt;
| [https://github.com/zebrafishlabs zebrafishlabs]&lt;br /&gt;
| [https://github.com/zebrafishlabs/nginx-statsd Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://code.google.com/p/nginx-sticky-module/ Sticky upstream]&lt;br /&gt;
| A nginx module to add an upstream server persistance using cookies.&lt;br /&gt;
| [http://code.google.com/u/jerome@loyet.net/ Jérôme Loyet]&lt;br /&gt;
| [http://code.google.com/p/nginx-sticky-module/downloads/list Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpStripModule|Strip]]&lt;br /&gt;
| Whitespace remover.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [[File:mod_strip-0.1.tar.gz|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSubsModule Substitutions]&lt;br /&gt;
| A filter module which can do both regular expression and fixed string substitutions on response bodies.&lt;br /&gt;
| [http://yaoweibin.cn Weibin Yao]&lt;br /&gt;
| [http://code.google.com/p/substitutions4nginx/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_supervisord/ Supervisord]&lt;br /&gt;
| Module providing nginx with API to communicate with supervisord and manage (start/stop) backends on-demand.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_supervisord/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.grid.net.ru/nginx/upload.en.html Upload]&lt;br /&gt;
| Parses &amp;lt;code&amp;gt;multipart/form-data&amp;lt;/code&amp;gt; allowing arbitrary handling of uploaded files.&lt;br /&gt;
| Valery Kholodkov&lt;br /&gt;
| [http://www.grid.net.ru/nginx/upload.en.html#download Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUploadProgressModule|Upload Progress]]&lt;br /&gt;
| Tracks and reports upload progress.&lt;br /&gt;
| Brice Figureau&lt;br /&gt;
| [http://github.com/masterzen/nginx-upload-progress-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamConsistentHash|Upstream Consistent Hash]]&lt;br /&gt;
| Select backend based on Consistent hash ring.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [http://github.com/replay/ngx_http_consistent_hash Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamFairModule|Upstream Fair Balancer]]&lt;br /&gt;
| Sends an incoming request to the least-busy backend server, rather than distributing requests round-robin.&lt;br /&gt;
| Gregory Nosek&lt;br /&gt;
| [http://github.com/gnosek/nginx-upstream-fair Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamRequestHashModule|Upstream Hash]]&lt;br /&gt;
| Provides simple upstream load distribution by hashing a configurable variable.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/nginx_upstream_hash/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamKeepaliveModule|Upstream Keepalive]]&lt;br /&gt;
| Provides keep-alive connections to memcached upstreams.&lt;br /&gt;
| [http://mdounin.ru Maxim Dounin]&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_upstream_keepalive/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/wandenberg/nginx-video-thumbextractor-module Video Thumb Extractor]&lt;br /&gt;
| Nginx module to extract thumbs from a video file.&lt;br /&gt;
| [https://github.com/wandenberg Wandenberg Peixoto]&lt;br /&gt;
| [https://github.com/wandenberg/nginx-video-thumbextractor-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NgxWSGIModule|WSGI]]&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Wsgi WSGI] implementation for Nginx.  Allows easy deployment of Python applications.&lt;br /&gt;
| Manlio Perillo&lt;br /&gt;
| [http://hg.mperillo.ath.cx/nginx/mod_wsgi/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/xss-nginx-module XSS]&lt;br /&gt;
| Native support for cross-site scripting (XSS) in an nginx.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/xss-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NgxZip|Zip]]&lt;br /&gt;
| Assemble ZIP archives on the fly.&lt;br /&gt;
| [http://www.evanmiller.org/ Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/mod_zip/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Extended status module|Extended status module]]&lt;br /&gt;
| Extended status module for nginx&lt;br /&gt;
| 최영석(Choi Youngseok), 李金虎(Li Jinhu)&lt;br /&gt;
| [http://github.com/zealot83/ngx_http_extended_status_module Download]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tools for module developers ==&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib Nginx Auto Lib Core]&lt;br /&gt;
| Reusable file for module developers to include with their modules to easily and consistently handle including external libraries; used in the Auto Lib module and included in the Nginx Development Kit&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit Nginx Development Kit]&lt;br /&gt;
| An extension to the core functionality of Nginx which can be used as a basis for other modules&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit/downloads Download]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Third party patches =&lt;br /&gt;
These patches must be applied to the Nginx source code tree.   There's no guarantee these patches will apply to a particular version of Nginx.&lt;br /&gt;
&lt;br /&gt;
As with third party modules, these patches are not officially supported.  Your mileage may vary.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Log to syslog.&lt;br /&gt;
| Marlon de Boer&lt;br /&gt;
| [http://bugs.gentoo.org/attachment.cgi?id=197180 Patch against 0.8.4] (works on 0.7.x and 0.8.x) | [http://dl.dropbox.com/u/5836407/Patches/Nginx_0.8.49-syslog-support.txt Patch for version 0.8.49 with 'sh is not bash' fix] | [https://github.com/yaoweibin/nginx_syslog_patch Syslog Patch for Nginx 0.8.54+]&lt;br /&gt;
|-&lt;br /&gt;
| Disable nginx's memory pool to help valgrind and other tools (for nginx C developers only)&lt;br /&gt;
| [http://github.com/shrimp/ shrimp], [http://agentzh.spaces.live.com/ agentzh]&lt;br /&gt;
| [http://github.com/shrimp/no-pool-nginx Git repository for the patch]&lt;br /&gt;
|-&lt;br /&gt;
| SSL Session tickets distributed via memcached&lt;br /&gt;
| [http://hezmatt.org/~mpalmer/blog/2011/07/24/followup-to-ssl-session-caching-with-nginx.html Matthew Palmer]&lt;br /&gt;
| [https://github.com/mpalmer/nginx Git repository for changes]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* [http://github.com/search?type=Repositories&amp;amp;language=c&amp;amp;q=nginx&amp;amp;repo=&amp;amp;langOverride=&amp;amp;x=13&amp;amp;y=17&amp;amp;start_value=1 github search]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/3rdPartyModules</id>
		<title>3rdPartyModules</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/3rdPartyModules"/>
				<updated>2012-05-03T00:23:32Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Tools for module developers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Third party modules =&lt;br /&gt;
These modules are not officially supported. Nevertheless many of them may prove useful to many people.  Enjoy at your own risk.&lt;br /&gt;
&lt;br /&gt;
== Compiling third party modules ==&lt;br /&gt;
Modules are typically added by compiling them along with the Nginx source.&lt;br /&gt;
&lt;br /&gt;
From the Nginx source directory, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --add-module=/path/to/module1/source \&lt;br /&gt;
            --add-module=/path/to/module2/source&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use as many &amp;lt;code&amp;gt;--add-module&amp;lt;/code&amp;gt; arguments as needed.&lt;br /&gt;
&lt;br /&gt;
Be aware that some modules may require additional libraries to be installed on your system.&lt;br /&gt;
&lt;br /&gt;
== Writing your own module ==&lt;br /&gt;
[http://www.evanmiller.org/ Evan Miller] has written the [http://www.evanmiller.org/nginx-modules-guide.html definitive guide] to Nginx module development. But some parts of it are a little out of date. You've been warned.&lt;br /&gt;
&lt;br /&gt;
A github search turned up the [http://github.com/simpl/ngx_devel_kit Nginx Development Kit].  It seems to be more up to date.&lt;br /&gt;
&lt;br /&gt;
See also the tools at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
= Known modules =&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| [[AcceptLanguageModule|Accept Language]]&lt;br /&gt;
| Parses the &amp;lt;code&amp;gt;Accept-Language&amp;lt;/code&amp;gt; header and gives the most suitable locale from a list of supported locales.&lt;br /&gt;
| Guillaume Maury&lt;br /&gt;
| [http://github.com/giom/nginx_accept_language_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAccessKeyModule|Access Key]]&lt;br /&gt;
| Denies access unless the request URL contains an access key. &lt;br /&gt;
| Mykola Grechukh&lt;br /&gt;
| [http://wiki.nginx.org/File:Nginx-accesskey-2.0.3.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/rsms/afcgi AFCGI]&lt;br /&gt;
| Asynchronous/multiplexing FastCGI for nginx (incl. ref server implementation)&lt;br /&gt;
| [http://github.com/rsms rsms]&lt;br /&gt;
| [http://github.com/rsms/afcgi Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/array-var-nginx-module Array Var]&lt;br /&gt;
| Add support for array variables to nginx config files&lt;br /&gt;
| [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/agentzh/array-var-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAuthDigestModule|Auth Digest]]&lt;br /&gt;
| HTTP Digest Authentication.&lt;br /&gt;
| [http://samizdat.cc Christian Swinehart]&lt;br /&gt;
| [https://github.com/samizdatco/nginx-http-auth-digest Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://web.iti.upv.es/~sto/nginx/ Auth PAM]&lt;br /&gt;
| HTTP Basic Authentication using PAM.&lt;br /&gt;
| Sergio Talens-Oliag&lt;br /&gt;
| [http://web.iti.upv.es/~sto/nginx/ngx_http_auth_pam_module-1.2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_auth_request_module/ Auth Request]&lt;br /&gt;
| Allows authorization based on subrequest result.&lt;br /&gt;
| [http://mdounin.ru Maxim Dounin]&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_auth_request_module/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib Auto Lib]&lt;br /&gt;
| Reuse pre-compiled/installed versions of OpenSSL, PCRE and Zlib without re-compiling them each time Nginx is compiled&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/anomalizer/ngx_aws_auth AWS auth]&lt;br /&gt;
| Generate security headers for GET requests to Amazon S3.&lt;br /&gt;
| [http://anomalizer.net/statistically-incorrect Arvind Jayaprakash]&lt;br /&gt;
| [http://github.com/anomalizer/ngx_aws_auth/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_cache_purge/ Cache Purge]&lt;br /&gt;
| Module adding ability to purge content from FastCGI, proxy, and uWSGI caches.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_cache_purge/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpChunkinModule|Chunkin]]&lt;br /&gt;
| HTTP 1.1 chunked-encoding request body support for Nginx.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/chunkin-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCircleGifModule|Circle GIF]]&lt;br /&gt;
| Generates simple circle images with the colors and size specified in the URL.&lt;br /&gt;
| [http://www.evanmiller.org/ Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/nginx_circle_gif/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://ngx-ctpp.vbart.info/ CT++]&lt;br /&gt;
| Embeds  [http://ctpp.havoc.ru/en/whatis.html CT++ (or CTPP2)]  VM, the execution part of a high-performance template engine system.&lt;br /&gt;
| [http://vbart.info/ Valentin V. Bartenev]&lt;br /&gt;
| [http://dl.vbart.ru/ngx-ctpp/ngx_ctpp2-0.5.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit Development Kit]&lt;br /&gt;
| An extension to the core functionality of Nginx which can be used as a basis for other modules&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDrizzleModule|Drizzle]]&lt;br /&gt;
| Make nginx talk directly to mysql and drizzle by libdrizzle.&lt;br /&gt;
| [http://github.com/chaoslawful/ chaoslawful], [http://agentzh.org/ agentzh], Piotr Sikora&lt;br /&gt;
| [http://github.com/chaoslawful/drizzle-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/kali/nginx-dynamic-etags Dynamic etags]&lt;br /&gt;
| Nginx module for etags on dynamic content&lt;br /&gt;
| [http://github.com/kali kali]&lt;br /&gt;
| [http://github.com/kali/nginx-dynamic-etags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpEchoModule|Echo]]&lt;br /&gt;
| Brings &amp;quot;echo&amp;quot;, &amp;quot;sleep&amp;quot;, &amp;quot;time&amp;quot;, &amp;quot;exec&amp;quot;, and more shell-style goodies to Nginx config file.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/echo-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/bpaquet/ngx_http_enhanced_memcached_module Enhanced Memcached]&lt;br /&gt;
| Repackaging of the standard memcached module to add features : custom http headers, hash keys, store entries in memcached with post http request, flush, key namespace&lt;br /&gt;
| [https://github.com/bpaquet Bertrand Paquet]&lt;br /&gt;
| [https://github.com/bpaquet/ngx_http_enhanced_memcached_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/encrypted-session-nginx-module Encrypted Session]&lt;br /&gt;
| encrypt and decrypt nginx variable values, can be used for light-weight session-based authentication&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/encrypted-session-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/vkholodkov/nginx-eval-module Eval]&lt;br /&gt;
| A module for evaluating memcached or proxy response into variable.&lt;br /&gt;
| [http://github.com/vkholodkov/ vkholodkov]&lt;br /&gt;
| [http://github.com/vkholodkov/nginx-eval-module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/nginx-eval-module Eval (agentzh's fork)]&lt;br /&gt;
| Enhanced ngx_eval that can capture arbitrary subrequest's responses into nginx variables (can even with output filters enabled)&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/nginx-eval-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Expressz|Expressz]]&lt;br /&gt;
| First of the Expressz lineup modules, Off-loading image and file/stream compression to (a) GPU(s).&lt;br /&gt;
| [http://www.acronymlabs.com/ Jason Giedymin at AcronymLabs]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/ry/nginx-ey-balancer/tree/master EY Balancer]&lt;br /&gt;
| Adds a request queue to Nginx that allows the limiting of concurrent requests passed to the upstream.&lt;br /&gt;
| Ry Dahl&lt;br /&gt;
| [http://github.com/ry/nginx-ey-balancer/tarball/master Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/NgxFancyIndex Fancy Indexes]&lt;br /&gt;
| Like the built-in [[Modules#HTTP_Auto_Index|autoindex]] module, but fancier.&lt;br /&gt;
| Adrian Perez de Castro&lt;br /&gt;
| [http://gitorious.org/ngx-fancyindex/ngx-fancyindex Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFormInputModule|Form Input]]&lt;br /&gt;
| This module reads HTTP POST request body and parse the arguments into nginx variables.&lt;br /&gt;
| [http://vimedia.org/ Calio], [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/calio/form-input-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Http3rdPartyGeoIPModule|GeoIP]]&lt;br /&gt;
| Country code lookups via the [http://www.maxmind.com/ MaxMind] GeoIP API.&lt;br /&gt;
| [http://www.spilgames.com/ SPIL GAMES]&lt;br /&gt;
| [[File:Nginx-geoip-0.2.tar.gz|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/mdirolf/nginx-gridfs GridFS]&lt;br /&gt;
| Nginx module for serving files from MongoDB's GridFS.&lt;br /&gt;
| [http://github.com/mdirolf mdirolf]&lt;br /&gt;
| [http://github.com/mdirolf/nginx-gridfs Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHeadersMoreModule|Headers More]]&lt;br /&gt;
| Set and clear input and output headers...more than &amp;quot;add&amp;quot;!&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/headers-more-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHealthcheckModule|HTTP Healthcheck]]&lt;br /&gt;
| Health check HTTP servers inside an upstream so you don't forward requests to bad hosts&lt;br /&gt;
| Jack Lindamood&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Lax/ngx_http_accounting_module HTTP Accounting]&lt;br /&gt;
| Realtime netflow and status code monitor solution for nginx, need less memory and cpu than realtime log analyzing. Useful for http traffic accounting based on nginx config logic ( per-location-traffic or per-server-traffic ).&lt;br /&gt;
| [http://www.liulantao.com/portal/ Liu Lantao]&lt;br /&gt;
| [https://github.com/Lax/ngx_http_accounting_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://pushmodule.slact.net/ HTTP Push]&lt;br /&gt;
| Turn Nginx into an adept long-polling HTTP Push (Comet) server.&lt;br /&gt;
| Leo Ponomarev&lt;br /&gt;
| [http://pushmodule.slact.net/downloads/nginx_http_push_module-0.69.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpPushStreamModule|HTTP Push Stream]]&lt;br /&gt;
| Turn Nginx into an adept stream HTTP Push (Comet) server.&lt;br /&gt;
| [https://github.com/wandenberg Wandenberg Peixoto]&lt;br /&gt;
| [https://github.com/wandenberg/nginx-push-stream-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRedis|HTTP Redis]]&lt;br /&gt;
| [http://redis.io/ Redis] support.&lt;br /&gt;
| Sergey A. Osokin &amp;lt;osa@FreeBSD.ORG.ru&amp;gt;&lt;br /&gt;
| [http://people.FreeBSD.ORG/~osa/ngx_http_redis-0.3.5.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kung-fu-tzu/ngx_http_js_module#readme JavaScript]&lt;br /&gt;
| Embedding [http://www.mozilla.org/js/spidermonkey/ SpiderMonkey]. Full port of Perl module and more.&lt;br /&gt;
| [https://github.com/kung-fu-tzu Peter Leonov]&lt;br /&gt;
| [https://github.com/kung-fu-tzu/ngx_http_js_module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpIconvModule|Iconv]]&lt;br /&gt;
| A character encoding conversion nginx module using libiconv.&lt;br /&gt;
| [http://vimedia.org/ Calio], [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/calio/iconv-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLogRequestSpeed|Log Request Speed]]&lt;br /&gt;
| Log the time it took to process each request.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/replay/ngx_http_lower_upper_case Lower Upper Case]&lt;br /&gt;
| Simple module to upper-/lowercase a string in the Nginx config&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [https://github.com/replay/ngx_http_lower_upper_case Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpLuaModule Lua]&lt;br /&gt;
| Embed the power of Lua into nginx&lt;br /&gt;
| [http://github.com/chaoslawful chaoslawful], [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/chaoslawful/lua-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/alacner/nginx_lua_module Luafile]&lt;br /&gt;
| Embed the power of Lua into nginx very easy.&lt;br /&gt;
| [http://alacner.com alacner]&lt;br /&gt;
| [https://github.com/alacner/nginx_lua_module/tarball/master Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMemcModule|Memc]]&lt;br /&gt;
| An extended version of the standard memcached module that supports set, add, delete, and many more memcached commands.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/memc-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.grid.net.ru/nginx/mogilefs.en.html Mogilefs]&lt;br /&gt;
| Implements a MogileFS client, provides a replace to the Perlbal reverse proxy of the original MogileFS.&lt;br /&gt;
| Valery Kholodkov&lt;br /&gt;
| [http://www.grid.net.ru/nginx/download/nginx_mogilefs_module-1.0.2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[MP4StreamingLite|MP4 Streaming Lite]]&lt;br /&gt;
| Will seek to a certain time within H.264/MP4 files when provided with a &amp;quot;start&amp;quot; parameter in the URL. &lt;br /&gt;
| Jiang Hong&lt;br /&gt;
| [[MP4StreamingLite|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://naxsi.googlecode.com Naxsi]&lt;br /&gt;
| Web Application Firewall for nginx.&lt;br /&gt;
| Thibault Koechlin&lt;br /&gt;
| [http://naxsi.googlecode.com Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://xph.us/software/nginx-notice/ Notice]&lt;br /&gt;
| Serve static file to POST requests.&lt;br /&gt;
| Keith Rarick&lt;br /&gt;
| [http://xph.us/software/nginx-notice/nginx-notice-2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpOwnerMatchModule OwnerMatch]&lt;br /&gt;
| This module provides a simple file owner-based access control.&lt;br /&gt;
| [https://heiher.info Heiher]&lt;br /&gt;
| [http://heiher.info/sftp/files/Nginx-0.8.54-Add-OwnerMatch-module.patch Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://mauro-stettler.blogspot.com/2011/08/pecl-memcache-standard-loadbalancer-for.html PHP-Memache Standard Hash]&lt;br /&gt;
| This is a loadbalancer that imitates the PHP-Memcache standard hash's behaviour&lt;br /&gt;
| Mauro Stettler&lt;br /&gt;
| [https://github.com/replay/ngx_http_php_memcache_standard_balancer Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/replay/ngx_http_php_session PHP Session Parser]&lt;br /&gt;
| Extract values that are stored in a serialized PHP session&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [http://github.com/replay/ngx_http_php_session Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_postgres/ Postgres]&lt;br /&gt;
| Upstream module that allows nginx to communicate directly with PostgreSQL database.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_postgres/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://vitki.net/pubcookie Pubcookie]&lt;br /&gt;
| Adds [http://www.pubcookie.org Pubcookie]-based cross-site authentication method to Nginx.&lt;br /&gt;
| [http://www.vitki.net/ Vitki]&lt;br /&gt;
| [http://vitki.net/pubcookie#Installation Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/rds-csv-nginx-module RDS CSV]&lt;br /&gt;
| Help [http://github.com/chaoslawful/drizzle-nginx-module ngx_drizzle], [http://github.com/FRiCKLE/ngx_postgres/ ngx_postgres], and others emit Comma-Separated Values (CSV).&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/rds-csv-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/rds-json-nginx-module RDS JSON]&lt;br /&gt;
| Help [http://github.com/chaoslawful/drizzle-nginx-module ngx_drizzle], [http://github.com/FRiCKLE/ngx_postgres/ ngx_postgres], and others emit JSON data.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/rds-json-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRedis2Module|Redis2]]&lt;br /&gt;
| Upstream module for the full [http://redis.io/ Redis] 2.0 protocol&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/redis2-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/yuri-gushin/Roboo Roboo]&lt;br /&gt;
| HTTP Robot mitigator utilizing advanced non-interactive HTTP challenge/response mechanisms&lt;br /&gt;
| [http://www.ecl-labs.org/ Yuri Gushin, Alex Behar]&lt;br /&gt;
| [https://github.com/yuri-gushin/Roboo/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgx_rrd_graph|RRD Graph]]&lt;br /&gt;
| This module provides an HTTP interface to [http://oss.oetiker.ch/rrdtool/ RRDtool]'s graphing facilities.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/mod_rrd_graph Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSecureDownload|Secure Download]]&lt;br /&gt;
| Create expiring links.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler], Szymon Modzelewski&lt;br /&gt;
| [http://github.com/replay/ngx_http_secure_download Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/liseen/set-cconv-nginx-module/ Set CConv]&lt;br /&gt;
| Conversion between Simplified Chinese and Traditional Chinese at rewrite phase&lt;br /&gt;
| [http://github.com/liseen/ Liseen Wan]&lt;br /&gt;
| [http://github.com/liseen/set-cconv-nginx-module/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_hash Set Hash]&lt;br /&gt;
| Set a variable to a variety of hash functions (upper/lowercase), including MD5, SHA1 and Murmurhash 2&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_hash/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_lang Set Lang]&lt;br /&gt;
| Set a variable to indicate the language based on a variety of sources including cookies, GET/POST variables, Accept Language header and more&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_lang/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSetMiscModule Set Misc]&lt;br /&gt;
| Various set_xxx directives added to nginx's rewrite module (md5/sha1, sql/json quoting, and many more)&lt;br /&gt;
| [http://agentzh.org agentzh], [http://vimedia.org/ Calio], [http://github.com/shrimp/ shrimp]&lt;br /&gt;
| [http://github.com/agentzh/set-misc-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://nginx-sflow-module.googlecode.com sFlow]&lt;br /&gt;
| Operational performance monitoring with standard [http://sflow.org sFlow] protocol&lt;br /&gt;
| Neil McKee&lt;br /&gt;
| [http://code.google.com/p/nginx-sflow-module/downloads/list Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_slowfs_cache/ SlowFS Cache]&lt;br /&gt;
| Module adding ability to cache static files.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_slowfs_cache/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/muhgatus/spnego-http-auth-nginx-module SPNEGO]&lt;br /&gt;
| Support for SPNEGO/gssapi in nginx.&lt;br /&gt;
| [https://github.com/mike503 mike503]/[https://github.com/muhgatus/ muhgatus]&lt;br /&gt;
| [https://github.com/muhgatus/spnego-http-auth-nginx-module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSRCacheModule SR Cache]&lt;br /&gt;
| Transparent subrequest-based caching layout for arbitrary nginx locations (can be used with ngx_memc + memcached!)&lt;br /&gt;
| [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/agentzh/srcache-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/mikewest/nginx-static-etags Static etags]&lt;br /&gt;
| Nginx doesn't generate etags for static content. I'd like it to. Let's see if I can remember some C from college.&lt;br /&gt;
| [http://github.com/mikewest mikewest]&lt;br /&gt;
| [http://github.com/mikewest/nginx-static-etags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/zebrafishlabs/nginx-statsd Statsd]&lt;br /&gt;
| Adds the ability for Nginx to interacting with statsd.&lt;br /&gt;
| [https://github.com/zebrafishlabs zebrafishlabs]&lt;br /&gt;
| [https://github.com/zebrafishlabs/nginx-statsd Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://code.google.com/p/nginx-sticky-module/ Sticky upstream]&lt;br /&gt;
| A nginx module to add an upstream server persistance using cookies.&lt;br /&gt;
| [http://code.google.com/u/jerome@loyet.net/ Jérôme Loyet]&lt;br /&gt;
| [http://code.google.com/p/nginx-sticky-module/downloads/list Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpStripModule|Strip]]&lt;br /&gt;
| Whitespace remover.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [[File:mod_strip-0.1.tar.gz|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSubsModule Substitutions]&lt;br /&gt;
| A filter module which can do both regular expression and fixed string substitutions on response bodies.&lt;br /&gt;
| [http://yaoweibin.cn Weibin Yao]&lt;br /&gt;
| [http://code.google.com/p/substitutions4nginx/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_supervisord/ Supervisord]&lt;br /&gt;
| Module providing nginx with API to communicate with supervisord and manage (start/stop) backends on-demand.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_supervisord/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.grid.net.ru/nginx/upload.en.html Upload]&lt;br /&gt;
| Parses &amp;lt;code&amp;gt;multipart/form-data&amp;lt;/code&amp;gt; allowing arbitrary handling of uploaded files.&lt;br /&gt;
| Valery Kholodkov&lt;br /&gt;
| [http://www.grid.net.ru/nginx/upload.en.html#download Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUploadProgressModule|Upload Progress]]&lt;br /&gt;
| Tracks and reports upload progress.&lt;br /&gt;
| Brice Figureau&lt;br /&gt;
| [http://github.com/masterzen/nginx-upload-progress-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamConsistentHash|Upstream Consistent Hash]]&lt;br /&gt;
| Select backend based on Consistent hash ring.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [http://github.com/replay/ngx_http_consistent_hash Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamFairModule|Upstream Fair Balancer]]&lt;br /&gt;
| Sends an incoming request to the least-busy backend server, rather than distributing requests round-robin.&lt;br /&gt;
| Gregory Nosek&lt;br /&gt;
| [http://github.com/gnosek/nginx-upstream-fair Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamRequestHashModule|Upstream Hash]]&lt;br /&gt;
| Provides simple upstream load distribution by hashing a configurable variable.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/nginx_upstream_hash/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamKeepaliveModule|Upstream Keepalive]]&lt;br /&gt;
| Provides keep-alive connections to memcached upstreams.&lt;br /&gt;
| [http://mdounin.ru Maxim Dounin]&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_upstream_keepalive/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/wandenberg/nginx-video-thumbextractor-module Video Thumb Extractor]&lt;br /&gt;
| Nginx module to extract thumbs from a video file.&lt;br /&gt;
| [https://github.com/wandenberg Wandenberg Peixoto]&lt;br /&gt;
| [https://github.com/wandenberg/nginx-video-thumbextractor-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NgxWSGIModule|WSGI]]&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Wsgi WSGI] implementation for Nginx.  Allows easy deployment of Python applications.&lt;br /&gt;
| Manlio Perillo&lt;br /&gt;
| [http://hg.mperillo.ath.cx/nginx/mod_wsgi/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/xss-nginx-module XSS]&lt;br /&gt;
| Native support for cross-site scripting (XSS) in an nginx.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/xss-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NgxZip|Zip]]&lt;br /&gt;
| Assemble ZIP archives on the fly.&lt;br /&gt;
| [http://www.evanmiller.org/ Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/mod_zip/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Extended status module|Extended status module]]&lt;br /&gt;
| Extended status module for nginx&lt;br /&gt;
| 최영석(Choi Youngseok), 李金虎(Li Jinhu)&lt;br /&gt;
| [http://github.com/zealot83/ngx_http_extended_status_module Download]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tools for module developers ==&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib Nginx Auto Lib Core]&lt;br /&gt;
| Reusable file for module developers to include with their modules to easily and consistently handle including external libraries; used in the Auto Lib module and included in the Nginx Development Kit&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit Nginx Development Kit]&lt;br /&gt;
| An extension to the core functionality of Nginx which can be used as a basis for other modules&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit/downloads Download]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Third party patches =&lt;br /&gt;
These patches must be applied to the Nginx source code tree.   There's no guarantee these patches will apply to a particular version of Nginx.&lt;br /&gt;
&lt;br /&gt;
As with third party modules, these patches are not officially supported.  Your mileage may vary.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Log to syslog.&lt;br /&gt;
| Marlon de Boer&lt;br /&gt;
| [http://bugs.gentoo.org/attachment.cgi?id=197180 Patch against 0.8.4] (works on 0.7.x and 0.8.x) | [http://dl.dropbox.com/u/5836407/Patches/Nginx_0.8.49-syslog-support.txt Patch for version 0.8.49 with 'sh is not bash' fix] | [https://github.com/yaoweibin/nginx_syslog_patch Syslog Patch for Nginx 0.8.54+]&lt;br /&gt;
|-&lt;br /&gt;
| Disable nginx's memory pool to help valgrind and other tools (for nginx C developers only)&lt;br /&gt;
| [http://github.com/shrimp/ shrimp], [http://agentzh.spaces.live.com/ agentzh]&lt;br /&gt;
| [http://github.com/shrimp/no-pool-nginx Git repository for the patch]&lt;br /&gt;
|-&lt;br /&gt;
| SSL Session tickets distributed via memcached&lt;br /&gt;
| [http://hezmatt.org/~mpalmer/blog/2011/07/24/followup-to-ssl-session-caching-with-nginx.html Matthew Palmer]&lt;br /&gt;
| [https://github.com/mpalmer/nginx Git repository for changes]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* [http://github.com/search?type=Repositories&amp;amp;language=c&amp;amp;q=nginx&amp;amp;repo=&amp;amp;langOverride=&amp;amp;x=13&amp;amp;y=17&amp;amp;start_value=1 github search]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/3rdPartyModules</id>
		<title>3rdPartyModules</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/3rdPartyModules"/>
				<updated>2012-05-03T00:23:14Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Known modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Third party modules =&lt;br /&gt;
These modules are not officially supported. Nevertheless many of them may prove useful to many people.  Enjoy at your own risk.&lt;br /&gt;
&lt;br /&gt;
== Compiling third party modules ==&lt;br /&gt;
Modules are typically added by compiling them along with the Nginx source.&lt;br /&gt;
&lt;br /&gt;
From the Nginx source directory, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --add-module=/path/to/module1/source \&lt;br /&gt;
            --add-module=/path/to/module2/source&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use as many &amp;lt;code&amp;gt;--add-module&amp;lt;/code&amp;gt; arguments as needed.&lt;br /&gt;
&lt;br /&gt;
Be aware that some modules may require additional libraries to be installed on your system.&lt;br /&gt;
&lt;br /&gt;
== Writing your own module ==&lt;br /&gt;
[http://www.evanmiller.org/ Evan Miller] has written the [http://www.evanmiller.org/nginx-modules-guide.html definitive guide] to Nginx module development. But some parts of it are a little out of date. You've been warned.&lt;br /&gt;
&lt;br /&gt;
A github search turned up the [http://github.com/simpl/ngx_devel_kit Nginx Development Kit].  It seems to be more up to date.&lt;br /&gt;
&lt;br /&gt;
See also the tools at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
= Known modules =&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| [[AcceptLanguageModule|Accept Language]]&lt;br /&gt;
| Parses the &amp;lt;code&amp;gt;Accept-Language&amp;lt;/code&amp;gt; header and gives the most suitable locale from a list of supported locales.&lt;br /&gt;
| Guillaume Maury&lt;br /&gt;
| [http://github.com/giom/nginx_accept_language_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAccessKeyModule|Access Key]]&lt;br /&gt;
| Denies access unless the request URL contains an access key. &lt;br /&gt;
| Mykola Grechukh&lt;br /&gt;
| [http://wiki.nginx.org/File:Nginx-accesskey-2.0.3.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/rsms/afcgi AFCGI]&lt;br /&gt;
| Asynchronous/multiplexing FastCGI for nginx (incl. ref server implementation)&lt;br /&gt;
| [http://github.com/rsms rsms]&lt;br /&gt;
| [http://github.com/rsms/afcgi Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/array-var-nginx-module Array Var]&lt;br /&gt;
| Add support for array variables to nginx config files&lt;br /&gt;
| [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/agentzh/array-var-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAuthDigestModule|Auth Digest]]&lt;br /&gt;
| HTTP Digest Authentication.&lt;br /&gt;
| [http://samizdat.cc Christian Swinehart]&lt;br /&gt;
| [https://github.com/samizdatco/nginx-http-auth-digest Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://web.iti.upv.es/~sto/nginx/ Auth PAM]&lt;br /&gt;
| HTTP Basic Authentication using PAM.&lt;br /&gt;
| Sergio Talens-Oliag&lt;br /&gt;
| [http://web.iti.upv.es/~sto/nginx/ngx_http_auth_pam_module-1.2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_auth_request_module/ Auth Request]&lt;br /&gt;
| Allows authorization based on subrequest result.&lt;br /&gt;
| [http://mdounin.ru Maxim Dounin]&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_auth_request_module/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib Auto Lib]&lt;br /&gt;
| Reuse pre-compiled/installed versions of OpenSSL, PCRE and Zlib without re-compiling them each time Nginx is compiled&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/anomalizer/ngx_aws_auth AWS auth]&lt;br /&gt;
| Generate security headers for GET requests to Amazon S3.&lt;br /&gt;
| [http://anomalizer.net/statistically-incorrect Arvind Jayaprakash]&lt;br /&gt;
| [http://github.com/anomalizer/ngx_aws_auth/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_cache_purge/ Cache Purge]&lt;br /&gt;
| Module adding ability to purge content from FastCGI, proxy, and uWSGI caches.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_cache_purge/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpChunkinModule|Chunkin]]&lt;br /&gt;
| HTTP 1.1 chunked-encoding request body support for Nginx.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/chunkin-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCircleGifModule|Circle GIF]]&lt;br /&gt;
| Generates simple circle images with the colors and size specified in the URL.&lt;br /&gt;
| [http://www.evanmiller.org/ Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/nginx_circle_gif/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://ngx-ctpp.vbart.info/ CT++]&lt;br /&gt;
| Embeds  [http://ctpp.havoc.ru/en/whatis.html CT++ (or CTPP2)]  VM, the execution part of a high-performance template engine system.&lt;br /&gt;
| [http://vbart.info/ Valentin V. Bartenev]&lt;br /&gt;
| [http://dl.vbart.ru/ngx-ctpp/ngx_ctpp2-0.5.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit Development Kit]&lt;br /&gt;
| An extension to the core functionality of Nginx which can be used as a basis for other modules&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDrizzleModule|Drizzle]]&lt;br /&gt;
| Make nginx talk directly to mysql and drizzle by libdrizzle.&lt;br /&gt;
| [http://github.com/chaoslawful/ chaoslawful], [http://agentzh.org/ agentzh], Piotr Sikora&lt;br /&gt;
| [http://github.com/chaoslawful/drizzle-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/kali/nginx-dynamic-etags Dynamic etags]&lt;br /&gt;
| Nginx module for etags on dynamic content&lt;br /&gt;
| [http://github.com/kali kali]&lt;br /&gt;
| [http://github.com/kali/nginx-dynamic-etags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpEchoModule|Echo]]&lt;br /&gt;
| Brings &amp;quot;echo&amp;quot;, &amp;quot;sleep&amp;quot;, &amp;quot;time&amp;quot;, &amp;quot;exec&amp;quot;, and more shell-style goodies to Nginx config file.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/echo-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/bpaquet/ngx_http_enhanced_memcached_module Enhanced Memcached]&lt;br /&gt;
| Repackaging of the standard memcached module to add features : custom http headers, hash keys, store entries in memcached with post http request, flush, key namespace&lt;br /&gt;
| [https://github.com/bpaquet Bertrand Paquet]&lt;br /&gt;
| [https://github.com/bpaquet/ngx_http_enhanced_memcached_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/encrypted-session-nginx-module Encrypted Session]&lt;br /&gt;
| encrypt and decrypt nginx variable values, can be used for light-weight session-based authentication&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/encrypted-session-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/vkholodkov/nginx-eval-module Eval]&lt;br /&gt;
| A module for evaluating memcached or proxy response into variable.&lt;br /&gt;
| [http://github.com/vkholodkov/ vkholodkov]&lt;br /&gt;
| [http://github.com/vkholodkov/nginx-eval-module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/nginx-eval-module Eval (agentzh's fork)]&lt;br /&gt;
| Enhanced ngx_eval that can capture arbitrary subrequest's responses into nginx variables (can even with output filters enabled)&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/nginx-eval-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Expressz|Expressz]]&lt;br /&gt;
| First of the Expressz lineup modules, Off-loading image and file/stream compression to (a) GPU(s).&lt;br /&gt;
| [http://www.acronymlabs.com/ Jason Giedymin at AcronymLabs]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/ry/nginx-ey-balancer/tree/master EY Balancer]&lt;br /&gt;
| Adds a request queue to Nginx that allows the limiting of concurrent requests passed to the upstream.&lt;br /&gt;
| Ry Dahl&lt;br /&gt;
| [http://github.com/ry/nginx-ey-balancer/tarball/master Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/NgxFancyIndex Fancy Indexes]&lt;br /&gt;
| Like the built-in [[Modules#HTTP_Auto_Index|autoindex]] module, but fancier.&lt;br /&gt;
| Adrian Perez de Castro&lt;br /&gt;
| [http://gitorious.org/ngx-fancyindex/ngx-fancyindex Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFormInputModule|Form Input]]&lt;br /&gt;
| This module reads HTTP POST request body and parse the arguments into nginx variables.&lt;br /&gt;
| [http://vimedia.org/ Calio], [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/calio/form-input-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Http3rdPartyGeoIPModule|GeoIP]]&lt;br /&gt;
| Country code lookups via the [http://www.maxmind.com/ MaxMind] GeoIP API.&lt;br /&gt;
| [http://www.spilgames.com/ SPIL GAMES]&lt;br /&gt;
| [[File:Nginx-geoip-0.2.tar.gz|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/mdirolf/nginx-gridfs GridFS]&lt;br /&gt;
| Nginx module for serving files from MongoDB's GridFS.&lt;br /&gt;
| [http://github.com/mdirolf mdirolf]&lt;br /&gt;
| [http://github.com/mdirolf/nginx-gridfs Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHeadersMoreModule|Headers More]]&lt;br /&gt;
| Set and clear input and output headers...more than &amp;quot;add&amp;quot;!&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/headers-more-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHealthcheckModule|HTTP Healthcheck]]&lt;br /&gt;
| Health check HTTP servers inside an upstream so you don't forward requests to bad hosts&lt;br /&gt;
| Jack Lindamood&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Lax/ngx_http_accounting_module HTTP Accounting]&lt;br /&gt;
| Realtime netflow and status code monitor solution for nginx, need less memory and cpu than realtime log analyzing. Useful for http traffic accounting based on nginx config logic ( per-location-traffic or per-server-traffic ).&lt;br /&gt;
| [http://www.liulantao.com/portal/ Liu Lantao]&lt;br /&gt;
| [https://github.com/Lax/ngx_http_accounting_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://pushmodule.slact.net/ HTTP Push]&lt;br /&gt;
| Turn Nginx into an adept long-polling HTTP Push (Comet) server.&lt;br /&gt;
| Leo Ponomarev&lt;br /&gt;
| [http://pushmodule.slact.net/downloads/nginx_http_push_module-0.69.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpPushStreamModule|HTTP Push Stream]]&lt;br /&gt;
| Turn Nginx into an adept stream HTTP Push (Comet) server.&lt;br /&gt;
| [https://github.com/wandenberg Wandenberg Peixoto]&lt;br /&gt;
| [https://github.com/wandenberg/nginx-push-stream-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRedis|HTTP Redis]]&lt;br /&gt;
| [http://redis.io/ Redis] support.&lt;br /&gt;
| Sergey A. Osokin &amp;lt;osa@FreeBSD.ORG.ru&amp;gt;&lt;br /&gt;
| [http://people.FreeBSD.ORG/~osa/ngx_http_redis-0.3.5.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kung-fu-tzu/ngx_http_js_module#readme JavaScript]&lt;br /&gt;
| Embedding [http://www.mozilla.org/js/spidermonkey/ SpiderMonkey]. Full port of Perl module and more.&lt;br /&gt;
| [https://github.com/kung-fu-tzu Peter Leonov]&lt;br /&gt;
| [https://github.com/kung-fu-tzu/ngx_http_js_module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpIconvModule|Iconv]]&lt;br /&gt;
| A character encoding conversion nginx module using libiconv.&lt;br /&gt;
| [http://vimedia.org/ Calio], [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/calio/iconv-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLogRequestSpeed|Log Request Speed]]&lt;br /&gt;
| Log the time it took to process each request.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/replay/ngx_http_lower_upper_case Lower Upper Case]&lt;br /&gt;
| Simple module to upper-/lowercase a string in the Nginx config&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [https://github.com/replay/ngx_http_lower_upper_case Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpLuaModule Lua]&lt;br /&gt;
| Embed the power of Lua into nginx&lt;br /&gt;
| [http://github.com/chaoslawful chaoslawful], [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/chaoslawful/lua-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/alacner/nginx_lua_module Luafile]&lt;br /&gt;
| Embed the power of Lua into nginx very easy.&lt;br /&gt;
| [http://alacner.com alacner]&lt;br /&gt;
| [https://github.com/alacner/nginx_lua_module/tarball/master Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMemcModule|Memc]]&lt;br /&gt;
| An extended version of the standard memcached module that supports set, add, delete, and many more memcached commands.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/memc-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.grid.net.ru/nginx/mogilefs.en.html Mogilefs]&lt;br /&gt;
| Implements a MogileFS client, provides a replace to the Perlbal reverse proxy of the original MogileFS.&lt;br /&gt;
| Valery Kholodkov&lt;br /&gt;
| [http://www.grid.net.ru/nginx/download/nginx_mogilefs_module-1.0.2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[MP4StreamingLite|MP4 Streaming Lite]]&lt;br /&gt;
| Will seek to a certain time within H.264/MP4 files when provided with a &amp;quot;start&amp;quot; parameter in the URL. &lt;br /&gt;
| Jiang Hong&lt;br /&gt;
| [[MP4StreamingLite|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://naxsi.googlecode.com Naxsi]&lt;br /&gt;
| Web Application Firewall for nginx.&lt;br /&gt;
| Thibault Koechlin&lt;br /&gt;
| [http://naxsi.googlecode.com Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://xph.us/software/nginx-notice/ Notice]&lt;br /&gt;
| Serve static file to POST requests.&lt;br /&gt;
| Keith Rarick&lt;br /&gt;
| [http://xph.us/software/nginx-notice/nginx-notice-2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpOwnerMatchModule OwnerMatch]&lt;br /&gt;
| This module provides a simple file owner-based access control.&lt;br /&gt;
| [https://heiher.info Heiher]&lt;br /&gt;
| [http://heiher.info/sftp/files/Nginx-0.8.54-Add-OwnerMatch-module.patch Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://mauro-stettler.blogspot.com/2011/08/pecl-memcache-standard-loadbalancer-for.html PHP-Memache Standard Hash]&lt;br /&gt;
| This is a loadbalancer that imitates the PHP-Memcache standard hash's behaviour&lt;br /&gt;
| Mauro Stettler&lt;br /&gt;
| [https://github.com/replay/ngx_http_php_memcache_standard_balancer Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/replay/ngx_http_php_session PHP Session Parser]&lt;br /&gt;
| Extract values that are stored in a serialized PHP session&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [http://github.com/replay/ngx_http_php_session Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_postgres/ Postgres]&lt;br /&gt;
| Upstream module that allows nginx to communicate directly with PostgreSQL database.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_postgres/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://vitki.net/pubcookie Pubcookie]&lt;br /&gt;
| Adds [http://www.pubcookie.org Pubcookie]-based cross-site authentication method to Nginx.&lt;br /&gt;
| [http://www.vitki.net/ Vitki]&lt;br /&gt;
| [http://vitki.net/pubcookie#Installation Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/rds-csv-nginx-module RDS CSV]&lt;br /&gt;
| Help [http://github.com/chaoslawful/drizzle-nginx-module ngx_drizzle], [http://github.com/FRiCKLE/ngx_postgres/ ngx_postgres], and others emit Comma-Separated Values (CSV).&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/rds-csv-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/rds-json-nginx-module RDS JSON]&lt;br /&gt;
| Help [http://github.com/chaoslawful/drizzle-nginx-module ngx_drizzle], [http://github.com/FRiCKLE/ngx_postgres/ ngx_postgres], and others emit JSON data.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/rds-json-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRedis2Module|Redis2]]&lt;br /&gt;
| Upstream module for the full [http://redis.io/ Redis] 2.0 protocol&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/redis2-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/yuri-gushin/Roboo Roboo]&lt;br /&gt;
| HTTP Robot mitigator utilizing advanced non-interactive HTTP challenge/response mechanisms&lt;br /&gt;
| [http://www.ecl-labs.org/ Yuri Gushin, Alex Behar]&lt;br /&gt;
| [https://github.com/yuri-gushin/Roboo/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgx_rrd_graph|RRD Graph]]&lt;br /&gt;
| This module provides an HTTP interface to [http://oss.oetiker.ch/rrdtool/ RRDtool]'s graphing facilities.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/mod_rrd_graph Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSecureDownload|Secure Download]]&lt;br /&gt;
| Create expiring links.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler], Szymon Modzelewski&lt;br /&gt;
| [http://github.com/replay/ngx_http_secure_download Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/liseen/set-cconv-nginx-module/ Set CConv]&lt;br /&gt;
| Conversion between Simplified Chinese and Traditional Chinese at rewrite phase&lt;br /&gt;
| [http://github.com/liseen/ Liseen Wan]&lt;br /&gt;
| [http://github.com/liseen/set-cconv-nginx-module/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_hash Set Hash]&lt;br /&gt;
| Set a variable to a variety of hash functions (upper/lowercase), including MD5, SHA1 and Murmurhash 2&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_hash/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_lang Set Lang]&lt;br /&gt;
| Set a variable to indicate the language based on a variety of sources including cookies, GET/POST variables, Accept Language header and more&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_lang/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSetMiscModule Set Misc]&lt;br /&gt;
| Various set_xxx directives added to nginx's rewrite module (md5/sha1, sql/json quoting, and many more)&lt;br /&gt;
| [http://agentzh.org agentzh], [http://vimedia.org/ Calio], [http://github.com/shrimp/ shrimp]&lt;br /&gt;
| [http://github.com/agentzh/set-misc-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://nginx-sflow-module.googlecode.com sFlow]&lt;br /&gt;
| Operational performance monitoring with standard [http://sflow.org sFlow] protocol&lt;br /&gt;
| Neil McKee&lt;br /&gt;
| [http://code.google.com/p/nginx-sflow-module/downloads/list Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_slowfs_cache/ SlowFS Cache]&lt;br /&gt;
| Module adding ability to cache static files.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_slowfs_cache/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/muhgatus/spnego-http-auth-nginx-module SPNEGO]&lt;br /&gt;
| Support for SPNEGO/gssapi in nginx.&lt;br /&gt;
| [https://github.com/mike503 mike503]/[https://github.com/muhgatus/ muhgatus]&lt;br /&gt;
| [https://github.com/muhgatus/spnego-http-auth-nginx-module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSRCacheModule SR Cache]&lt;br /&gt;
| Transparent subrequest-based caching layout for arbitrary nginx locations (can be used with ngx_memc + memcached!)&lt;br /&gt;
| [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/agentzh/srcache-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/mikewest/nginx-static-etags Static etags]&lt;br /&gt;
| Nginx doesn't generate etags for static content. I'd like it to. Let's see if I can remember some C from college.&lt;br /&gt;
| [http://github.com/mikewest mikewest]&lt;br /&gt;
| [http://github.com/mikewest/nginx-static-etags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/zebrafishlabs/nginx-statsd Statsd]&lt;br /&gt;
| Adds the ability for Nginx to interacting with statsd.&lt;br /&gt;
| [https://github.com/zebrafishlabs zebrafishlabs]&lt;br /&gt;
| [https://github.com/zebrafishlabs/nginx-statsd Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://code.google.com/p/nginx-sticky-module/ Sticky upstream]&lt;br /&gt;
| A nginx module to add an upstream server persistance using cookies.&lt;br /&gt;
| [http://code.google.com/u/jerome@loyet.net/ Jérôme Loyet]&lt;br /&gt;
| [http://code.google.com/p/nginx-sticky-module/downloads/list Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpStripModule|Strip]]&lt;br /&gt;
| Whitespace remover.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [[File:mod_strip-0.1.tar.gz|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSubsModule Substitutions]&lt;br /&gt;
| A filter module which can do both regular expression and fixed string substitutions on response bodies.&lt;br /&gt;
| [http://yaoweibin.cn Weibin Yao]&lt;br /&gt;
| [http://code.google.com/p/substitutions4nginx/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_supervisord/ Supervisord]&lt;br /&gt;
| Module providing nginx with API to communicate with supervisord and manage (start/stop) backends on-demand.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_supervisord/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.grid.net.ru/nginx/upload.en.html Upload]&lt;br /&gt;
| Parses &amp;lt;code&amp;gt;multipart/form-data&amp;lt;/code&amp;gt; allowing arbitrary handling of uploaded files.&lt;br /&gt;
| Valery Kholodkov&lt;br /&gt;
| [http://www.grid.net.ru/nginx/upload.en.html#download Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUploadProgressModule|Upload Progress]]&lt;br /&gt;
| Tracks and reports upload progress.&lt;br /&gt;
| Brice Figureau&lt;br /&gt;
| [http://github.com/masterzen/nginx-upload-progress-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamConsistentHash|Upstream Consistent Hash]]&lt;br /&gt;
| Select backend based on Consistent hash ring.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [http://github.com/replay/ngx_http_consistent_hash Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamFairModule|Upstream Fair Balancer]]&lt;br /&gt;
| Sends an incoming request to the least-busy backend server, rather than distributing requests round-robin.&lt;br /&gt;
| Gregory Nosek&lt;br /&gt;
| [http://github.com/gnosek/nginx-upstream-fair Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamRequestHashModule|Upstream Hash]]&lt;br /&gt;
| Provides simple upstream load distribution by hashing a configurable variable.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/nginx_upstream_hash/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamKeepaliveModule|Upstream Keepalive]]&lt;br /&gt;
| Provides keep-alive connections to memcached upstreams.&lt;br /&gt;
| [http://mdounin.ru Maxim Dounin]&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_upstream_keepalive/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/wandenberg/nginx-video-thumbextractor-module Video Thumb Extractor]&lt;br /&gt;
| Nginx module to extract thumbs from a video file.&lt;br /&gt;
| [https://github.com/wandenberg Wandenberg Peixoto]&lt;br /&gt;
| [https://github.com/wandenberg/nginx-video-thumbextractor-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NgxWSGIModule|WSGI]]&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Wsgi WSGI] implementation for Nginx.  Allows easy deployment of Python applications.&lt;br /&gt;
| Manlio Perillo&lt;br /&gt;
| [http://hg.mperillo.ath.cx/nginx/mod_wsgi/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/xss-nginx-module XSS]&lt;br /&gt;
| Native support for cross-site scripting (XSS) in an nginx.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/xss-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NgxZip|Zip]]&lt;br /&gt;
| Assemble ZIP archives on the fly.&lt;br /&gt;
| [http://www.evanmiller.org/ Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/mod_zip/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Extended status module|Extended status module]]&lt;br /&gt;
| Extended status module for nginx&lt;br /&gt;
| 최영석(Choi Youngseok), 李金虎(Li Jinhu)&lt;br /&gt;
| [http://github.com/zealot83/ngx_http_extended_status_module Download]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tools for module developers ==&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib Nginx Auto Lib Core]&lt;br /&gt;
| Reusable file for module developers to include with their modules to easily and consistently handle including external libraries; used in the Auto Lib module and included in the Nginx Development Kit&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit Nginx Development Kit]&lt;br /&gt;
| An extension to the core functionality of Nginx which can be used as a basis for other modules&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit/downloads Download]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Third party patches =&lt;br /&gt;
These patches must be applied to the Nginx source code tree.   There's no guarantee these patches will apply to a particular version of Nginx.&lt;br /&gt;
&lt;br /&gt;
As with third party modules, these patches are not officially supported.  Your mileage may vary.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Log to syslog.&lt;br /&gt;
| Marlon de Boer&lt;br /&gt;
| [http://bugs.gentoo.org/attachment.cgi?id=197180 Patch against 0.8.4] (works on 0.7.x and 0.8.x) | [http://dl.dropbox.com/u/5836407/Patches/Nginx_0.8.49-syslog-support.txt Patch for version 0.8.49 with 'sh is not bash' fix] | [https://github.com/yaoweibin/nginx_syslog_patch Syslog Patch for Nginx 0.8.54+]&lt;br /&gt;
|-&lt;br /&gt;
| Disable nginx's memory pool to help valgrind and other tools (for nginx C developers only)&lt;br /&gt;
| [http://github.com/shrimp/ shrimp], [http://agentzh.spaces.live.com/ agentzh]&lt;br /&gt;
| [http://github.com/shrimp/no-pool-nginx Git repository for the patch]&lt;br /&gt;
|-&lt;br /&gt;
| SSL Session tickets distributed via memcached&lt;br /&gt;
| [http://hezmatt.org/~mpalmer/blog/2011/07/24/followup-to-ssl-session-caching-with-nginx.html Matthew Palmer]&lt;br /&gt;
| [https://github.com/mpalmer/nginx Git repository for changes]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* [http://github.com/search?type=Repositories&amp;amp;language=c&amp;amp;q=nginx&amp;amp;repo=&amp;amp;langOverride=&amp;amp;x=13&amp;amp;y=17&amp;amp;start_value=1 github search]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/3rdPartyModules</id>
		<title>3rdPartyModules</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/3rdPartyModules"/>
				<updated>2012-05-03T00:20:53Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Known modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Third party modules =&lt;br /&gt;
These modules are not officially supported. Nevertheless many of them may prove useful to many people.  Enjoy at your own risk.&lt;br /&gt;
&lt;br /&gt;
== Compiling third party modules ==&lt;br /&gt;
Modules are typically added by compiling them along with the Nginx source.&lt;br /&gt;
&lt;br /&gt;
From the Nginx source directory, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --add-module=/path/to/module1/source \&lt;br /&gt;
            --add-module=/path/to/module2/source&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use as many &amp;lt;code&amp;gt;--add-module&amp;lt;/code&amp;gt; arguments as needed.&lt;br /&gt;
&lt;br /&gt;
Be aware that some modules may require additional libraries to be installed on your system.&lt;br /&gt;
&lt;br /&gt;
== Writing your own module ==&lt;br /&gt;
[http://www.evanmiller.org/ Evan Miller] has written the [http://www.evanmiller.org/nginx-modules-guide.html definitive guide] to Nginx module development. But some parts of it are a little out of date. You've been warned.&lt;br /&gt;
&lt;br /&gt;
A github search turned up the [http://github.com/simpl/ngx_devel_kit Nginx Development Kit].  It seems to be more up to date.&lt;br /&gt;
&lt;br /&gt;
See also the tools at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
== Known modules ==&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| [[AcceptLanguageModule|Accept Language]]&lt;br /&gt;
| Parses the &amp;lt;code&amp;gt;Accept-Language&amp;lt;/code&amp;gt; header and gives the most suitable locale from a list of supported locales.&lt;br /&gt;
| Guillaume Maury&lt;br /&gt;
| [http://github.com/giom/nginx_accept_language_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAccessKeyModule|Access Key]]&lt;br /&gt;
| Denies access unless the request URL contains an access key. &lt;br /&gt;
| Mykola Grechukh&lt;br /&gt;
| [http://wiki.nginx.org/File:Nginx-accesskey-2.0.3.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/rsms/afcgi AFCGI]&lt;br /&gt;
| Asynchronous/multiplexing FastCGI for nginx (incl. ref server implementation)&lt;br /&gt;
| [http://github.com/rsms rsms]&lt;br /&gt;
| [http://github.com/rsms/afcgi Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/array-var-nginx-module Array Var]&lt;br /&gt;
| Add support for array variables to nginx config files&lt;br /&gt;
| [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/agentzh/array-var-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAuthDigestModule|Auth Digest]]&lt;br /&gt;
| HTTP Digest Authentication.&lt;br /&gt;
| [http://samizdat.cc Christian Swinehart]&lt;br /&gt;
| [https://github.com/samizdatco/nginx-http-auth-digest Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://web.iti.upv.es/~sto/nginx/ Auth PAM]&lt;br /&gt;
| HTTP Basic Authentication using PAM.&lt;br /&gt;
| Sergio Talens-Oliag&lt;br /&gt;
| [http://web.iti.upv.es/~sto/nginx/ngx_http_auth_pam_module-1.2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_auth_request_module/ Auth Request]&lt;br /&gt;
| Allows authorization based on subrequest result.&lt;br /&gt;
| [http://mdounin.ru Maxim Dounin]&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_auth_request_module/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib Auto Lib]&lt;br /&gt;
| Reuse pre-compiled/installed versions of OpenSSL, PCRE and Zlib without re-compiling them each time Nginx is compiled&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/anomalizer/ngx_aws_auth AWS auth]&lt;br /&gt;
| Generate security headers for GET requests to Amazon S3.&lt;br /&gt;
| [http://anomalizer.net/statistically-incorrect Arvind Jayaprakash]&lt;br /&gt;
| [http://github.com/anomalizer/ngx_aws_auth/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_cache_purge/ Cache Purge]&lt;br /&gt;
| Module adding ability to purge content from FastCGI, proxy, and uWSGI caches.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_cache_purge/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpChunkinModule|Chunkin]]&lt;br /&gt;
| HTTP 1.1 chunked-encoding request body support for Nginx.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/chunkin-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCircleGifModule|Circle GIF]]&lt;br /&gt;
| Generates simple circle images with the colors and size specified in the URL.&lt;br /&gt;
| [http://www.evanmiller.org/ Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/nginx_circle_gif/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://ngx-ctpp.vbart.info/ CT++]&lt;br /&gt;
| Embeds  [http://ctpp.havoc.ru/en/whatis.html CT++ (or CTPP2)]  VM, the execution part of a high-performance template engine system.&lt;br /&gt;
| [http://vbart.info/ Valentin V. Bartenev]&lt;br /&gt;
| [http://dl.vbart.ru/ngx-ctpp/ngx_ctpp2-0.5.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit Development Kit]&lt;br /&gt;
| An extension to the core functionality of Nginx which can be used as a basis for other modules&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDrizzleModule|Drizzle]]&lt;br /&gt;
| Make nginx talk directly to mysql and drizzle by libdrizzle.&lt;br /&gt;
| [http://github.com/chaoslawful/ chaoslawful], [http://agentzh.org/ agentzh], Piotr Sikora&lt;br /&gt;
| [http://github.com/chaoslawful/drizzle-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/kali/nginx-dynamic-etags Dynamic etags]&lt;br /&gt;
| Nginx module for etags on dynamic content&lt;br /&gt;
| [http://github.com/kali kali]&lt;br /&gt;
| [http://github.com/kali/nginx-dynamic-etags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpEchoModule|Echo]]&lt;br /&gt;
| Brings &amp;quot;echo&amp;quot;, &amp;quot;sleep&amp;quot;, &amp;quot;time&amp;quot;, &amp;quot;exec&amp;quot;, and more shell-style goodies to Nginx config file.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/echo-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/bpaquet/ngx_http_enhanced_memcached_module Enhanced Memcached]&lt;br /&gt;
| Repackaging of the standard memcached module to add features : custom http headers, hash keys, store entries in memcached with post http request, flush, key namespace&lt;br /&gt;
| [https://github.com/bpaquet Bertrand Paquet]&lt;br /&gt;
| [https://github.com/bpaquet/ngx_http_enhanced_memcached_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/encrypted-session-nginx-module Encrypted Session]&lt;br /&gt;
| encrypt and decrypt nginx variable values, can be used for light-weight session-based authentication&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/encrypted-session-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/vkholodkov/nginx-eval-module Eval]&lt;br /&gt;
| A module for evaluating memcached or proxy response into variable.&lt;br /&gt;
| [http://github.com/vkholodkov/ vkholodkov]&lt;br /&gt;
| [http://github.com/vkholodkov/nginx-eval-module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/nginx-eval-module Eval (agentzh's fork)]&lt;br /&gt;
| Enhanced ngx_eval that can capture arbitrary subrequest's responses into nginx variables (can even with output filters enabled)&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/nginx-eval-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Expressz|Expressz]]&lt;br /&gt;
| First of the Expressz lineup modules, Off-loading image and file/stream compression to (a) GPU(s).&lt;br /&gt;
| [http://www.acronymlabs.com/ Jason Giedymin at AcronymLabs]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/ry/nginx-ey-balancer/tree/master EY Balancer]&lt;br /&gt;
| Adds a request queue to Nginx that allows the limiting of concurrent requests passed to the upstream.&lt;br /&gt;
| Ry Dahl&lt;br /&gt;
| [http://github.com/ry/nginx-ey-balancer/tarball/master Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/NgxFancyIndex Fancy Indexes]&lt;br /&gt;
| Like the built-in [[Modules#HTTP_Auto_Index|autoindex]] module, but fancier.&lt;br /&gt;
| Adrian Perez de Castro&lt;br /&gt;
| [http://gitorious.org/ngx-fancyindex/ngx-fancyindex Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFormInputModule|Form Input]]&lt;br /&gt;
| This module reads HTTP POST request body and parse the arguments into nginx variables.&lt;br /&gt;
| [http://vimedia.org/ Calio], [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/calio/form-input-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Http3rdPartyGeoIPModule|GeoIP]]&lt;br /&gt;
| Country code lookups via the [http://www.maxmind.com/ MaxMind] GeoIP API.&lt;br /&gt;
| [http://www.spilgames.com/ SPIL GAMES]&lt;br /&gt;
| [[File:Nginx-geoip-0.2.tar.gz|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/mdirolf/nginx-gridfs GridFS]&lt;br /&gt;
| Nginx module for serving files from MongoDB's GridFS.&lt;br /&gt;
| [http://github.com/mdirolf mdirolf]&lt;br /&gt;
| [http://github.com/mdirolf/nginx-gridfs Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHeadersMoreModule|Headers More]]&lt;br /&gt;
| Set and clear input and output headers...more than &amp;quot;add&amp;quot;!&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/headers-more-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHealthcheckModule|HTTP Healthcheck]]&lt;br /&gt;
| Health check HTTP servers inside an upstream so you don't forward requests to bad hosts&lt;br /&gt;
| Jack Lindamood&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Lax/ngx_http_accounting_module HTTP Accounting]&lt;br /&gt;
| Realtime netflow and status code monitor solution for nginx, need less memory and cpu than realtime log analyzing. Useful for http traffic accounting based on nginx config logic ( per-location-traffic or per-server-traffic ).&lt;br /&gt;
| [http://www.liulantao.com/portal/ Liu Lantao]&lt;br /&gt;
| [https://github.com/Lax/ngx_http_accounting_module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://pushmodule.slact.net/ HTTP Push]&lt;br /&gt;
| Turn Nginx into an adept long-polling HTTP Push (Comet) server.&lt;br /&gt;
| Leo Ponomarev&lt;br /&gt;
| [http://pushmodule.slact.net/downloads/nginx_http_push_module-0.69.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpPushStreamModule|HTTP Push Stream]]&lt;br /&gt;
| Turn Nginx into an adept stream HTTP Push (Comet) server.&lt;br /&gt;
| [https://github.com/wandenberg Wandenberg Peixoto]&lt;br /&gt;
| [https://github.com/wandenberg/nginx-push-stream-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRedis|HTTP Redis]]&lt;br /&gt;
| [http://redis.io/ Redis] support.&lt;br /&gt;
| Sergey A. Osokin &amp;lt;osa@FreeBSD.ORG.ru&amp;gt;&lt;br /&gt;
| [http://people.FreeBSD.ORG/~osa/ngx_http_redis-0.3.5.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kung-fu-tzu/ngx_http_js_module#readme JavaScript]&lt;br /&gt;
| Embedding [http://www.mozilla.org/js/spidermonkey/ SpiderMonkey]. Full port of Perl module and more.&lt;br /&gt;
| [https://github.com/kung-fu-tzu Peter Leonov]&lt;br /&gt;
| [https://github.com/kung-fu-tzu/ngx_http_js_module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpIconvModule|Iconv]]&lt;br /&gt;
| A character encoding conversion nginx module using libiconv.&lt;br /&gt;
| [http://vimedia.org/ Calio], [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/calio/iconv-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLogRequestSpeed|Log Request Speed]]&lt;br /&gt;
| Log the time it took to process each request.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/replay/ngx_http_lower_upper_case Lower Upper Case]&lt;br /&gt;
| Simple module to upper-/lowercase a string in the Nginx config&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [https://github.com/replay/ngx_http_lower_upper_case Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpLuaModule Lua]&lt;br /&gt;
| Embed the power of Lua into nginx&lt;br /&gt;
| [http://github.com/chaoslawful chaoslawful], [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/chaoslawful/lua-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/alacner/nginx_lua_module Luafile]&lt;br /&gt;
| Embed the power of Lua into nginx very easy.&lt;br /&gt;
| [http://alacner.com alacner]&lt;br /&gt;
| [https://github.com/alacner/nginx_lua_module/tarball/master Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMemcModule|Memc]]&lt;br /&gt;
| An extended version of the standard memcached module that supports set, add, delete, and many more memcached commands.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/memc-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.grid.net.ru/nginx/mogilefs.en.html Mogilefs]&lt;br /&gt;
| Implements a MogileFS client, provides a replace to the Perlbal reverse proxy of the original MogileFS.&lt;br /&gt;
| Valery Kholodkov&lt;br /&gt;
| [http://www.grid.net.ru/nginx/download/nginx_mogilefs_module-1.0.2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[MP4StreamingLite|MP4 Streaming Lite]]&lt;br /&gt;
| Will seek to a certain time within H.264/MP4 files when provided with a &amp;quot;start&amp;quot; parameter in the URL. &lt;br /&gt;
| Jiang Hong&lt;br /&gt;
| [[MP4StreamingLite|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://naxsi.googlecode.com Naxsi]&lt;br /&gt;
| Web Application Firewall for nginx.&lt;br /&gt;
| Thibault Koechlin&lt;br /&gt;
| [http://naxsi.googlecode.com Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://xph.us/software/nginx-notice/ Notice]&lt;br /&gt;
| Serve static file to POST requests.&lt;br /&gt;
| Keith Rarick&lt;br /&gt;
| [http://xph.us/software/nginx-notice/nginx-notice-2.tar.gz Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpOwnerMatchModule OwnerMatch]&lt;br /&gt;
| This module provides a simple file owner-based access control.&lt;br /&gt;
| [https://heiher.info Heiher]&lt;br /&gt;
| [http://heiher.info/sftp/files/Nginx-0.8.54-Add-OwnerMatch-module.patch Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://mauro-stettler.blogspot.com/2011/08/pecl-memcache-standard-loadbalancer-for.html PHP-Memache Standard Hash]&lt;br /&gt;
| This is a loadbalancer that imitates the PHP-Memcache standard hash's behaviour&lt;br /&gt;
| Mauro Stettler&lt;br /&gt;
| [https://github.com/replay/ngx_http_php_memcache_standard_balancer Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/replay/ngx_http_php_session PHP Session Parser]&lt;br /&gt;
| Extract values that are stored in a serialized PHP session&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [http://github.com/replay/ngx_http_php_session Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_postgres/ Postgres]&lt;br /&gt;
| Upstream module that allows nginx to communicate directly with PostgreSQL database.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_postgres/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://vitki.net/pubcookie Pubcookie]&lt;br /&gt;
| Adds [http://www.pubcookie.org Pubcookie]-based cross-site authentication method to Nginx.&lt;br /&gt;
| [http://www.vitki.net/ Vitki]&lt;br /&gt;
| [http://vitki.net/pubcookie#Installation Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/rds-csv-nginx-module RDS CSV]&lt;br /&gt;
| Help [http://github.com/chaoslawful/drizzle-nginx-module ngx_drizzle], [http://github.com/FRiCKLE/ngx_postgres/ ngx_postgres], and others emit Comma-Separated Values (CSV).&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/rds-csv-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/rds-json-nginx-module RDS JSON]&lt;br /&gt;
| Help [http://github.com/chaoslawful/drizzle-nginx-module ngx_drizzle], [http://github.com/FRiCKLE/ngx_postgres/ ngx_postgres], and others emit JSON data.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/rds-json-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRedis2Module|Redis2]]&lt;br /&gt;
| Upstream module for the full [http://redis.io/ Redis] 2.0 protocol&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/redis2-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/yuri-gushin/Roboo Roboo]&lt;br /&gt;
| HTTP Robot mitigator utilizing advanced non-interactive HTTP challenge/response mechanisms&lt;br /&gt;
| [http://www.ecl-labs.org/ Yuri Gushin, Alex Behar]&lt;br /&gt;
| [https://github.com/yuri-gushin/Roboo/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NginxNgx_rrd_graph|RRD Graph]]&lt;br /&gt;
| This module provides an HTTP interface to [http://oss.oetiker.ch/rrdtool/ RRDtool]'s graphing facilities.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/mod_rrd_graph Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSecureDownload|Secure Download]]&lt;br /&gt;
| Create expiring links.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler], Szymon Modzelewski&lt;br /&gt;
| [http://github.com/replay/ngx_http_secure_download Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/liseen/set-cconv-nginx-module/ Set CConv]&lt;br /&gt;
| Conversion between Simplified Chinese and Traditional Chinese at rewrite phase&lt;br /&gt;
| [http://github.com/liseen/ Liseen Wan]&lt;br /&gt;
| [http://github.com/liseen/set-cconv-nginx-module/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_hash Set Hash]&lt;br /&gt;
| Set a variable to a variety of hash functions (upper/lowercase), including MD5, SHA1 and Murmurhash 2&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_hash/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_lang Set Lang]&lt;br /&gt;
| Set a variable to indicate the language based on a variety of sources including cookies, GET/POST variables, Accept Language header and more&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_http_set_lang/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSetMiscModule Set Misc]&lt;br /&gt;
| Various set_xxx directives added to nginx's rewrite module (md5/sha1, sql/json quoting, and many more)&lt;br /&gt;
| [http://agentzh.org agentzh], [http://vimedia.org/ Calio], [http://github.com/shrimp/ shrimp]&lt;br /&gt;
| [http://github.com/agentzh/set-misc-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://nginx-sflow-module.googlecode.com sFlow]&lt;br /&gt;
| Operational performance monitoring with standard [http://sflow.org sFlow] protocol&lt;br /&gt;
| Neil McKee&lt;br /&gt;
| [http://code.google.com/p/nginx-sflow-module/downloads/list Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_slowfs_cache/ SlowFS Cache]&lt;br /&gt;
| Module adding ability to cache static files.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_slowfs_cache/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/muhgatus/spnego-http-auth-nginx-module SPNEGO]&lt;br /&gt;
| Support for SPNEGO/gssapi in nginx.&lt;br /&gt;
| [https://github.com/mike503 mike503]/[https://github.com/muhgatus/ muhgatus]&lt;br /&gt;
| [https://github.com/muhgatus/spnego-http-auth-nginx-module Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSRCacheModule SR Cache]&lt;br /&gt;
| Transparent subrequest-based caching layout for arbitrary nginx locations (can be used with ngx_memc + memcached!)&lt;br /&gt;
| [http://agentzh.org agentzh]&lt;br /&gt;
| [http://github.com/agentzh/srcache-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/mikewest/nginx-static-etags Static etags]&lt;br /&gt;
| Nginx doesn't generate etags for static content. I'd like it to. Let's see if I can remember some C from college.&lt;br /&gt;
| [http://github.com/mikewest mikewest]&lt;br /&gt;
| [http://github.com/mikewest/nginx-static-etags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/zebrafishlabs/nginx-statsd Statsd]&lt;br /&gt;
| Adds the ability for Nginx to interacting with statsd.&lt;br /&gt;
| [https://github.com/zebrafishlabs zebrafishlabs]&lt;br /&gt;
| [https://github.com/zebrafishlabs/nginx-statsd Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://code.google.com/p/nginx-sticky-module/ Sticky upstream]&lt;br /&gt;
| A nginx module to add an upstream server persistance using cookies.&lt;br /&gt;
| [http://code.google.com/u/jerome@loyet.net/ Jérôme Loyet]&lt;br /&gt;
| [http://code.google.com/p/nginx-sticky-module/downloads/list Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpStripModule|Strip]]&lt;br /&gt;
| Whitespace remover.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [[File:mod_strip-0.1.tar.gz|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.nginx.org/HttpSubsModule Substitutions]&lt;br /&gt;
| A filter module which can do both regular expression and fixed string substitutions on response bodies.&lt;br /&gt;
| [http://yaoweibin.cn Weibin Yao]&lt;br /&gt;
| [http://code.google.com/p/substitutions4nginx/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_supervisord/ Supervisord]&lt;br /&gt;
| Module providing nginx with API to communicate with supervisord and manage (start/stop) backends on-demand.&lt;br /&gt;
| [http://www.frickle.com/ FRiCKLE]&lt;br /&gt;
| [http://labs.frickle.com/nginx_ngx_supervisord/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.grid.net.ru/nginx/upload.en.html Upload]&lt;br /&gt;
| Parses &amp;lt;code&amp;gt;multipart/form-data&amp;lt;/code&amp;gt; allowing arbitrary handling of uploaded files.&lt;br /&gt;
| Valery Kholodkov&lt;br /&gt;
| [http://www.grid.net.ru/nginx/upload.en.html#download Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUploadProgressModule|Upload Progress]]&lt;br /&gt;
| Tracks and reports upload progress.&lt;br /&gt;
| Brice Figureau&lt;br /&gt;
| [http://github.com/masterzen/nginx-upload-progress-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamConsistentHash|Upstream Consistent Hash]]&lt;br /&gt;
| Select backend based on Consistent hash ring.&lt;br /&gt;
| [https://github.com/replay Mauro Stettler]&lt;br /&gt;
| [http://github.com/replay/ngx_http_consistent_hash Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamFairModule|Upstream Fair Balancer]]&lt;br /&gt;
| Sends an incoming request to the least-busy backend server, rather than distributing requests round-robin.&lt;br /&gt;
| Gregory Nosek&lt;br /&gt;
| [http://github.com/gnosek/nginx-upstream-fair Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamRequestHashModule|Upstream Hash]]&lt;br /&gt;
| Provides simple upstream load distribution by hashing a configurable variable.&lt;br /&gt;
| [http://evanmiller.org Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/nginx_upstream_hash/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamKeepaliveModule|Upstream Keepalive]]&lt;br /&gt;
| Provides keep-alive connections to memcached upstreams.&lt;br /&gt;
| [http://mdounin.ru Maxim Dounin]&lt;br /&gt;
| [http://mdounin.ru/hg/ngx_http_upstream_keepalive/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/wandenberg/nginx-video-thumbextractor-module Video Thumb Extractor]&lt;br /&gt;
| Nginx module to extract thumbs from a video file.&lt;br /&gt;
| [https://github.com/wandenberg Wandenberg Peixoto]&lt;br /&gt;
| [https://github.com/wandenberg/nginx-video-thumbextractor-module/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NgxWSGIModule|WSGI]]&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Wsgi WSGI] implementation for Nginx.  Allows easy deployment of Python applications.&lt;br /&gt;
| Manlio Perillo&lt;br /&gt;
| [http://hg.mperillo.ath.cx/nginx/mod_wsgi/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/agentzh/xss-nginx-module XSS]&lt;br /&gt;
| Native support for cross-site scripting (XSS) in an nginx.&lt;br /&gt;
| [http://agentzh.org/ agentzh]&lt;br /&gt;
| [http://github.com/agentzh/xss-nginx-module/tags Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[NgxZip|Zip]]&lt;br /&gt;
| Assemble ZIP archives on the fly.&lt;br /&gt;
| [http://www.evanmiller.org/ Evan Miller]&lt;br /&gt;
| [http://github.com/evanmiller/mod_zip/ Download]&lt;br /&gt;
|-&lt;br /&gt;
| [[Extended status module|Extended status module]]&lt;br /&gt;
| Extended status module for nginx&lt;br /&gt;
| 최영석(Choi Youngseok), 李金虎(Li Jinhu)&lt;br /&gt;
| [http://github.com/zealot83/ngx_http_extended_status_module Download]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tools for module developers ==&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib Nginx Auto Lib Core]&lt;br /&gt;
| Reusable file for module developers to include with their modules to easily and consistently handle including external libraries; used in the Auto Lib module and included in the Nginx Development Kit&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_auto_lib/downloads Download]&lt;br /&gt;
|-&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit Nginx Development Kit]&lt;br /&gt;
| An extension to the core functionality of Nginx which can be used as a basis for other modules&lt;br /&gt;
| [http://simpl.it Marcus Clyne]&lt;br /&gt;
| [http://github.com/simpl/ngx_devel_kit/downloads Download]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Third party patches =&lt;br /&gt;
These patches must be applied to the Nginx source code tree.   There's no guarantee these patches will apply to a particular version of Nginx.&lt;br /&gt;
&lt;br /&gt;
As with third party modules, these patches are not officially supported.  Your mileage may vary.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Log to syslog.&lt;br /&gt;
| Marlon de Boer&lt;br /&gt;
| [http://bugs.gentoo.org/attachment.cgi?id=197180 Patch against 0.8.4] (works on 0.7.x and 0.8.x) | [http://dl.dropbox.com/u/5836407/Patches/Nginx_0.8.49-syslog-support.txt Patch for version 0.8.49 with 'sh is not bash' fix] | [https://github.com/yaoweibin/nginx_syslog_patch Syslog Patch for Nginx 0.8.54+]&lt;br /&gt;
|-&lt;br /&gt;
| Disable nginx's memory pool to help valgrind and other tools (for nginx C developers only)&lt;br /&gt;
| [http://github.com/shrimp/ shrimp], [http://agentzh.spaces.live.com/ agentzh]&lt;br /&gt;
| [http://github.com/shrimp/no-pool-nginx Git repository for the patch]&lt;br /&gt;
|-&lt;br /&gt;
| SSL Session tickets distributed via memcached&lt;br /&gt;
| [http://hezmatt.org/~mpalmer/blog/2011/07/24/followup-to-ssl-session-caching-with-nginx.html Matthew Palmer]&lt;br /&gt;
| [https://github.com/mpalmer/nginx Git repository for changes]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* [http://github.com/search?type=Repositories&amp;amp;language=c&amp;amp;q=nginx&amp;amp;repo=&amp;amp;langOverride=&amp;amp;x=13&amp;amp;y=17&amp;amp;start_value=1 github search]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/Modules</id>
		<title>Modules</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/Modules"/>
				<updated>2012-05-03T00:19:47Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Installing Modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installing Modules =&lt;br /&gt;
Nginx modules must be selected during compile, run-time selection of modules is not currently supported. &lt;br /&gt;
&lt;br /&gt;
A full summary of the compile-time options, including optional modules, can be found in the provided configure script by running &amp;lt;code&amp;gt;./configure --help&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Nginx core modules =&lt;br /&gt;
These modules are required.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[CoreModule|Main]]&lt;br /&gt;
| Configure error logging, processes, permissions, etc.&lt;br /&gt;
|-&lt;br /&gt;
| [[EventsModule|Events]]&lt;br /&gt;
| Configure epoll, kqueue, select, poll, etc. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Standard HTTP modules =&lt;br /&gt;
These modules are automatically compiled in unless explicitly disabled with &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Version&lt;br /&gt;
! configure argument to disable&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCoreModule|Core]]&lt;br /&gt;
| Control ports, locations, error pages, aliases, and other essentials.&lt;br /&gt;
|&lt;br /&gt;
| --without-http&lt;br /&gt;
|- &lt;br /&gt;
| [[HttpAccessModule|Access]]&lt;br /&gt;
| Allow/deny based on IP address.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_access_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAuthBasicModule|Auth Basic]]&lt;br /&gt;
| Basic HTTP authentication.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_auth_basic_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAutoindexModule|Auto Index]]&lt;br /&gt;
| Generates automatic directory listings.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_autoindex_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpBrowserModule|Browser]]&lt;br /&gt;
| Interpret &amp;quot;User-Agent&amp;quot; string.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_browser_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCharsetModule|Charset]]&lt;br /&gt;
| Recode web pages.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_charset_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpEmptyGifModule|Empty GIF]]&lt;br /&gt;
| Serve a 1x1 image from memory.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_empty_gif_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFastcgiModule|FastCGI]]&lt;br /&gt;
| FastCGI Support.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_fastcgi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGeoModule|Geo]]&lt;br /&gt;
| Set config variables using key/value pairs of IP addresses.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_geo_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGzipModule|Gzip]]&lt;br /&gt;
| Gzip responses.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_gzip_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHeadersModule|Headers]]&lt;br /&gt;
| Set arbitrary HTTP response headers. &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpIndexModule|Index]]&lt;br /&gt;
| Controls which files are to be used as index. &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLimitReqModule|Limit Requests]]&lt;br /&gt;
| Limit frequency of connections from a client.&lt;br /&gt;
| 0.7.20&lt;br /&gt;
| --without-http_limit_req_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLimitZoneModule|Limit Zone]]&lt;br /&gt;
| Limit simultaneous connections from a client. Deprecated in 1.1.8, use Limit Conn Instead.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_limit_zone_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLimitConnModule|Limit Conn]]&lt;br /&gt;
| Limit concurrent connections based on a variable.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_limit_conn_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLogModule|Log]]&lt;br /&gt;
| Customize access logs.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMapModule|Map]]&lt;br /&gt;
| Set config variables using arbitrary key/value pairs.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_map_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMemcachedModule|Memcached]]&lt;br /&gt;
| Memcached support.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_memcached_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpProxyModule|Proxy]]&lt;br /&gt;
| Proxy to upstream servers.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_proxy_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRefererModule|Referer]]&lt;br /&gt;
| Filter requests based on &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_referer_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRewriteModule|Rewrite]]&lt;br /&gt;
| Request rewriting using regular expressions.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_rewrite_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpScgiModule|SCGI]]&lt;br /&gt;
| SCGI protocol support.&lt;br /&gt;
| 0.8.42&lt;br /&gt;
| --without-http_scgi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSplitClientsModule|Split Clients]]&lt;br /&gt;
| Splits clients based on some conditions&lt;br /&gt;
| 0.8.37&lt;br /&gt;
| --without-http_split_clients_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSsiModule|SSI]]&lt;br /&gt;
| Server-side includes.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_ssi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamModule|Upstream]]&lt;br /&gt;
| For load-balancing.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_upstream_ip_hash_module (ip_hash directive only)&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUseridModule|User ID]]&lt;br /&gt;
| Issue identifying cookies.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_userid_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUwsgiModule|uWSGI]]&lt;br /&gt;
| uWSGI protocol support.&lt;br /&gt;
| 0.8.40&lt;br /&gt;
| --without-http_uwsgi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[X-accel|X-Accel]]&lt;br /&gt;
| X-Sendfile-like module.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Optional HTTP modules =&lt;br /&gt;
The following modules must be enabled at compile-time with the specified option to &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Version&lt;br /&gt;
! configure argument to enable&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAdditionModule|Addition]]&lt;br /&gt;
| Append text to pages.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_addition_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDegradationModule|Degradation]]&lt;br /&gt;
| Allow to return 204 or 444 code for some locations on low memory condition.&lt;br /&gt;
| 0.8.25&lt;br /&gt;
| --with-http_degradation_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpPerlModule|Embedded Perl]]&lt;br /&gt;
| Use Perl in Nginx config files.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_perl_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFlvModule|FLV]]&lt;br /&gt;
| Flash Streaming Video&lt;br /&gt;
| &lt;br /&gt;
| --with-http_flv_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGeoipModule|GeoIP]]&lt;br /&gt;
| Creates variables with information from the [http://www.maxmind.com/ MaxMind] GeoIP binary files.&lt;br /&gt;
| 0.8.6, 0.7.63&lt;br /&gt;
| --with-http_geoip_module&lt;br /&gt;
|-&lt;br /&gt;
| [[GooglePerftoolsModule|Google Perftools]]&lt;br /&gt;
| Google Performance Tools support.&lt;br /&gt;
| 0.6.29&lt;br /&gt;
| --with-google_perftools_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGzipStaticModule|Gzip Precompression]]&lt;br /&gt;
| Serves precompressed versions of static files.&lt;br /&gt;
| 0.6.23&lt;br /&gt;
| --with-http_gzip_static_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpImageFilterModule|Image Filter]]&lt;br /&gt;
| Transform images with Libgd&lt;br /&gt;
| 0.7.54&lt;br /&gt;
| --with-http_image_filter_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMp4Module|MP4]]&lt;br /&gt;
| Enables mp4 streaming with seeking ability.&lt;br /&gt;
| 1.1.3, 1.0.7&lt;br /&gt;
| --with-http_mp4_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRandomIndexModule|Random Index]]&lt;br /&gt;
| Randomize directory indexes.&lt;br /&gt;
| 0.7.15&lt;br /&gt;
| --with-http_random_index_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRealipModule|Real IP]]&lt;br /&gt;
| For using nginx as backend&lt;br /&gt;
| &lt;br /&gt;
| --with-http_realip_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSecureLinkModule|Secure Link]]&lt;br /&gt;
| Protect pages with a secret key.&lt;br /&gt;
| 0.7.18&lt;br /&gt;
| --with-http_secure_link_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSslModule|SSL]]&lt;br /&gt;
| HTTPS/SSL support.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_ssl_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpStubStatusModule|Stub Status]]&lt;br /&gt;
| View server statistics.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_stub_status_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSubModule|Substitution]]&lt;br /&gt;
| Replace text in pages&lt;br /&gt;
| &lt;br /&gt;
| --with-http_sub_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDavModule|WebDAV]]&lt;br /&gt;
| WebDAV pass-through support.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_dav_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpXsltModule|XSLT]]&lt;br /&gt;
| Post-process pages with XSLT.&lt;br /&gt;
| 0.7.8&lt;br /&gt;
| --with-http_xslt_module&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Mail modules =&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! configure argument&lt;br /&gt;
|-&lt;br /&gt;
| [[MailCoreModule|Core]]&lt;br /&gt;
| Nginx is able to handle and proxy the IMAP, POP3, SMTP protocols. &lt;br /&gt;
| --with-mail&amp;lt;br&amp;gt;--without-mail_pop3_module&amp;lt;br&amp;gt;--without-mail_imap_module&amp;lt;br&amp;gt;--without-mail_smtp_module&lt;br /&gt;
|-&lt;br /&gt;
| [[MailAuthModule|Auth]]&lt;br /&gt;
| Use Nginx to authenticate mail services.&lt;br /&gt;
|-&lt;br /&gt;
| [[MailProxyModule|Proxy]]&lt;br /&gt;
| Nginx can proxy IMAP, POP3, and SMTP protocols.&lt;br /&gt;
|-&lt;br /&gt;
| [[MailSslModule|SSL]]&lt;br /&gt;
| This module ensures SSL/TLS support for POP3/IMAP/SMTP.&lt;br /&gt;
| --with-mail_ssl_module&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Third party modules and Patches =&lt;br /&gt;
Please see the catalog of [[3rdPartyModules|3rd party modules]].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* [[ModulesByExample|Module index by example]]&lt;br /&gt;
* [[ConfigNotation| Configuration Notation Reference]]&lt;br /&gt;
* [[ModuleComparisonMatrix| Module comparison matrix with other servers]]&lt;br /&gt;
* [[FeatureRequests| Feature Requests]] &lt;br /&gt;
* [[GettingStarted| Getting Started]] &lt;br /&gt;
* [[Configuration| Configuration Cookbook]]&lt;br /&gt;
* [[DirectiveIndex| Index of all Directives]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/Modules</id>
		<title>Modules</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/Modules"/>
				<updated>2012-05-03T00:18:55Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Installing Modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installing Modules =&lt;br /&gt;
Nginx modules must be selected during compile, run time including of modules is not supported. A full summary of the compile-time options, including optional modules can be found in the provided configure script by running &amp;lt;code&amp;gt;./configure --help&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Nginx core modules =&lt;br /&gt;
These modules are required.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[CoreModule|Main]]&lt;br /&gt;
| Configure error logging, processes, permissions, etc.&lt;br /&gt;
|-&lt;br /&gt;
| [[EventsModule|Events]]&lt;br /&gt;
| Configure epoll, kqueue, select, poll, etc. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Standard HTTP modules =&lt;br /&gt;
These modules are automatically compiled in unless explicitly disabled with &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Version&lt;br /&gt;
! configure argument to disable&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCoreModule|Core]]&lt;br /&gt;
| Control ports, locations, error pages, aliases, and other essentials.&lt;br /&gt;
|&lt;br /&gt;
| --without-http&lt;br /&gt;
|- &lt;br /&gt;
| [[HttpAccessModule|Access]]&lt;br /&gt;
| Allow/deny based on IP address.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_access_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAuthBasicModule|Auth Basic]]&lt;br /&gt;
| Basic HTTP authentication.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_auth_basic_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAutoindexModule|Auto Index]]&lt;br /&gt;
| Generates automatic directory listings.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_autoindex_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpBrowserModule|Browser]]&lt;br /&gt;
| Interpret &amp;quot;User-Agent&amp;quot; string.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_browser_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCharsetModule|Charset]]&lt;br /&gt;
| Recode web pages.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_charset_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpEmptyGifModule|Empty GIF]]&lt;br /&gt;
| Serve a 1x1 image from memory.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_empty_gif_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFastcgiModule|FastCGI]]&lt;br /&gt;
| FastCGI Support.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_fastcgi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGeoModule|Geo]]&lt;br /&gt;
| Set config variables using key/value pairs of IP addresses.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_geo_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGzipModule|Gzip]]&lt;br /&gt;
| Gzip responses.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_gzip_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHeadersModule|Headers]]&lt;br /&gt;
| Set arbitrary HTTP response headers. &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpIndexModule|Index]]&lt;br /&gt;
| Controls which files are to be used as index. &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLimitReqModule|Limit Requests]]&lt;br /&gt;
| Limit frequency of connections from a client.&lt;br /&gt;
| 0.7.20&lt;br /&gt;
| --without-http_limit_req_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLimitZoneModule|Limit Zone]]&lt;br /&gt;
| Limit simultaneous connections from a client. Deprecated in 1.1.8, use Limit Conn Instead.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_limit_zone_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLimitConnModule|Limit Conn]]&lt;br /&gt;
| Limit concurrent connections based on a variable.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_limit_conn_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLogModule|Log]]&lt;br /&gt;
| Customize access logs.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMapModule|Map]]&lt;br /&gt;
| Set config variables using arbitrary key/value pairs.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_map_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMemcachedModule|Memcached]]&lt;br /&gt;
| Memcached support.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_memcached_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpProxyModule|Proxy]]&lt;br /&gt;
| Proxy to upstream servers.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_proxy_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRefererModule|Referer]]&lt;br /&gt;
| Filter requests based on &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_referer_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRewriteModule|Rewrite]]&lt;br /&gt;
| Request rewriting using regular expressions.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_rewrite_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpScgiModule|SCGI]]&lt;br /&gt;
| SCGI protocol support.&lt;br /&gt;
| 0.8.42&lt;br /&gt;
| --without-http_scgi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSplitClientsModule|Split Clients]]&lt;br /&gt;
| Splits clients based on some conditions&lt;br /&gt;
| 0.8.37&lt;br /&gt;
| --without-http_split_clients_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSsiModule|SSI]]&lt;br /&gt;
| Server-side includes.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_ssi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamModule|Upstream]]&lt;br /&gt;
| For load-balancing.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_upstream_ip_hash_module (ip_hash directive only)&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUseridModule|User ID]]&lt;br /&gt;
| Issue identifying cookies.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_userid_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUwsgiModule|uWSGI]]&lt;br /&gt;
| uWSGI protocol support.&lt;br /&gt;
| 0.8.40&lt;br /&gt;
| --without-http_uwsgi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[X-accel|X-Accel]]&lt;br /&gt;
| X-Sendfile-like module.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Optional HTTP modules =&lt;br /&gt;
The following modules must be enabled at compile-time with the specified option to &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Version&lt;br /&gt;
! configure argument to enable&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAdditionModule|Addition]]&lt;br /&gt;
| Append text to pages.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_addition_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDegradationModule|Degradation]]&lt;br /&gt;
| Allow to return 204 or 444 code for some locations on low memory condition.&lt;br /&gt;
| 0.8.25&lt;br /&gt;
| --with-http_degradation_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpPerlModule|Embedded Perl]]&lt;br /&gt;
| Use Perl in Nginx config files.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_perl_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFlvModule|FLV]]&lt;br /&gt;
| Flash Streaming Video&lt;br /&gt;
| &lt;br /&gt;
| --with-http_flv_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGeoipModule|GeoIP]]&lt;br /&gt;
| Creates variables with information from the [http://www.maxmind.com/ MaxMind] GeoIP binary files.&lt;br /&gt;
| 0.8.6, 0.7.63&lt;br /&gt;
| --with-http_geoip_module&lt;br /&gt;
|-&lt;br /&gt;
| [[GooglePerftoolsModule|Google Perftools]]&lt;br /&gt;
| Google Performance Tools support.&lt;br /&gt;
| 0.6.29&lt;br /&gt;
| --with-google_perftools_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGzipStaticModule|Gzip Precompression]]&lt;br /&gt;
| Serves precompressed versions of static files.&lt;br /&gt;
| 0.6.23&lt;br /&gt;
| --with-http_gzip_static_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpImageFilterModule|Image Filter]]&lt;br /&gt;
| Transform images with Libgd&lt;br /&gt;
| 0.7.54&lt;br /&gt;
| --with-http_image_filter_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMp4Module|MP4]]&lt;br /&gt;
| Enables mp4 streaming with seeking ability.&lt;br /&gt;
| 1.1.3, 1.0.7&lt;br /&gt;
| --with-http_mp4_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRandomIndexModule|Random Index]]&lt;br /&gt;
| Randomize directory indexes.&lt;br /&gt;
| 0.7.15&lt;br /&gt;
| --with-http_random_index_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRealipModule|Real IP]]&lt;br /&gt;
| For using nginx as backend&lt;br /&gt;
| &lt;br /&gt;
| --with-http_realip_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSecureLinkModule|Secure Link]]&lt;br /&gt;
| Protect pages with a secret key.&lt;br /&gt;
| 0.7.18&lt;br /&gt;
| --with-http_secure_link_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSslModule|SSL]]&lt;br /&gt;
| HTTPS/SSL support.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_ssl_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpStubStatusModule|Stub Status]]&lt;br /&gt;
| View server statistics.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_stub_status_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSubModule|Substitution]]&lt;br /&gt;
| Replace text in pages&lt;br /&gt;
| &lt;br /&gt;
| --with-http_sub_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDavModule|WebDAV]]&lt;br /&gt;
| WebDAV pass-through support.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_dav_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpXsltModule|XSLT]]&lt;br /&gt;
| Post-process pages with XSLT.&lt;br /&gt;
| 0.7.8&lt;br /&gt;
| --with-http_xslt_module&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Mail modules =&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! configure argument&lt;br /&gt;
|-&lt;br /&gt;
| [[MailCoreModule|Core]]&lt;br /&gt;
| Nginx is able to handle and proxy the IMAP, POP3, SMTP protocols. &lt;br /&gt;
| --with-mail&amp;lt;br&amp;gt;--without-mail_pop3_module&amp;lt;br&amp;gt;--without-mail_imap_module&amp;lt;br&amp;gt;--without-mail_smtp_module&lt;br /&gt;
|-&lt;br /&gt;
| [[MailAuthModule|Auth]]&lt;br /&gt;
| Use Nginx to authenticate mail services.&lt;br /&gt;
|-&lt;br /&gt;
| [[MailProxyModule|Proxy]]&lt;br /&gt;
| Nginx can proxy IMAP, POP3, and SMTP protocols.&lt;br /&gt;
|-&lt;br /&gt;
| [[MailSslModule|SSL]]&lt;br /&gt;
| This module ensures SSL/TLS support for POP3/IMAP/SMTP.&lt;br /&gt;
| --with-mail_ssl_module&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Third party modules and Patches =&lt;br /&gt;
Please see the catalog of [[3rdPartyModules|3rd party modules]].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* [[ModulesByExample|Module index by example]]&lt;br /&gt;
* [[ConfigNotation| Configuration Notation Reference]]&lt;br /&gt;
* [[ModuleComparisonMatrix| Module comparison matrix with other servers]]&lt;br /&gt;
* [[FeatureRequests| Feature Requests]] &lt;br /&gt;
* [[GettingStarted| Getting Started]] &lt;br /&gt;
* [[Configuration| Configuration Cookbook]]&lt;br /&gt;
* [[DirectiveIndex| Index of all Directives]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/Modules</id>
		<title>Modules</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/Modules"/>
				<updated>2012-05-03T00:18:23Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Installing Modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installing Modules =&lt;br /&gt;
Nginx modules must be selected during compile, run time including of modules is not supported. A full summary of the compile-time options, including optional modules can be found in the provided configure script by running ''./configure --help''&lt;br /&gt;
&lt;br /&gt;
= Nginx core modules =&lt;br /&gt;
These modules are required.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[CoreModule|Main]]&lt;br /&gt;
| Configure error logging, processes, permissions, etc.&lt;br /&gt;
|-&lt;br /&gt;
| [[EventsModule|Events]]&lt;br /&gt;
| Configure epoll, kqueue, select, poll, etc. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Standard HTTP modules =&lt;br /&gt;
These modules are automatically compiled in unless explicitly disabled with &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Version&lt;br /&gt;
! configure argument to disable&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCoreModule|Core]]&lt;br /&gt;
| Control ports, locations, error pages, aliases, and other essentials.&lt;br /&gt;
|&lt;br /&gt;
| --without-http&lt;br /&gt;
|- &lt;br /&gt;
| [[HttpAccessModule|Access]]&lt;br /&gt;
| Allow/deny based on IP address.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_access_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAuthBasicModule|Auth Basic]]&lt;br /&gt;
| Basic HTTP authentication.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_auth_basic_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAutoindexModule|Auto Index]]&lt;br /&gt;
| Generates automatic directory listings.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_autoindex_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpBrowserModule|Browser]]&lt;br /&gt;
| Interpret &amp;quot;User-Agent&amp;quot; string.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_browser_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCharsetModule|Charset]]&lt;br /&gt;
| Recode web pages.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_charset_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpEmptyGifModule|Empty GIF]]&lt;br /&gt;
| Serve a 1x1 image from memory.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_empty_gif_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFastcgiModule|FastCGI]]&lt;br /&gt;
| FastCGI Support.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_fastcgi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGeoModule|Geo]]&lt;br /&gt;
| Set config variables using key/value pairs of IP addresses.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_geo_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGzipModule|Gzip]]&lt;br /&gt;
| Gzip responses.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_gzip_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHeadersModule|Headers]]&lt;br /&gt;
| Set arbitrary HTTP response headers. &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpIndexModule|Index]]&lt;br /&gt;
| Controls which files are to be used as index. &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLimitReqModule|Limit Requests]]&lt;br /&gt;
| Limit frequency of connections from a client.&lt;br /&gt;
| 0.7.20&lt;br /&gt;
| --without-http_limit_req_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLimitZoneModule|Limit Zone]]&lt;br /&gt;
| Limit simultaneous connections from a client. Deprecated in 1.1.8, use Limit Conn Instead.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_limit_zone_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLimitConnModule|Limit Conn]]&lt;br /&gt;
| Limit concurrent connections based on a variable.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_limit_conn_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLogModule|Log]]&lt;br /&gt;
| Customize access logs.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMapModule|Map]]&lt;br /&gt;
| Set config variables using arbitrary key/value pairs.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_map_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMemcachedModule|Memcached]]&lt;br /&gt;
| Memcached support.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_memcached_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpProxyModule|Proxy]]&lt;br /&gt;
| Proxy to upstream servers.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_proxy_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRefererModule|Referer]]&lt;br /&gt;
| Filter requests based on &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_referer_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRewriteModule|Rewrite]]&lt;br /&gt;
| Request rewriting using regular expressions.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_rewrite_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpScgiModule|SCGI]]&lt;br /&gt;
| SCGI protocol support.&lt;br /&gt;
| 0.8.42&lt;br /&gt;
| --without-http_scgi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSplitClientsModule|Split Clients]]&lt;br /&gt;
| Splits clients based on some conditions&lt;br /&gt;
| 0.8.37&lt;br /&gt;
| --without-http_split_clients_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSsiModule|SSI]]&lt;br /&gt;
| Server-side includes.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_ssi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamModule|Upstream]]&lt;br /&gt;
| For load-balancing.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_upstream_ip_hash_module (ip_hash directive only)&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUseridModule|User ID]]&lt;br /&gt;
| Issue identifying cookies.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_userid_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUwsgiModule|uWSGI]]&lt;br /&gt;
| uWSGI protocol support.&lt;br /&gt;
| 0.8.40&lt;br /&gt;
| --without-http_uwsgi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[X-accel|X-Accel]]&lt;br /&gt;
| X-Sendfile-like module.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Optional HTTP modules =&lt;br /&gt;
The following modules must be enabled at compile-time with the specified option to &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Version&lt;br /&gt;
! configure argument to enable&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAdditionModule|Addition]]&lt;br /&gt;
| Append text to pages.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_addition_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDegradationModule|Degradation]]&lt;br /&gt;
| Allow to return 204 or 444 code for some locations on low memory condition.&lt;br /&gt;
| 0.8.25&lt;br /&gt;
| --with-http_degradation_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpPerlModule|Embedded Perl]]&lt;br /&gt;
| Use Perl in Nginx config files.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_perl_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFlvModule|FLV]]&lt;br /&gt;
| Flash Streaming Video&lt;br /&gt;
| &lt;br /&gt;
| --with-http_flv_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGeoipModule|GeoIP]]&lt;br /&gt;
| Creates variables with information from the [http://www.maxmind.com/ MaxMind] GeoIP binary files.&lt;br /&gt;
| 0.8.6, 0.7.63&lt;br /&gt;
| --with-http_geoip_module&lt;br /&gt;
|-&lt;br /&gt;
| [[GooglePerftoolsModule|Google Perftools]]&lt;br /&gt;
| Google Performance Tools support.&lt;br /&gt;
| 0.6.29&lt;br /&gt;
| --with-google_perftools_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGzipStaticModule|Gzip Precompression]]&lt;br /&gt;
| Serves precompressed versions of static files.&lt;br /&gt;
| 0.6.23&lt;br /&gt;
| --with-http_gzip_static_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpImageFilterModule|Image Filter]]&lt;br /&gt;
| Transform images with Libgd&lt;br /&gt;
| 0.7.54&lt;br /&gt;
| --with-http_image_filter_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMp4Module|MP4]]&lt;br /&gt;
| Enables mp4 streaming with seeking ability.&lt;br /&gt;
| 1.1.3, 1.0.7&lt;br /&gt;
| --with-http_mp4_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRandomIndexModule|Random Index]]&lt;br /&gt;
| Randomize directory indexes.&lt;br /&gt;
| 0.7.15&lt;br /&gt;
| --with-http_random_index_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRealipModule|Real IP]]&lt;br /&gt;
| For using nginx as backend&lt;br /&gt;
| &lt;br /&gt;
| --with-http_realip_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSecureLinkModule|Secure Link]]&lt;br /&gt;
| Protect pages with a secret key.&lt;br /&gt;
| 0.7.18&lt;br /&gt;
| --with-http_secure_link_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSslModule|SSL]]&lt;br /&gt;
| HTTPS/SSL support.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_ssl_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpStubStatusModule|Stub Status]]&lt;br /&gt;
| View server statistics.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_stub_status_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSubModule|Substitution]]&lt;br /&gt;
| Replace text in pages&lt;br /&gt;
| &lt;br /&gt;
| --with-http_sub_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDavModule|WebDAV]]&lt;br /&gt;
| WebDAV pass-through support.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_dav_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpXsltModule|XSLT]]&lt;br /&gt;
| Post-process pages with XSLT.&lt;br /&gt;
| 0.7.8&lt;br /&gt;
| --with-http_xslt_module&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Mail modules =&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! configure argument&lt;br /&gt;
|-&lt;br /&gt;
| [[MailCoreModule|Core]]&lt;br /&gt;
| Nginx is able to handle and proxy the IMAP, POP3, SMTP protocols. &lt;br /&gt;
| --with-mail&amp;lt;br&amp;gt;--without-mail_pop3_module&amp;lt;br&amp;gt;--without-mail_imap_module&amp;lt;br&amp;gt;--without-mail_smtp_module&lt;br /&gt;
|-&lt;br /&gt;
| [[MailAuthModule|Auth]]&lt;br /&gt;
| Use Nginx to authenticate mail services.&lt;br /&gt;
|-&lt;br /&gt;
| [[MailProxyModule|Proxy]]&lt;br /&gt;
| Nginx can proxy IMAP, POP3, and SMTP protocols.&lt;br /&gt;
|-&lt;br /&gt;
| [[MailSslModule|SSL]]&lt;br /&gt;
| This module ensures SSL/TLS support for POP3/IMAP/SMTP.&lt;br /&gt;
| --with-mail_ssl_module&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Third party modules and Patches =&lt;br /&gt;
Please see the catalog of [[3rdPartyModules|3rd party modules]].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* [[ModulesByExample|Module index by example]]&lt;br /&gt;
* [[ConfigNotation| Configuration Notation Reference]]&lt;br /&gt;
* [[ModuleComparisonMatrix| Module comparison matrix with other servers]]&lt;br /&gt;
* [[FeatureRequests| Feature Requests]] &lt;br /&gt;
* [[GettingStarted| Getting Started]] &lt;br /&gt;
* [[Configuration| Configuration Cookbook]]&lt;br /&gt;
* [[DirectiveIndex| Index of all Directives]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpCoreModule</id>
		<title>HttpCoreModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpCoreModule"/>
				<updated>2012-05-02T23:36:31Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* post_action */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
Controls core features of Nginx's HTTP processing.&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== aio ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/aio.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive is usable as of Linux kernel 2.6.22. For Linux it is required to use directio, this automatically disables sendfile support.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /video {&lt;br /&gt;
    aio on; &lt;br /&gt;
    directio 512; &lt;br /&gt;
    output_buffers 1 128k;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In FreeBSD before 5.2.1 and Nginx 0.8.12 you must disable sendfile support.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /video {&lt;br /&gt;
    aio on; &lt;br /&gt;
    sendfile off;&lt;br /&gt;
    output_buffers 1 128k;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of FreeBSD 5.2.1 and Nginx 0.8.12 you can use it along with sendfile.&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /video {&lt;br /&gt;
    aio sendfile; &lt;br /&gt;
    sendfile on;&lt;br /&gt;
    tcp_nopush on;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== alias ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/alias.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive assigns a path to be used as the basis for serving requests for the indicated location. Note that it may look similar to the &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; directive at first sight, but the document root doesn't change, just the file system path used for the request. The location part of the request is '''dropped''' in the request Nginx issues. Let's see this in action. Consider the following example.&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location  /i/ {&lt;br /&gt;
  alias  /spool/w3/images/;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
A request for &amp;quot;/i/top.gif&amp;quot; will instruct Nginx to serve the file &amp;quot;/spool/w3/images/top.gif&amp;quot;. As you can see,  '''only''' the part of the URI '''after''' the location is appended. The location itself, in this case &amp;quot;/i/&amp;quot;, is dropped. With a &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; directive the '''full''' path is appended, i.e., in the above example it would have been, &amp;quot;/spool/w3/images/i/top.gif&amp;quot; &amp;amp;mdash; hence including '''also''' the location &amp;quot;/i/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Aliases can also be used in a location specified by a regex.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location ~ ^/download/(.*)$ {&lt;br /&gt;
  alias /home/website/files/$1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The request &amp;quot;/download/book.pdf&amp;quot; will return the file &amp;quot;/home/website/files/book.pdf&amp;quot;. Note again that only part of the request URI '''after''' the location is appended to the path defined by &amp;lt;code&amp;gt;alias&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
It is possible to use variables in the replacement path.&lt;br /&gt;
&lt;br /&gt;
== chunked_transfer_encoding ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/chunked_transfer_encoding.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive (0.7.66+) sets whether chunked encoding is enabled in responses (only valid for connections using HTTP 1.1 or later).&lt;br /&gt;
&lt;br /&gt;
== client_body_in_file_only ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_body_in_file_only.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive forces nginx to always store a client request body into a temporary disk file even if the body is actually of 0 size.&lt;br /&gt;
&lt;br /&gt;
Please note that the file will '''NOT''' be removed at request completion if the directive is enabled.&lt;br /&gt;
&lt;br /&gt;
This directive can be used for debugging and for the &amp;lt;code&amp;gt;$r-&amp;gt;request_body_file&amp;lt;/code&amp;gt; method in the [[EmbeddedPerlModule|Embedded Perl module]].&lt;br /&gt;
&lt;br /&gt;
== client_body_in_single_buffer ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_body_in_single_buffer.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive(0.7.58+) specifies whether to keep the whole body in a single client request buffer. The directive is recommended when using the variable [[#$request_body|$request_body]] to reduce the operations of copying.&lt;br /&gt;
&lt;br /&gt;
Note that when the request body cannot be hold in a single buffer (see [[#client_body_buffer_size|client_body_buffer_size]]), the body will still touch the disk.&lt;br /&gt;
&lt;br /&gt;
== client_body_buffer_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_body_buffer_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive specifies the client request body buffer size.&lt;br /&gt;
&lt;br /&gt;
If the request body size is more than the buffer size, then the entire (or partial) request body is written into a temporary file.&lt;br /&gt;
&lt;br /&gt;
The default size is equal to page size times 2.  Depending on the platform, the page size is either 8K or 16K.&lt;br /&gt;
&lt;br /&gt;
When the ''Content-Length'' request header specifies a smaller size value than the buffer size, then Nginx will use the smaller one. As a result, Nginx will '''not''' always allocate a buffer of this buffer size for every request.&lt;br /&gt;
&lt;br /&gt;
== client_body_temp_path ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_body_temp_path.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive assigns the directory for storing the temporary files in it with the body of the request.&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;code&amp;gt;dir-path&amp;lt;/code&amp;gt; a hierarchy of subdirectories up to three levels are possible.&lt;br /&gt;
&lt;br /&gt;
For example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
client_body_temp_path  /spool/nginx/client_temp 1 2;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
The directory structure will be like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/spool/nginx/client_temp/7/45/00000123457&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== client_body_timeout ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_body_timeout.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive sets the read timeout for the request body from client.&lt;br /&gt;
&lt;br /&gt;
The timeout is set only if a body is not get in one readstep. If after this time the client send nothing, nginx returns error &amp;quot;Request time out&amp;quot; (408).&lt;br /&gt;
&lt;br /&gt;
== client_header_buffer_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_header_buffer_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive sets the headerbuffer size for the request header from client.&lt;br /&gt;
&lt;br /&gt;
For the overwhelming majority of requests it is completely sufficient a buffer size of 1K.&lt;br /&gt;
&lt;br /&gt;
However if a big cookie is in the request-header or the request has come from a wap-client the header can not be placed in 1K, therefore, the request-header or a line of request-header is not located completely in this buffer nginx allocate a bigger buffer, the size of the bigger buffer can be set with the instruction large_client_header_buffers.&lt;br /&gt;
&lt;br /&gt;
== client_header_timeout ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_header_timeout.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Specifies how long to wait for the client to send a request header (e.g.: &amp;lt;code&amp;gt;GET / HTTP/1.1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
This timeout is reached only if a header is not received in one read ''(needs clarification)''. If the client has not sent anything within this timeout period, nginx returns the HTTP status code 408 (&amp;quot;Request timed out&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== client_max_body_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_max_body_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Specifies the maximum accepted body size of a client request, as indicated by the request header &amp;lt;code&amp;gt;Content-Length&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If the stated content length is greater than this size, then the client receives the HTTP error code 413 (&amp;quot;Request Entity Too Large&amp;quot;).  It should be noted that web browsers do not usually know how to properly display such an HTTP error.&lt;br /&gt;
&lt;br /&gt;
== connection_pool_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/connection_pool_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive is used to allocate memory per connection. The pool is used for small allocations. If a block is bigger than pool size or bigger than page size, then it is allocated outside the pool. If there is not enough memory for small allocation inside pool, then a new block of the same pool size is allocated. This directive has only a very small effect. (source http://markmail.org/message/b2kmrluscevimpba)&lt;br /&gt;
&lt;br /&gt;
== default_type ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/default_type.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assigns the default MIME-type to be used for files where the standard MIME map doesn't specify anything.&lt;br /&gt;
&lt;br /&gt;
See also [[#types|types]]&lt;br /&gt;
&lt;br /&gt;
== directio ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/directio.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive enables use of flags O_DIRECT (FreeBSD, Linux), F_NOCACHE (Mac OS X) or directio() function (Solaris) for reading files with size greater than specified. This directive disables use of [[HttpCoreModule#sendfile|sendfile]] for this request. This directive may be useful for big files:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
    directio  4m;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== directio_alignment ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/directio_alignment.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable_symlinks ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/disable_symlinks.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== error_page ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/error_page.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive specifies the URI that will be shown for the errors indicated.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
error_page   404          /404.html;&lt;br /&gt;
error_page   502 503 504  /50x.html;&lt;br /&gt;
error_page   403          http://example.com/forbidden.html;&lt;br /&gt;
error_page   404          = @fetch;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
Furthermore, it is possible to change the status code of the answer to another, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
error_page 404 =200 /empty.gif;&lt;br /&gt;
error_page 404 =403 /forbidden.gif;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
Additionally you can have your designated error handler determine the returned status code by using = without specifying a status code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
error_page   404 = /404.php;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
If there is no need to change URI during redirection it is possible to redirect processing of error pages into a named location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location / (&lt;br /&gt;
    error_page 404 @fallback;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
location @fallback (&lt;br /&gt;
    proxy_pass http://backend;&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== if_modified_since ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/if_modified_since.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Specifies how to compare time of file modification and time in request header &amp;quot;If-Modified-Since&amp;quot;:&lt;br /&gt;
* off — don't check &amp;quot;If-Modified-Since&amp;quot; request header (0.7.34);&lt;br /&gt;
* exact — exact match;&lt;br /&gt;
* before — file modification time should be less than time in &amp;quot;If-Modified-Since&amp;quot; request header.&lt;br /&gt;
&lt;br /&gt;
== ignore_invalid_headers ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/ignore_invalid_headers.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== internal ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/internal.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''internal''' indicates that the matching location can be used only for so called &amp;quot;internal&amp;quot; requests.&lt;br /&gt;
&lt;br /&gt;
For external requests it will return the error &amp;quot;Not found&amp;quot; (404).&lt;br /&gt;
&lt;br /&gt;
Internal requests are the following:&lt;br /&gt;
* requests redirected by the instruction '''error_page'''&lt;br /&gt;
* subrequests created by the command '''include virtual''' of the &amp;quot;ngx_http_ssi_module&amp;quot; module&lt;br /&gt;
* requests changed by the instruction '''rewrite''' of the &amp;quot;ngx_http_rewrite_module&amp;quot; module&lt;br /&gt;
&lt;br /&gt;
An example to prevent clients fetching error pages directly:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
error_page 404 /404.html;&lt;br /&gt;
location  /404.html {&lt;br /&gt;
  internal;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== keepalive_disable ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/keepalive_disable.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Disable keepalive for certain user agents (0.9.0+).  By default keepalive is disabled for MS Internet Explorer (older than 6.0 service pack 2) after &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; requests, and for Safari.  This is because both browsers have issues with handling &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; requests with keepalives.  If you are running a site that does not use &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; anywhere, you may optionally choose to enable keepalive in these browsers.&lt;br /&gt;
&lt;br /&gt;
== keepalive_timeout ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/keepalive_timeout.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first parameter assigns the timeout for keep-alive connections with the client. The server will close connections after this time.&lt;br /&gt;
&lt;br /&gt;
The optional second parameter assigns the &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; value in the header &amp;lt;code&amp;gt;Keep-Alive: timeout=time&amp;lt;/code&amp;gt; of the response. This header can convince some browsers to close the connection, so that the server does not have to. Without this parameter, nginx does not send a &amp;lt;code&amp;gt;Keep-Alive&amp;lt;/code&amp;gt; header (though this is not what makes a connection &amp;quot;keep-alive&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The parameters can differ from each other.&lt;br /&gt;
&lt;br /&gt;
Notes on how browsers handle the &amp;lt;code&amp;gt;Keep-Alive&amp;lt;/code&amp;gt; header:&lt;br /&gt;
&lt;br /&gt;
* MSIE and Opera ignore the &amp;quot;Keep-Alive: timeout=&amp;lt;N&amp;gt;&amp;quot; header.&lt;br /&gt;
* MSIE keeps the connection alive for about 60-65 seconds, then sends a TCP RST.&lt;br /&gt;
* Opera keeps the connection alive for a long time.&lt;br /&gt;
* Mozilla keeps the connection alive for N plus about 1-10 seconds.&lt;br /&gt;
* Konqueror keeps the connection alive for about N seconds.&lt;br /&gt;
&lt;br /&gt;
== keepalive_requests ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/keepalive_requests.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of requests which can be made over a keep-alive connection.&lt;br /&gt;
&lt;br /&gt;
== large_client_header_buffers ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/large_client_header_buffers.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive assigns the maximum number and size of buffers for large headers to read from client request.&lt;br /&gt;
&lt;br /&gt;
The request line can not be bigger than the size of one buffer, if the client send a bigger header nginx returns error &amp;quot;Request URI too large&amp;quot; (414).&lt;br /&gt;
&lt;br /&gt;
The longest header line of request also must be not more than the size of one buffer, otherwise the client get the error &amp;quot;Bad request&amp;quot; (400).&lt;br /&gt;
&lt;br /&gt;
Buffers are separated only as needed.&lt;br /&gt;
&lt;br /&gt;
By default the size of one buffer is 8192 bytes. In the old nginx, this is equal to the size of page, depending on platform this either 4K or 8K, if at the end of working request connection converts to state keep-alive, then these buffers are freed.&lt;br /&gt;
&lt;br /&gt;
== limit_except ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/limit_except.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Limits which HTTP methods are allowed for a given request path/location.&lt;br /&gt;
&lt;br /&gt;
For the limitation can be used the directives of modules ngx_http_access_module and ngx_http_auth_basic_module:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
limit_except  GET {&lt;br /&gt;
  allow  192.168.1.0/32;&lt;br /&gt;
  deny   all;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== limit_rate ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/limit_rate.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive assigns the speed of transmission of the answer to client. Speed is assigned in the bytes per second. Limitation works only for one connection, i.e., if client opens 2 connections, then total velocity will be 2 times higher then the limit set.&lt;br /&gt;
&lt;br /&gt;
If it is necessary to limit speed for the part of the clients at the ''server'' level, based on some kind of condition - then this directive does not apply. Instead you should specify the limit by assigning the value to the $limit_rate variable, as shown below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  if ($slow) {&lt;br /&gt;
    set $limit_rate  4k;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also control the rate of individual responses returned by a &amp;lt;code&amp;gt;proxy_pass&amp;lt;/code&amp;gt; response ([[HttpProxyModule]]) by setting the &amp;lt;code&amp;gt;X-Accel-Limit-Rate&amp;lt;/code&amp;gt; header ([[XSendfile]]). This can be done without a &amp;lt;code&amp;gt;X-Accel-Redirect&amp;lt;/code&amp;gt; header.&lt;br /&gt;
&lt;br /&gt;
== limit_rate_after ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/limit_rate_after.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive limits speed only after the first part was sent.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
limit_rate_after 1m;&lt;br /&gt;
limit_rate 100k;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== lingering_close ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/lingering_close.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets SO_LINGER on sockets.&lt;br /&gt;
&lt;br /&gt;
== lingering_time ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/lingering_time.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets SO_LINGER on sockets.&lt;br /&gt;
&lt;br /&gt;
== lingering_timeout ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/lingering_timeout.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets SO_LINGER on sockets.&lt;br /&gt;
&lt;br /&gt;
== listen ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/listen.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ''listen'' directive specifies the address and port accepted by the enclosing [[#server|server {...}]]  block. It is possible to specify only an address, only a port, or a server name as the address.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen 127.0.0.1:8000;&lt;br /&gt;
listen 127.0.0.1;&lt;br /&gt;
listen 8000;&lt;br /&gt;
listen *:8000;&lt;br /&gt;
listen localhost:8000;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
IPv6 address(0.7.36) are set in square brackets:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen [::]:8000; &lt;br /&gt;
listen [fe80::1]; &lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Linux by default any IPv6 TCP socket '''also accepts''' IPv4 traffic using the IPv4 to IPv6 mapped address format, i.e., ::ffff:&amp;lt;IPv4 adddress in dotted decimal notation&amp;gt;. E.g., &lt;br /&gt;
&amp;lt;code&amp;gt;::ffff:192.168.0.27&amp;lt;/code&amp;gt; maps the IPv4 address 192.168.0.27 to an IPv6 address.&lt;br /&gt;
&lt;br /&gt;
When you enable the address [::]:80, binding port 80 using IPv6, in the listen directive, in Linux, by default, the IPv4 port 80 is also enabled. Meaning that nginx listens for '''both''' IPv4 and IPv6 incoming traffic. Therefore if you erroneously specify also a IPv4 address you'll get an ''already bind address'' error when reloading nginx configuration.&lt;br /&gt;
&lt;br /&gt;
In Linux the separation of the IPv6 and IPv4 stacks is controlled through the runtime parameter:&lt;br /&gt;
&amp;lt;code&amp;gt;net.ipv6.bindv6only&amp;lt;/code&amp;gt; which has the value 0 by default. &lt;br /&gt;
&lt;br /&gt;
If you want to use '''separate''' sockets for IPv4 and IPv6 you should set this parameter to 1 using &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note that any nginx instance that was running '''before''' you made the change will '''continue to accept''' IPv4 traffic. Therefore you should edit your nginx configuration to reflect the new setup for IPv6 and IPv4 packet handling and do a '''restart'''. &lt;br /&gt;
&lt;br /&gt;
If on the other hand you launched another server instance (vhost) and you expect it to also handle IPv4 traffic by using only, for example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen [::]:80;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
the binding of the IPv4 address will fail. The correct way to to this is by using the &amp;quot;ipv6only=on&amp;quot; option in the IPv6 listen directive and also specifying a IPv4 listen directive in the respective server block.&lt;br /&gt;
&lt;br /&gt;
This re-editing of the configuration must be done '''after''' you changed your kernel runtime parameter. This is the most generic situation in that case (separation of IPv6 and IPv4 sockets):&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen [::]:80 ipv6only=on; # listen for IPv6 only traffic on IPv6 sockets&lt;br /&gt;
listen 80; # listen also for IPv4 traffic on &amp;quot;regular&amp;quot; IPv4 sockets&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In FreeBSD the default is '''separate''' IPv4 and IPv6 sockets. Therefore &amp;quot;listen [::]:80&amp;quot; only binds port 80 for listening to IPv6 traffic. It's always necessary to specify also IPv4 listen directives if you wish to also handle IPv4 traffic.&lt;br /&gt;
&lt;br /&gt;
It's possible to specify '''only''' IPv6 addresses in the listen directive. Using the &amp;quot;default_server ipv6only=on&amp;quot; option. Specific IPv6 addresses can be used with a IPv6 only default directive. Other server directives can also specifiy listen directives with IPv4 addresses. The uniqueness of the IPv6 handling concerns only the '''same''' [[#server|server {...}]] block.&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen [2a02:750:5::123]:80;&lt;br /&gt;
listen [::]:80 default_server ipv6only=on;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If only the address is given, the default port nginx binds to is 80.&lt;br /&gt;
&lt;br /&gt;
If the directive has the ''default_server'' parameter, then the enclosing [[#server|server {...}]] block will be the default server for the address:port pair.  This is useful for name-based virtual hosting where you wish to specify the default server block for hostnames that do not match any [[#server_name|server_name]]  directives.  If there are no directives with the ''default_server'' parameter, then the default server will be the first server block in which the &amp;lt;code&amp;gt;address:port&amp;lt;/code&amp;gt; pair appears. The ''default_server'' parameter appeared in version 0.8.21 thus deprecating the parameter ''default''.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;listen&amp;lt;/code&amp;gt; directive accepts several parameters, specific to the system calls &amp;lt;code&amp;gt;listen(2)&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;bind(2)&amp;lt;/code&amp;gt;. These parameters must follow the &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
backlog=num -- is assigned parameter backlog in call &amp;lt;code&amp;gt;listen(2)&amp;lt;/code&amp;gt;. By default backlog equals -1.&lt;br /&gt;
&lt;br /&gt;
rcvbuf=size -- assigned to the parameter &amp;lt;code&amp;gt;SO_RCVBUF&amp;lt;/code&amp;gt; for the listening socket.&lt;br /&gt;
&lt;br /&gt;
sndbuf=size -- assigned to the parameter &amp;lt;code&amp;gt;SO_SNDBUF&amp;lt;/code&amp;gt; for the listening socket.&lt;br /&gt;
&lt;br /&gt;
accept_filter=filter -- is assigned name accept-filter.&lt;br /&gt;
&lt;br /&gt;
: . It works only to FreeBSD, it is possible to use two filters -- &amp;lt;code&amp;gt;dataready&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;httpready&amp;lt;/code&amp;gt;. On the signal -HUP accept-filter it is possible to change only in the quite last versions FreeBSD: 6.0, 5.4-STABLE and 4.11-STABLE.&lt;br /&gt;
deferred -- indicates to use that postponed accept(2) on Linux with&lt;br /&gt;
&lt;br /&gt;
: . the aid of option &amp;lt;code&amp;gt;TCP_DEFER_ACCEPT&amp;lt;/code&amp;gt;.&lt;br /&gt;
bind -- indicates that it is necessary to make &amp;lt;code&amp;gt;bind(2)&amp;lt;/code&amp;gt; separately&lt;br /&gt;
&lt;br /&gt;
: . for this pair of address:port. The fact is that if are described several directives listen with the identical port, but by different  addresses and one of the directives listen listens to on all addresses for this port (*:port), then nginx will make bind(2) only to *:port. It is necessary to consider that in this case for determining the address, on which the connections arrive, is done the system call getsockname(). But if are used parameters backlog, rcvbuf, sndbuf, accept_filter or deferred, then it is always done separately for this pair of address:port bind(2).&lt;br /&gt;
ssl -- parameter (0.7.14) not related to listen(2) and bind(2) syscalls&lt;br /&gt;
&lt;br /&gt;
: . but instead specifies that connections accepted on this port should work in SSL mode. This allows to specify compact configurations for servers working with both HTTP and HTTPS. For example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen  80;&lt;br /&gt;
listen  443 default_server ssl;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of the use of the parameters:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen  127.0.0.1 default_server accept_filter=dataready backlog=1024;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since version 0.8.21 nginx is able to listen on unix sockets:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen unix:/tmp/nginx1.sock;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== location ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/location.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive allows different configurations depending on the URI. It can be configured using both literal strings and regular expressions. To use regular expressions, you must use a prefix:&lt;br /&gt;
#  &amp;quot;~&amp;quot; for case sensitive matching&lt;br /&gt;
#  &amp;quot;~*&amp;quot; for case insensitive matching &lt;br /&gt;
# there is no syntax for NOT matching a regular expression. Instead, match the target regular expression and assign an empty block, then use ''location /'' to match anything else.&lt;br /&gt;
&lt;br /&gt;
The order in which ''location'' directives are checked is as follows:&lt;br /&gt;
&lt;br /&gt;
#  Directives with the &amp;quot;=&amp;quot; prefix that match the query exactly (literal string). If found, searching stops.&lt;br /&gt;
#  All remaining directives with conventional strings. If this match used the &amp;quot;^~&amp;quot; prefix, searching stops.&lt;br /&gt;
#  Regular expressions, in the order they are defined in the configuration file.&lt;br /&gt;
#  If #3 yielded a match, that result is used. Otherwise, the match from #2 is used.&lt;br /&gt;
&lt;br /&gt;
Details below.&lt;br /&gt;
&lt;br /&gt;
To determine which ''location'' directive matches a particular query, the literal strings are checked first. Literal strings match the beginning portion of the query - the most specific match will be used. Afterwards, regular expressions are checked in the order defined in the configuration file. The first regular expression to match the query will stop the search. If no regular expression matches are found, the result from the literal string search is used.&lt;br /&gt;
&lt;br /&gt;
For case-insensitive operating systems, like Mac OS X or Windows with Cygwin, literal string matching is done in a case insensitive way (0.7.7).  However, comparison is limited to single-byte locale's only.&lt;br /&gt;
&lt;br /&gt;
Regular expression may contain captures (0.7.40), which can then be used in other directives.&lt;br /&gt;
&lt;br /&gt;
It is possible to disable regular expression checks after literal string matching by using &amp;quot;^~&amp;quot; prefix.  If the most specific match literal location has this prefix: regular expressions aren't checked.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;=&amp;quot; prefix forces an '''exact''' (literal) match between the request URI and the ''location'' parameter. When matched, the search stops immediately.  A useful application is that if the request &amp;quot;/&amp;quot; occurs frequently, it's better to use &amp;quot;location = /&amp;quot;, as that will speed up the processing of this request a bit, since the search will stop after the first comparison.&lt;br /&gt;
&lt;br /&gt;
On exact match with literal location without &amp;quot;=&amp;quot; or &amp;quot;^~&amp;quot; prefixes search is also immediately terminated.&lt;br /&gt;
&lt;br /&gt;
It is important to know that nginx does the comparison against decoded URIs. For example, if you wish to match &amp;quot;/images/%20/test&amp;quot;, then you must use &amp;quot;/images/ /test&amp;quot; to determine the location.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location  = / {&lt;br /&gt;
  # matches the query / only.&lt;br /&gt;
  [ configuration A ] &lt;br /&gt;
}&lt;br /&gt;
location  / {&lt;br /&gt;
  # matches any query, since all queries begin with /, but regular&lt;br /&gt;
  # expressions and any longer conventional blocks will be&lt;br /&gt;
  # matched first.&lt;br /&gt;
  [ configuration B ] &lt;br /&gt;
}&lt;br /&gt;
location ^~ /images/ {&lt;br /&gt;
  # matches any query beginning with /images/ and halts searching,&lt;br /&gt;
  # so regular expressions will not be checked.&lt;br /&gt;
  [ configuration C ] &lt;br /&gt;
}&lt;br /&gt;
location ~* \.(gif|jpg|jpeg)$ {&lt;br /&gt;
  # matches any request ending in gif, jpg, or jpeg. However, all&lt;br /&gt;
  # requests to the /images/ directory will be handled by&lt;br /&gt;
  # Configuration C.   &lt;br /&gt;
  [ configuration D ] &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example requests:&lt;br /&gt;
&lt;br /&gt;
*  / -&amp;gt; configuration A&lt;br /&gt;
* /documents/document.html -&amp;gt; configuration B&lt;br /&gt;
* /images/1.gif -&amp;gt; configuration C&lt;br /&gt;
* /documents/1.jpg -&amp;gt; configuration D&lt;br /&gt;
&lt;br /&gt;
Note that you could define these 4 configurations in any order and the results would remain the same.&lt;br /&gt;
&lt;br /&gt;
The prefix &amp;quot;@&amp;quot; specifies a named location. Such locations are not used during normal processing of requests, they are intended only to process internally redirected requests (see &lt;br /&gt;
[[HttpCoreModule#error_page|error_page]], [[HttpCoreModule#try_files|try_files]]).&lt;br /&gt;
&lt;br /&gt;
== log_not_found ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/log_not_found.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The directive enables or disables messages in [[CoreModule#error_log|error_log]] about files not found on disk.&lt;br /&gt;
&lt;br /&gt;
== log_subrequest ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/log_subrequest.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive enables or disables messages in [[HttpLogModule#access_log|access_log]] about sub-requests such as [[HttpRewriteModule#Synopsis|rewrite rules]] and/or [[HttpSsiModule#Synopsis|SSI requests]].&lt;br /&gt;
&lt;br /&gt;
== max_ranges ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/max_ranges.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== merge_slashes ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/merge_slashes.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enables merging adjacent slashes when parsing the request line. For example, a request for http://www.example.com/foo//bar/ will produce the following values for $uri:&lt;br /&gt;
&lt;br /&gt;
* on: /foo/bar/&lt;br /&gt;
* off: /foo//bar/&lt;br /&gt;
&lt;br /&gt;
Be aware that static location matching is performed as a string compare, so if merge_slashes is turned off, a request for /foo//bar/ will *not* match &amp;lt;code&amp;gt;location /foo/bar/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== msie_padding ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/msie_padding.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive enables or disables the msie_padding feature for MSIE browsers, and Chrome (as of nginx 0.8.25+). When this is enabled, nginx will pad the size of the response body to a minimum of 512 bytes for responses with a status code above or equal to 400.&lt;br /&gt;
&lt;br /&gt;
The padding prevents the activation of &amp;quot;friendly&amp;quot; HTTP error pages in MSIE and Chrome, so as to not hide/mask the more-informative error pages from the server.&lt;br /&gt;
&lt;br /&gt;
== msie_refresh ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/msie_refresh.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive allows or forbids issuing a &amp;lt;code&amp;gt;refresh&amp;lt;/code&amp;gt; instead of doing a &amp;lt;code&amp;gt;redirect&amp;lt;/code&amp;gt; for MSIE.&lt;br /&gt;
&lt;br /&gt;
== open_file_cache ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/open_file_cache.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive sets the cache activity on. These information can be stored:&lt;br /&gt;
 &lt;br /&gt;
* Open file descriptors, information with their size and modification time;&lt;br /&gt;
* Information about the existence of directories;&lt;br /&gt;
* Error information when searches for a file - no file, do not have rights to read, etc. See also [[#open_file_cache_errors|open_file_cache_errors]]&lt;br /&gt;
&lt;br /&gt;
Options directive:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;max&amp;lt;/code&amp;gt; - specifies the maximum number of entries in the cache. When the cache overflows, the least recently used(LRU) items will be removed;&lt;br /&gt;
* &amp;lt;code&amp;gt;inactive&amp;lt;/code&amp;gt; - specifies the time when the cached item is removed, if it has not been downloaded during that time, the default is 60 seconds;&lt;br /&gt;
* &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt; - prohibits the cache activity.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
 open_file_cache max=1000 inactive=20s; &lt;br /&gt;
 open_file_cache_valid    30s; &lt;br /&gt;
 open_file_cache_min_uses 2;&lt;br /&gt;
 open_file_cache_errors   on; &lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== open_file_cache_errors ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/open_file_cache_errors.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive specifies whether or not to cache errors when searching for a file.&lt;br /&gt;
&lt;br /&gt;
== open_file_cache_min_uses ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/open_file_cache_min_uses.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive defines the minimum use number of a file within the time specified in the directive parameter inactive in [[#open_file_cache|open_file_cache]]. ?If use more than the number, the file descriptor will remain open in the cache.&lt;br /&gt;
&lt;br /&gt;
== open_file_cache_valid ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/open_file_cache_valid.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive specifies the time when need to check the validity of the information about the item in [[#open_file_cache|open_file_cache]].&lt;br /&gt;
&lt;br /&gt;
== optimize_server_names ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/optimize_server_names.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive activates or deactivates optimization of host name checks for name-based virtual servers.&lt;br /&gt;
&lt;br /&gt;
In particular, the check influences the name of the host used in redirects. If optimization is on, and all name-based servers listening on one address:port pair have identical configuration, then names are not checked during request execution and redirects use first server name.&lt;br /&gt;
&lt;br /&gt;
If redirect must use host name passed by the client, then the optimization must be turned off.&lt;br /&gt;
&lt;br /&gt;
Note: this directive is deprecated in nginx 0.7.x, use [[#server_name_in_redirect|server_name_in_redirect]] instead.&lt;br /&gt;
&lt;br /&gt;
== port_in_redirect ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/port_in_redirect.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive allows or prevents port indication in redirects handled by nginx.&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;port_in_redirect&amp;lt;/code&amp;gt; is off, then Nginx will '''not''' add the port in the url when the request is redirected.&lt;br /&gt;
&lt;br /&gt;
== post_action ==&lt;br /&gt;
'''syntax:''' ''post_action [ uri|off ] ''&lt;br /&gt;
&lt;br /&gt;
'''default:''' ''post_action off''&lt;br /&gt;
&lt;br /&gt;
'''context:''' ''http, server, location, if-in-location''&lt;br /&gt;
&lt;br /&gt;
Defines a URI to sub-request upon completion of current request.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /protected_files { &lt;br /&gt;
	internal;&lt;br /&gt;
&lt;br /&gt;
	proxy_pass http://127.0.0.2;&lt;br /&gt;
	post_action /protected_done;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Send the post_action request to a FastCGI backend for logging.&lt;br /&gt;
location /protected_done {&lt;br /&gt;
	internal;&lt;br /&gt;
	fastcgi_pass 127.0.0.1:9000;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' this directive &amp;quot;has subtleties&amp;quot; according to Maxim Dounin, so '''use at your own risk.'''&lt;br /&gt;
&lt;br /&gt;
== postpone_output ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/postpone_output.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== read_ahead ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/read_ahead.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== recursive_error_pages ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/recursive_error_pages.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;recursive_error_pages&amp;lt;/code&amp;gt; enables or disables following a chain of &amp;lt;code&amp;gt;error_page&amp;lt;/code&amp;gt; directives.&lt;br /&gt;
&lt;br /&gt;
== request_pool_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/request_pool_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive is used to allocate memory per request. The pool is used for small allocations. If a block is bigger than pool size or bigger than page size, then it is allocated outside the pool. If there is not enough memory for small allocation inside pool, then a new block of the same pool size is allocated. This directive has only a very small effect. (source http://markmail.org/message/b2kmrluscevimpba)&lt;br /&gt;
&lt;br /&gt;
== reset_timedout_connection ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/reset_timedout_connection.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive enables or disables resetting the connection on&lt;br /&gt;
timeout. When resetting the connection, before the socket is closed,&lt;br /&gt;
the socket SO_LINGER option is set with a 0 timeout, which&lt;br /&gt;
forces the RST packet to be sent to the client upon closing the socket, thus freeing&lt;br /&gt;
all memory associated with it. This prevents the socket in the FIN_WAIT1 state, along with the buffers&lt;br /&gt;
associated with it from lying around.&lt;br /&gt;
&lt;br /&gt;
Note that sockets with keepalive connections, after the defined timeout, are closed in the usual way.&lt;br /&gt;
&lt;br /&gt;
== resolver ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/resolver.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive defines DNS server address, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
resolver 127.0.0.1;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== resolver_timeout ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/resolver_timeout.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive defines timeout for name resolution, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
resolver_timeout 5s;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== root ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/root.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''root''' specifies the document root for the requests. For example, with this configuration&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location  /i/ {&lt;br /&gt;
  root  /spool/w3;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
A request for &amp;quot;/i/top.gif&amp;quot; will return the file &amp;quot;/spool/w3/i/top.gif&amp;quot;. You can use variables in the argument.&lt;br /&gt;
&lt;br /&gt;
'''note:''' Keep in mind that the root will still append the directory to the request so that a request for &amp;quot;/i/top.gif&amp;quot; will not look in &amp;quot;/spool/w3/top.gif&amp;quot; like might happen in an Apache-like alias configuration where the location match itself is dropped. Use the &amp;lt;code&amp;gt;alias&amp;lt;/code&amp;gt; directive to achieve the Apache-like functionality.&lt;br /&gt;
&lt;br /&gt;
== satisfy ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/satisfy.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This determines the adopted access policy when directives from multiple access phase handlers, such as the [[HttpAccessModule|Access]] and [[HttpAuthBasicModule|Auth Basic]] modules, are defined in a context:&lt;br /&gt;
* all - All access phase handlers must grant access to the context&lt;br /&gt;
* any - Any access phase handler may grant access to the context&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location / {&lt;br /&gt;
  satisfy any;&lt;br /&gt;
  allow 192.168.1.0/32;&lt;br /&gt;
  deny all;&lt;br /&gt;
  auth_basic &amp;quot;closed site&amp;quot;;&lt;br /&gt;
  auth_basic_user_file conf/htpasswd;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== satisfy_any ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/satisfy_any.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''deprecated:''' 0.6.25 -- Use the [[#satisfy|satisfy]] directive instead&lt;br /&gt;
&lt;br /&gt;
== send_lowat ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/send_lowat.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== send_timeout ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/send_timeout.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Specifies the response timeout to the client. This timeout does not apply to the ''entire'' transfer but, rather, only between two subsequent client-read operations.  Thus, if the client has not read any data for this amount of time, then nginx shuts down the connection.&lt;br /&gt;
&lt;br /&gt;
== sendfile ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/sendfile.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive activate or deactivate the usage of &amp;lt;code&amp;gt;sendfile()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
sendfile() copies data between one file descriptor and another.  Because this copying is done within the kernel, sendfile() is more efficient than the combination of read(2) and write(2), which would require transferring data to and from user space. &lt;br /&gt;
&lt;br /&gt;
Read more at: https://www.kernel.org/doc/man-pages/online/pages/man2/sendfile.2.html&lt;br /&gt;
&lt;br /&gt;
How does sendfile helps : http://www.techrepublic.com/article/use-sendfile-to-optimize-data-transfer/1044112&lt;br /&gt;
&lt;br /&gt;
== sendfile_max_chunk ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/sendfile_max_chunk.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== server ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/server.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive assigns configuration for the virtual server.&lt;br /&gt;
&lt;br /&gt;
There is no separation of IP and name-based (the &amp;lt;code&amp;gt;Host&amp;lt;/code&amp;gt; header of the request) servers.&lt;br /&gt;
&lt;br /&gt;
Instead, the directive &amp;lt;code&amp;gt;listen&amp;lt;/code&amp;gt; is used to describe all addresses and ports on which incoming connections can occur, and in directive &amp;lt;code&amp;gt;server_name&amp;lt;/code&amp;gt; indicate all names of the server.&lt;br /&gt;
&lt;br /&gt;
== server_name ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/server_name.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive performs two actions:&lt;br /&gt;
&lt;br /&gt;
* Compares the &amp;lt;code&amp;gt;Host&amp;lt;/code&amp;gt; header of the incoming HTTP request against the [[#server|server { ... }]] blocks in the Nginx configuration files and selects the first one that matches. This is how '''virtual servers''' are defined. Server names are processed in the following order:&lt;br /&gt;
&lt;br /&gt;
# full, static names&lt;br /&gt;
# names with a wildcard at the start of the name — *.example.com&lt;br /&gt;
# names with a wildcard at the end of the name — www.example.*&lt;br /&gt;
# names with regular expressions&lt;br /&gt;
: If there is no match, a [[#server|server { ... }]]  block in the configuration file will be used based on the following order:&lt;br /&gt;
# the server block with a matching &amp;lt;code&amp;gt;listen&amp;lt;/code&amp;gt; directive marked as &amp;lt;code&amp;gt;[default|default_server]&amp;lt;/code&amp;gt;&lt;br /&gt;
# the first server block with a matching &amp;lt;code&amp;gt;listen&amp;lt;/code&amp;gt; directive (or implicit &amp;lt;code&amp;gt;listen 80;&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* Sets the server name that will be used in HTTP redirects if [[#server_name_in_redirect|server_name_in_redirect]]  is set.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name   example.com  www.example.com;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first name becomes the basic name of server. By default the name of the machine (hostname) is used.  &lt;br /&gt;
&lt;br /&gt;
It is possible to use &amp;quot;*&amp;quot; for replacing the first or the last part of the name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name   example.com  *.example.com  www.example.*;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first two of the above names (example.com and *.example.com) can be combined into one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name  .example.com;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is also possible to use regular expressions in server names, prepending the name with a tilde &amp;quot;~&amp;quot; like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name   www.example.com   ~^www\d+\.example\.com$;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since nginx 0.7.12, an empty server name is supported to catch the requests without &amp;quot;Host&amp;quot; header, please note that most browsers will always send a Host header, if accessed by IP the Host header will contain the IP. To specify a catch-all block please see the default_server flag of the listen directive.&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name &amp;quot;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since nginx 0.8.25 named captures can be used in server_name:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name   ~^(www\.)?(?&amp;lt;domain&amp;gt;.+)$;&lt;br /&gt;
  root  /sites/$domain;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some older versions of PCRE may have issues with this syntax. If any problems arise try this following syntax:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name   ~^(www\.)?(?P&amp;lt;domain&amp;gt;.+)$;&lt;br /&gt;
  root  /sites/$domain;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since nginx 0.9.4, [[#.24hostname|$hostname]] can be used as a server_name argument:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name $hostname;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== server_name_in_redirect ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/server_name_in_redirect.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;server_name_in_redirect&amp;lt;/code&amp;gt; is on, then Nginx will use the first value&lt;br /&gt;
of the [[#server_name|server_name]] directive for redirects. If &amp;lt;code&amp;gt;server_name_in_redirect&amp;lt;/code&amp;gt; is off,&lt;br /&gt;
then nginx will use the requested &amp;lt;code&amp;gt;Host&amp;lt;/code&amp;gt; header.&lt;br /&gt;
&lt;br /&gt;
Note: for Location headers coming from an upstream proxy (via proxy_pass for example) this may not be the only directive you need. In fact, it seems to be ignored a lot of the time. If you are seeing the upstream's server name come through and not be rewritten, you will need to use [[NginxHttpProxyModule#proxy_redirect|proxy_redirect]] to rewrite the upstream's provided hostname to what you want. Something like &amp;lt;code&amp;gt;proxy_redirect http://some.upstream.url/ /&amp;lt;/code&amp;gt; - you will want to rewrite it to a / relative path.&lt;br /&gt;
&lt;br /&gt;
== server_names_hash_max_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/server_names_hash_max_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The maximum size of the server name hash tables. For more detail see the description of tuning the hash tables in [[Optimizations|Nginx Optimizations]].&lt;br /&gt;
&lt;br /&gt;
== server_names_hash_bucket_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/server_names_hash_bucket_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive assigns the size of basket in the hash-tables of the names of servers. This value by default depends on the size of the line of processor cache. For more detail see the description of tuning the hash tables in [[Optimizations|Nginx Optimizations]].&lt;br /&gt;
&lt;br /&gt;
== server_tokens ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/server_tokens.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whether to send the Nginx version number in error pages and &amp;lt;code&amp;gt;Server&amp;lt;/code&amp;gt; header.&lt;br /&gt;
&lt;br /&gt;
== tcp_nodelay ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/tcp_nodelay.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive allows or forbids the use of the socket option &amp;lt;code&amp;gt;TCP_NODELAY&amp;lt;/code&amp;gt;. Only included in &amp;lt;code&amp;gt;keep-alive&amp;lt;/code&amp;gt; connections.&lt;br /&gt;
&lt;br /&gt;
You can read more about the &amp;lt;code&amp;gt;TCP_NODELAY&amp;lt;/code&amp;gt; socket option [[ReadMoreAboutTcpNodelay|here]].&lt;br /&gt;
&lt;br /&gt;
== tcp_nopush ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/tcp_nopush.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive permits or forbids the use of the socket options &amp;lt;code&amp;gt;TCP_NOPUSH&amp;lt;/code&amp;gt; on FreeBSD or &amp;lt;code&amp;gt;TCP_CORK&amp;lt;/code&amp;gt; on Linux. This option is only available when using &amp;lt;code&amp;gt;sendfile&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Setting this option causes nginx to attempt to send it's HTTP response headers in one packet on Linux and FreeBSD 4.x&lt;br /&gt;
&lt;br /&gt;
You can read more about the &amp;lt;code&amp;gt;TCP_NOPUSH&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;TCP_CORK&amp;lt;/code&amp;gt; socket options [[ReadMoreAboutTcpNopush|here]].&lt;br /&gt;
&lt;br /&gt;
== try_files ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/try_files.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Checks for the existence of files in order, and returns the first file that is found. A trailing slash indicates a directory - &amp;lt;code&amp;gt;$uri /&amp;lt;/code&amp;gt;. In the event that no file is found, an internal redirect to the last parameter is invoked. The last parameter is the fallback URI and *must* exist, or else an internal error will be raised.  Unlike rewrite, $args are not automatically preserved if the fallback is not a named location.  If you need args preserved, you must do so explicitly:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
try_files $uri $uri/ /index.php?q=$uri&amp;amp;$args;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example use in proxying Mongrel:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
try_files /system/maintenance.html $uri $uri/index.html $uri.html @mongrel;&lt;br /&gt;
&lt;br /&gt;
location @mongrel {&lt;br /&gt;
  proxy_pass http://mongrel;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you can specify an HTTP '''status''' code as the last argument to &amp;lt;code&amp;gt;try_file&amp;lt;/code&amp;gt; since Nginx version 0.7.51. Here's an example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location / {&lt;br /&gt;
  try_files $uri $uri/ /error.php?c=404 =404;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
When all other attempts to serve the content corresponding to the request fail issue a &amp;lt;code&amp;gt;404 Not Found&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example of use with Drupal / FastCGI:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
# for Drupal 6 or 7:&lt;br /&gt;
try_files $uri $uri/ /index.php?q=$uri&amp;amp;$args;&lt;br /&gt;
&lt;br /&gt;
# a better version for Drupal 7 since it doesn't need q=$uri:&lt;br /&gt;
try_files $uri $uri/ /index.php?$args;&lt;br /&gt;
&lt;br /&gt;
location ~ \.php$ {&lt;br /&gt;
  fastcgi_pass 127.0.0.1:8888;&lt;br /&gt;
  fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name; # if not already defined in the fastcgi_params file&lt;br /&gt;
  # any other specific fastcgi_params&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example, the directive &amp;lt;code&amp;gt;try_files&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
try_files $uri $uri/ /index.php?q=$uri&amp;amp;$args;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Is basically the same as this:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location / {&lt;br /&gt;
  error_page     404 = @drupal;&lt;br /&gt;
  log_not_found  off;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
location @drupal {&lt;br /&gt;
  rewrite ^ /index.php?q=$uri last; # for drupal 6&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or this:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
# DO NOT DO THIS! This is a terrible use of if.&lt;br /&gt;
if (!-e $request_filename) {&lt;br /&gt;
   rewrite ^ /index.php?q=$uri last;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;try_files&amp;lt;/code&amp;gt; is basically a replacement for the typical mod_rewrite style file/directory existence check. It is supposed to be more efficient than using &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; - see [[IfIsEvil]]&lt;br /&gt;
&lt;br /&gt;
Examples of use with Wordpress and Joomla (typical &amp;quot;Front controller pattern&amp;quot; packages)&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
# wordpress (without WP Super Cache) - example 1&lt;br /&gt;
try_files $uri $uri/ /index.php?q=$uri&amp;amp;$args;&lt;br /&gt;
&lt;br /&gt;
# wordpress (without WP Super Cache) - example 2 &lt;br /&gt;
# It doesn't REALLY need the &amp;quot;q&amp;quot; parameter, but without an explicit $args php &lt;br /&gt;
# gets an empty QUERY_STRING, breaking generated responses that don't use a &lt;br /&gt;
# permalink, such as search results.&lt;br /&gt;
try_files $uri $uri/ /index.php?$args;&lt;br /&gt;
&lt;br /&gt;
# joomla&lt;br /&gt;
try_files $uri $uri/ /index.php?q=$uri&amp;amp;$args;&lt;br /&gt;
&lt;br /&gt;
location ~ \.php$ {&lt;br /&gt;
  fastcgi_pass 127.0.0.1:8888;&lt;br /&gt;
  fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name; # if not already defined in the fastcgi_params file&lt;br /&gt;
  # any other specific fastcgi_params&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WP Super Cache requires a bunch of static file checks. Those are not shown here.&lt;br /&gt;
&lt;br /&gt;
== types ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/types.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Specifies one or more mappings between MIME types and file extensions.  More than one extension can be assigned to a MIME type.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
types {&lt;br /&gt;
  text/html    html;&lt;br /&gt;
  image/gif    gif;&lt;br /&gt;
  image/jpeg   jpg;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A sufficiently complete table of mappings is included with nginx, and is located at &amp;lt;code&amp;gt;conf/mime.types&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you wanted responses to particular location to always indicate a single MIME type, you could define an empty ''types'' block and set the ''default_type'' directive.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /download/ {&lt;br /&gt;
  types         { }&lt;br /&gt;
  default_type  application/octet-stream;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== types_hash_bucket_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/types_hash_bucket_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== types_hash_max_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/types_hash_max_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== underscores_in_headers ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/underscores_in_headers.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allows or disallows underscores in headers.&lt;br /&gt;
&lt;br /&gt;
== variables_hash_bucket_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/variables_hash_bucket_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assigns the key bucket size for the variables hash table.&lt;br /&gt;
&lt;br /&gt;
== variables_hash_max_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/variables_hash_max_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The maximum size of the variables hash table. For more detail see the description of tuning the hash tables in [[Optimizations|Nginx Optimizations]].&lt;br /&gt;
&lt;br /&gt;
= Variables =&lt;br /&gt;
The core module supports built-in variables, whose names correspond with the names of variables in Apache.&lt;br /&gt;
&lt;br /&gt;
First of all, there are variables which represent header lines in the client request, for example, &amp;lt;code&amp;gt;$http_user_agent&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$http_cookie&amp;lt;/code&amp;gt;, and so forth. Note that because these correspond to what the client actually sends, they are not guaranteed to exist and their meaning is defined elsewhere (e.g. in relevant standards).&lt;br /&gt;
&lt;br /&gt;
Furthermore, there are other variables:&lt;br /&gt;
&lt;br /&gt;
== $arg_PARAMETER ==&lt;br /&gt;
This variable contains the value of the &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request variable ''PARAMETER'' if present in the query string&lt;br /&gt;
&lt;br /&gt;
== $args ==&lt;br /&gt;
This variable is the &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; parameters in request line, e.g. &amp;lt;code&amp;gt;foo=123&amp;amp;bar=blahblah&amp;lt;/code&amp;gt;; This variable could be changed.&lt;br /&gt;
&lt;br /&gt;
== $binary_remote_addr ==&lt;br /&gt;
The address of the client in binary form;&lt;br /&gt;
&lt;br /&gt;
== $body_bytes_sent ==&lt;br /&gt;
The amount of bytes sent as part of the body of the response. Is accurate even when connections are aborted or interrupted.&lt;br /&gt;
&lt;br /&gt;
== $content_length == &lt;br /&gt;
This variable is equal to line &amp;lt;code&amp;gt;Content-Length&amp;lt;/code&amp;gt; in the header of request;&lt;br /&gt;
&lt;br /&gt;
== $content_type ==&lt;br /&gt;
This variable is equal to line &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; in the header of request;&lt;br /&gt;
&lt;br /&gt;
== $cookie_COOKIE ==&lt;br /&gt;
The value of the cookie ''COOKIE'';&lt;br /&gt;
&lt;br /&gt;
== $document_root== &lt;br /&gt;
This variable is equal to the value of directive [[#root|root]] for the current request;&lt;br /&gt;
&lt;br /&gt;
== $document_uri ==&lt;br /&gt;
The same as [[#$uri|$uri]].&lt;br /&gt;
&lt;br /&gt;
== $host==&lt;br /&gt;
This variable is equal to line &amp;lt;code&amp;gt;Host&amp;lt;/code&amp;gt; in the header of request or name of the server processing the request if the &amp;lt;code&amp;gt;Host&amp;lt;/code&amp;gt; header is not available.&lt;br /&gt;
&lt;br /&gt;
This variable may have a different value from &amp;lt;code&amp;gt;$http_host&amp;lt;/code&amp;gt; in such cases: 1) when the &amp;lt;code&amp;gt;Host&amp;lt;/code&amp;gt; input header is absent or has an empty value, &amp;lt;code&amp;gt;$host&amp;lt;/code&amp;gt; equals to the value of &amp;lt;code&amp;gt;server_name&amp;lt;/code&amp;gt; directive; 2)when the value of &amp;lt;code&amp;gt;Host&amp;lt;/code&amp;gt; contains port number, &amp;lt;code&amp;gt;$host&amp;lt;/code&amp;gt; doesn't include that port number. &amp;lt;code&amp;gt;$host&amp;lt;/code&amp;gt;'s value is always lowercase since 0.8.17.&lt;br /&gt;
&lt;br /&gt;
== $hostname ==&lt;br /&gt;
Set to the machine's hostname as returned by [http://linux.die.net/man/2/gethostname gethostname]&lt;br /&gt;
&lt;br /&gt;
== $http_HEADER ==&lt;br /&gt;
The value of the HTTP request header ''HEADER'' when converted to lowercase and with 'dashes' converted to 'underscores', e.g. &amp;lt;code&amp;gt;$http_user_agent&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$http_referer&amp;lt;/code&amp;gt;...;&lt;br /&gt;
&lt;br /&gt;
== $sent_http_HEADER ==&lt;br /&gt;
The value of the HTTP response header ''HEADER'' when converted to lowercase and with 'dashes' converted to 'underscores', e.g. &amp;lt;code&amp;gt;$sent_http_cache_control&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$sent_http_content_type&amp;lt;/code&amp;gt;...;&lt;br /&gt;
&lt;br /&gt;
== $is_args ==&lt;br /&gt;
Evaluates to &amp;quot;?&amp;quot; if [[#$args|$args]] is set, &amp;quot;&amp;quot; otherwise.&lt;br /&gt;
&lt;br /&gt;
== $limit_rate ==&lt;br /&gt;
This variable allows limiting the connection rate.&lt;br /&gt;
&lt;br /&gt;
== $nginx_version ==&lt;br /&gt;
The version of Nginx that the server is currently running;&lt;br /&gt;
&lt;br /&gt;
== $query_string ==&lt;br /&gt;
The same as [[#$args|$args]] except that this variable is readonly.&lt;br /&gt;
&lt;br /&gt;
== $remote_addr ==&lt;br /&gt;
The address of the client.&lt;br /&gt;
&lt;br /&gt;
== $remote_port ==&lt;br /&gt;
The port of the client;&lt;br /&gt;
&lt;br /&gt;
== $remote_user ==&lt;br /&gt;
This variable is equal to the name of user, authenticated by the [[HttpAuthBasicModule|Auth Basic Module]];&lt;br /&gt;
&lt;br /&gt;
== $request_filename ==&lt;br /&gt;
This variable is equal to path to the file for the current request, formed from directives root or alias and URI request;&lt;br /&gt;
&lt;br /&gt;
== $request_body ==&lt;br /&gt;
This variable(0.7.58+) contains the body of the request. The significance of this variable appears in locations with directives [[HttpProxyModule#proxy_pass|proxy_pass]] or [[HttpFcgiModule#fastcgi_pass|fastcgi_pass]].&lt;br /&gt;
&lt;br /&gt;
== $request_body_file ==&lt;br /&gt;
Client request body temporary filename;&lt;br /&gt;
&lt;br /&gt;
== $request_completion ==&lt;br /&gt;
Set to &amp;quot;OK&amp;quot; if request was completed successfully. Empty if request was not completed or if request was not the last part of a series of range requests.&lt;br /&gt;
&lt;br /&gt;
== $request_method ==&lt;br /&gt;
This variable is equal to the method of request, usually &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This variable always evaluates to the method name of the ''main request'', not the current request, when the current request is a subrequest.&lt;br /&gt;
&lt;br /&gt;
== $request_uri ==&lt;br /&gt;
This variable is equal to the *original* request URI as received from the client including the args. It cannot be modified. Look at $uri for the post-rewrite/altered URI. &lt;br /&gt;
Does not include host name. Example: &amp;quot;/foo/bar.php?arg=baz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== $scheme ==&lt;br /&gt;
The HTTP scheme (i.e. http, https).  Evaluated only on demand, for example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
rewrite  ^  $scheme://example.com$uri  redirect;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== $server_addr ==&lt;br /&gt;
The server address. Generally nginx makes a system call to obtain this value. To improve efficiency and avoid this system call, specify an address with the [[#listen|listen]] directive and to use the &amp;lt;code&amp;gt;bind&amp;lt;/code&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
== $server_name ==&lt;br /&gt;
The name of the server.&lt;br /&gt;
&lt;br /&gt;
== $server_port ==&lt;br /&gt;
This variable is equal to the port of the server, to which the request arrived;&lt;br /&gt;
&lt;br /&gt;
== $server_protocol ==&lt;br /&gt;
This variable is the protocol of the request.  Common examples are: &amp;lt;code&amp;gt;HTTP/1.0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;HTTP/1.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== $uri ==&lt;br /&gt;
This variable is the current request URI, without any arguments (see $args for those).  This variable will reflect any modifications done so far by internal redirects or the [[HttpIndexModule#index|index]] module.  Note this may be different from $request_uri, as $request_uri is what was originally sent by the browser before any such modifications.  Does not include the protocol or host name.  Example: &amp;lt;code&amp;gt;/foo/bar.html&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_core_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpCoreModule</id>
		<title>HttpCoreModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpCoreModule"/>
				<updated>2012-05-02T23:35:37Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* post_action */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
Controls core features of Nginx's HTTP processing.&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== aio ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/aio.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive is usable as of Linux kernel 2.6.22. For Linux it is required to use directio, this automatically disables sendfile support.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /video {&lt;br /&gt;
    aio on; &lt;br /&gt;
    directio 512; &lt;br /&gt;
    output_buffers 1 128k;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In FreeBSD before 5.2.1 and Nginx 0.8.12 you must disable sendfile support.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /video {&lt;br /&gt;
    aio on; &lt;br /&gt;
    sendfile off;&lt;br /&gt;
    output_buffers 1 128k;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of FreeBSD 5.2.1 and Nginx 0.8.12 you can use it along with sendfile.&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /video {&lt;br /&gt;
    aio sendfile; &lt;br /&gt;
    sendfile on;&lt;br /&gt;
    tcp_nopush on;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== alias ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/alias.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive assigns a path to be used as the basis for serving requests for the indicated location. Note that it may look similar to the &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; directive at first sight, but the document root doesn't change, just the file system path used for the request. The location part of the request is '''dropped''' in the request Nginx issues. Let's see this in action. Consider the following example.&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location  /i/ {&lt;br /&gt;
  alias  /spool/w3/images/;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
A request for &amp;quot;/i/top.gif&amp;quot; will instruct Nginx to serve the file &amp;quot;/spool/w3/images/top.gif&amp;quot;. As you can see,  '''only''' the part of the URI '''after''' the location is appended. The location itself, in this case &amp;quot;/i/&amp;quot;, is dropped. With a &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; directive the '''full''' path is appended, i.e., in the above example it would have been, &amp;quot;/spool/w3/images/i/top.gif&amp;quot; &amp;amp;mdash; hence including '''also''' the location &amp;quot;/i/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Aliases can also be used in a location specified by a regex.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location ~ ^/download/(.*)$ {&lt;br /&gt;
  alias /home/website/files/$1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The request &amp;quot;/download/book.pdf&amp;quot; will return the file &amp;quot;/home/website/files/book.pdf&amp;quot;. Note again that only part of the request URI '''after''' the location is appended to the path defined by &amp;lt;code&amp;gt;alias&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
It is possible to use variables in the replacement path.&lt;br /&gt;
&lt;br /&gt;
== chunked_transfer_encoding ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/chunked_transfer_encoding.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive (0.7.66+) sets whether chunked encoding is enabled in responses (only valid for connections using HTTP 1.1 or later).&lt;br /&gt;
&lt;br /&gt;
== client_body_in_file_only ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_body_in_file_only.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive forces nginx to always store a client request body into a temporary disk file even if the body is actually of 0 size.&lt;br /&gt;
&lt;br /&gt;
Please note that the file will '''NOT''' be removed at request completion if the directive is enabled.&lt;br /&gt;
&lt;br /&gt;
This directive can be used for debugging and for the &amp;lt;code&amp;gt;$r-&amp;gt;request_body_file&amp;lt;/code&amp;gt; method in the [[EmbeddedPerlModule|Embedded Perl module]].&lt;br /&gt;
&lt;br /&gt;
== client_body_in_single_buffer ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_body_in_single_buffer.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive(0.7.58+) specifies whether to keep the whole body in a single client request buffer. The directive is recommended when using the variable [[#$request_body|$request_body]] to reduce the operations of copying.&lt;br /&gt;
&lt;br /&gt;
Note that when the request body cannot be hold in a single buffer (see [[#client_body_buffer_size|client_body_buffer_size]]), the body will still touch the disk.&lt;br /&gt;
&lt;br /&gt;
== client_body_buffer_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_body_buffer_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive specifies the client request body buffer size.&lt;br /&gt;
&lt;br /&gt;
If the request body size is more than the buffer size, then the entire (or partial) request body is written into a temporary file.&lt;br /&gt;
&lt;br /&gt;
The default size is equal to page size times 2.  Depending on the platform, the page size is either 8K or 16K.&lt;br /&gt;
&lt;br /&gt;
When the ''Content-Length'' request header specifies a smaller size value than the buffer size, then Nginx will use the smaller one. As a result, Nginx will '''not''' always allocate a buffer of this buffer size for every request.&lt;br /&gt;
&lt;br /&gt;
== client_body_temp_path ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_body_temp_path.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive assigns the directory for storing the temporary files in it with the body of the request.&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;code&amp;gt;dir-path&amp;lt;/code&amp;gt; a hierarchy of subdirectories up to three levels are possible.&lt;br /&gt;
&lt;br /&gt;
For example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
client_body_temp_path  /spool/nginx/client_temp 1 2;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
The directory structure will be like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/spool/nginx/client_temp/7/45/00000123457&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== client_body_timeout ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_body_timeout.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive sets the read timeout for the request body from client.&lt;br /&gt;
&lt;br /&gt;
The timeout is set only if a body is not get in one readstep. If after this time the client send nothing, nginx returns error &amp;quot;Request time out&amp;quot; (408).&lt;br /&gt;
&lt;br /&gt;
== client_header_buffer_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_header_buffer_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive sets the headerbuffer size for the request header from client.&lt;br /&gt;
&lt;br /&gt;
For the overwhelming majority of requests it is completely sufficient a buffer size of 1K.&lt;br /&gt;
&lt;br /&gt;
However if a big cookie is in the request-header or the request has come from a wap-client the header can not be placed in 1K, therefore, the request-header or a line of request-header is not located completely in this buffer nginx allocate a bigger buffer, the size of the bigger buffer can be set with the instruction large_client_header_buffers.&lt;br /&gt;
&lt;br /&gt;
== client_header_timeout ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_header_timeout.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Specifies how long to wait for the client to send a request header (e.g.: &amp;lt;code&amp;gt;GET / HTTP/1.1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
This timeout is reached only if a header is not received in one read ''(needs clarification)''. If the client has not sent anything within this timeout period, nginx returns the HTTP status code 408 (&amp;quot;Request timed out&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== client_max_body_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/client_max_body_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Specifies the maximum accepted body size of a client request, as indicated by the request header &amp;lt;code&amp;gt;Content-Length&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If the stated content length is greater than this size, then the client receives the HTTP error code 413 (&amp;quot;Request Entity Too Large&amp;quot;).  It should be noted that web browsers do not usually know how to properly display such an HTTP error.&lt;br /&gt;
&lt;br /&gt;
== connection_pool_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/connection_pool_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive is used to allocate memory per connection. The pool is used for small allocations. If a block is bigger than pool size or bigger than page size, then it is allocated outside the pool. If there is not enough memory for small allocation inside pool, then a new block of the same pool size is allocated. This directive has only a very small effect. (source http://markmail.org/message/b2kmrluscevimpba)&lt;br /&gt;
&lt;br /&gt;
== default_type ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/default_type.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assigns the default MIME-type to be used for files where the standard MIME map doesn't specify anything.&lt;br /&gt;
&lt;br /&gt;
See also [[#types|types]]&lt;br /&gt;
&lt;br /&gt;
== directio ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/directio.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive enables use of flags O_DIRECT (FreeBSD, Linux), F_NOCACHE (Mac OS X) or directio() function (Solaris) for reading files with size greater than specified. This directive disables use of [[HttpCoreModule#sendfile|sendfile]] for this request. This directive may be useful for big files:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
    directio  4m;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== directio_alignment ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/directio_alignment.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable_symlinks ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/disable_symlinks.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== error_page ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/error_page.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive specifies the URI that will be shown for the errors indicated.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
error_page   404          /404.html;&lt;br /&gt;
error_page   502 503 504  /50x.html;&lt;br /&gt;
error_page   403          http://example.com/forbidden.html;&lt;br /&gt;
error_page   404          = @fetch;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
Furthermore, it is possible to change the status code of the answer to another, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
error_page 404 =200 /empty.gif;&lt;br /&gt;
error_page 404 =403 /forbidden.gif;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
Additionally you can have your designated error handler determine the returned status code by using = without specifying a status code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
error_page   404 = /404.php;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
If there is no need to change URI during redirection it is possible to redirect processing of error pages into a named location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location / (&lt;br /&gt;
    error_page 404 @fallback;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
location @fallback (&lt;br /&gt;
    proxy_pass http://backend;&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== if_modified_since ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/if_modified_since.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Specifies how to compare time of file modification and time in request header &amp;quot;If-Modified-Since&amp;quot;:&lt;br /&gt;
* off — don't check &amp;quot;If-Modified-Since&amp;quot; request header (0.7.34);&lt;br /&gt;
* exact — exact match;&lt;br /&gt;
* before — file modification time should be less than time in &amp;quot;If-Modified-Since&amp;quot; request header.&lt;br /&gt;
&lt;br /&gt;
== ignore_invalid_headers ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/ignore_invalid_headers.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== internal ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/internal.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''internal''' indicates that the matching location can be used only for so called &amp;quot;internal&amp;quot; requests.&lt;br /&gt;
&lt;br /&gt;
For external requests it will return the error &amp;quot;Not found&amp;quot; (404).&lt;br /&gt;
&lt;br /&gt;
Internal requests are the following:&lt;br /&gt;
* requests redirected by the instruction '''error_page'''&lt;br /&gt;
* subrequests created by the command '''include virtual''' of the &amp;quot;ngx_http_ssi_module&amp;quot; module&lt;br /&gt;
* requests changed by the instruction '''rewrite''' of the &amp;quot;ngx_http_rewrite_module&amp;quot; module&lt;br /&gt;
&lt;br /&gt;
An example to prevent clients fetching error pages directly:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
error_page 404 /404.html;&lt;br /&gt;
location  /404.html {&lt;br /&gt;
  internal;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== keepalive_disable ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/keepalive_disable.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Disable keepalive for certain user agents (0.9.0+).  By default keepalive is disabled for MS Internet Explorer (older than 6.0 service pack 2) after &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; requests, and for Safari.  This is because both browsers have issues with handling &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; requests with keepalives.  If you are running a site that does not use &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; anywhere, you may optionally choose to enable keepalive in these browsers.&lt;br /&gt;
&lt;br /&gt;
== keepalive_timeout ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/keepalive_timeout.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first parameter assigns the timeout for keep-alive connections with the client. The server will close connections after this time.&lt;br /&gt;
&lt;br /&gt;
The optional second parameter assigns the &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; value in the header &amp;lt;code&amp;gt;Keep-Alive: timeout=time&amp;lt;/code&amp;gt; of the response. This header can convince some browsers to close the connection, so that the server does not have to. Without this parameter, nginx does not send a &amp;lt;code&amp;gt;Keep-Alive&amp;lt;/code&amp;gt; header (though this is not what makes a connection &amp;quot;keep-alive&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The parameters can differ from each other.&lt;br /&gt;
&lt;br /&gt;
Notes on how browsers handle the &amp;lt;code&amp;gt;Keep-Alive&amp;lt;/code&amp;gt; header:&lt;br /&gt;
&lt;br /&gt;
* MSIE and Opera ignore the &amp;quot;Keep-Alive: timeout=&amp;lt;N&amp;gt;&amp;quot; header.&lt;br /&gt;
* MSIE keeps the connection alive for about 60-65 seconds, then sends a TCP RST.&lt;br /&gt;
* Opera keeps the connection alive for a long time.&lt;br /&gt;
* Mozilla keeps the connection alive for N plus about 1-10 seconds.&lt;br /&gt;
* Konqueror keeps the connection alive for about N seconds.&lt;br /&gt;
&lt;br /&gt;
== keepalive_requests ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/keepalive_requests.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Number of requests which can be made over a keep-alive connection.&lt;br /&gt;
&lt;br /&gt;
== large_client_header_buffers ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/large_client_header_buffers.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive assigns the maximum number and size of buffers for large headers to read from client request.&lt;br /&gt;
&lt;br /&gt;
The request line can not be bigger than the size of one buffer, if the client send a bigger header nginx returns error &amp;quot;Request URI too large&amp;quot; (414).&lt;br /&gt;
&lt;br /&gt;
The longest header line of request also must be not more than the size of one buffer, otherwise the client get the error &amp;quot;Bad request&amp;quot; (400).&lt;br /&gt;
&lt;br /&gt;
Buffers are separated only as needed.&lt;br /&gt;
&lt;br /&gt;
By default the size of one buffer is 8192 bytes. In the old nginx, this is equal to the size of page, depending on platform this either 4K or 8K, if at the end of working request connection converts to state keep-alive, then these buffers are freed.&lt;br /&gt;
&lt;br /&gt;
== limit_except ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/limit_except.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Limits which HTTP methods are allowed for a given request path/location.&lt;br /&gt;
&lt;br /&gt;
For the limitation can be used the directives of modules ngx_http_access_module and ngx_http_auth_basic_module:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
limit_except  GET {&lt;br /&gt;
  allow  192.168.1.0/32;&lt;br /&gt;
  deny   all;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== limit_rate ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/limit_rate.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive assigns the speed of transmission of the answer to client. Speed is assigned in the bytes per second. Limitation works only for one connection, i.e., if client opens 2 connections, then total velocity will be 2 times higher then the limit set.&lt;br /&gt;
&lt;br /&gt;
If it is necessary to limit speed for the part of the clients at the ''server'' level, based on some kind of condition - then this directive does not apply. Instead you should specify the limit by assigning the value to the $limit_rate variable, as shown below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  if ($slow) {&lt;br /&gt;
    set $limit_rate  4k;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also control the rate of individual responses returned by a &amp;lt;code&amp;gt;proxy_pass&amp;lt;/code&amp;gt; response ([[HttpProxyModule]]) by setting the &amp;lt;code&amp;gt;X-Accel-Limit-Rate&amp;lt;/code&amp;gt; header ([[XSendfile]]). This can be done without a &amp;lt;code&amp;gt;X-Accel-Redirect&amp;lt;/code&amp;gt; header.&lt;br /&gt;
&lt;br /&gt;
== limit_rate_after ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/limit_rate_after.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive limits speed only after the first part was sent.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
limit_rate_after 1m;&lt;br /&gt;
limit_rate 100k;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== lingering_close ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/lingering_close.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets SO_LINGER on sockets.&lt;br /&gt;
&lt;br /&gt;
== lingering_time ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/lingering_time.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets SO_LINGER on sockets.&lt;br /&gt;
&lt;br /&gt;
== lingering_timeout ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/lingering_timeout.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets SO_LINGER on sockets.&lt;br /&gt;
&lt;br /&gt;
== listen ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/listen.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ''listen'' directive specifies the address and port accepted by the enclosing [[#server|server {...}]]  block. It is possible to specify only an address, only a port, or a server name as the address.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen 127.0.0.1:8000;&lt;br /&gt;
listen 127.0.0.1;&lt;br /&gt;
listen 8000;&lt;br /&gt;
listen *:8000;&lt;br /&gt;
listen localhost:8000;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
IPv6 address(0.7.36) are set in square brackets:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen [::]:8000; &lt;br /&gt;
listen [fe80::1]; &lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Linux by default any IPv6 TCP socket '''also accepts''' IPv4 traffic using the IPv4 to IPv6 mapped address format, i.e., ::ffff:&amp;lt;IPv4 adddress in dotted decimal notation&amp;gt;. E.g., &lt;br /&gt;
&amp;lt;code&amp;gt;::ffff:192.168.0.27&amp;lt;/code&amp;gt; maps the IPv4 address 192.168.0.27 to an IPv6 address.&lt;br /&gt;
&lt;br /&gt;
When you enable the address [::]:80, binding port 80 using IPv6, in the listen directive, in Linux, by default, the IPv4 port 80 is also enabled. Meaning that nginx listens for '''both''' IPv4 and IPv6 incoming traffic. Therefore if you erroneously specify also a IPv4 address you'll get an ''already bind address'' error when reloading nginx configuration.&lt;br /&gt;
&lt;br /&gt;
In Linux the separation of the IPv6 and IPv4 stacks is controlled through the runtime parameter:&lt;br /&gt;
&amp;lt;code&amp;gt;net.ipv6.bindv6only&amp;lt;/code&amp;gt; which has the value 0 by default. &lt;br /&gt;
&lt;br /&gt;
If you want to use '''separate''' sockets for IPv4 and IPv6 you should set this parameter to 1 using &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note that any nginx instance that was running '''before''' you made the change will '''continue to accept''' IPv4 traffic. Therefore you should edit your nginx configuration to reflect the new setup for IPv6 and IPv4 packet handling and do a '''restart'''. &lt;br /&gt;
&lt;br /&gt;
If on the other hand you launched another server instance (vhost) and you expect it to also handle IPv4 traffic by using only, for example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen [::]:80;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
the binding of the IPv4 address will fail. The correct way to to this is by using the &amp;quot;ipv6only=on&amp;quot; option in the IPv6 listen directive and also specifying a IPv4 listen directive in the respective server block.&lt;br /&gt;
&lt;br /&gt;
This re-editing of the configuration must be done '''after''' you changed your kernel runtime parameter. This is the most generic situation in that case (separation of IPv6 and IPv4 sockets):&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen [::]:80 ipv6only=on; # listen for IPv6 only traffic on IPv6 sockets&lt;br /&gt;
listen 80; # listen also for IPv4 traffic on &amp;quot;regular&amp;quot; IPv4 sockets&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In FreeBSD the default is '''separate''' IPv4 and IPv6 sockets. Therefore &amp;quot;listen [::]:80&amp;quot; only binds port 80 for listening to IPv6 traffic. It's always necessary to specify also IPv4 listen directives if you wish to also handle IPv4 traffic.&lt;br /&gt;
&lt;br /&gt;
It's possible to specify '''only''' IPv6 addresses in the listen directive. Using the &amp;quot;default_server ipv6only=on&amp;quot; option. Specific IPv6 addresses can be used with a IPv6 only default directive. Other server directives can also specifiy listen directives with IPv4 addresses. The uniqueness of the IPv6 handling concerns only the '''same''' [[#server|server {...}]] block.&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen [2a02:750:5::123]:80;&lt;br /&gt;
listen [::]:80 default_server ipv6only=on;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If only the address is given, the default port nginx binds to is 80.&lt;br /&gt;
&lt;br /&gt;
If the directive has the ''default_server'' parameter, then the enclosing [[#server|server {...}]] block will be the default server for the address:port pair.  This is useful for name-based virtual hosting where you wish to specify the default server block for hostnames that do not match any [[#server_name|server_name]]  directives.  If there are no directives with the ''default_server'' parameter, then the default server will be the first server block in which the &amp;lt;code&amp;gt;address:port&amp;lt;/code&amp;gt; pair appears. The ''default_server'' parameter appeared in version 0.8.21 thus deprecating the parameter ''default''.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;listen&amp;lt;/code&amp;gt; directive accepts several parameters, specific to the system calls &amp;lt;code&amp;gt;listen(2)&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;bind(2)&amp;lt;/code&amp;gt;. These parameters must follow the &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
backlog=num -- is assigned parameter backlog in call &amp;lt;code&amp;gt;listen(2)&amp;lt;/code&amp;gt;. By default backlog equals -1.&lt;br /&gt;
&lt;br /&gt;
rcvbuf=size -- assigned to the parameter &amp;lt;code&amp;gt;SO_RCVBUF&amp;lt;/code&amp;gt; for the listening socket.&lt;br /&gt;
&lt;br /&gt;
sndbuf=size -- assigned to the parameter &amp;lt;code&amp;gt;SO_SNDBUF&amp;lt;/code&amp;gt; for the listening socket.&lt;br /&gt;
&lt;br /&gt;
accept_filter=filter -- is assigned name accept-filter.&lt;br /&gt;
&lt;br /&gt;
: . It works only to FreeBSD, it is possible to use two filters -- &amp;lt;code&amp;gt;dataready&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;httpready&amp;lt;/code&amp;gt;. On the signal -HUP accept-filter it is possible to change only in the quite last versions FreeBSD: 6.0, 5.4-STABLE and 4.11-STABLE.&lt;br /&gt;
deferred -- indicates to use that postponed accept(2) on Linux with&lt;br /&gt;
&lt;br /&gt;
: . the aid of option &amp;lt;code&amp;gt;TCP_DEFER_ACCEPT&amp;lt;/code&amp;gt;.&lt;br /&gt;
bind -- indicates that it is necessary to make &amp;lt;code&amp;gt;bind(2)&amp;lt;/code&amp;gt; separately&lt;br /&gt;
&lt;br /&gt;
: . for this pair of address:port. The fact is that if are described several directives listen with the identical port, but by different  addresses and one of the directives listen listens to on all addresses for this port (*:port), then nginx will make bind(2) only to *:port. It is necessary to consider that in this case for determining the address, on which the connections arrive, is done the system call getsockname(). But if are used parameters backlog, rcvbuf, sndbuf, accept_filter or deferred, then it is always done separately for this pair of address:port bind(2).&lt;br /&gt;
ssl -- parameter (0.7.14) not related to listen(2) and bind(2) syscalls&lt;br /&gt;
&lt;br /&gt;
: . but instead specifies that connections accepted on this port should work in SSL mode. This allows to specify compact configurations for servers working with both HTTP and HTTPS. For example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen  80;&lt;br /&gt;
listen  443 default_server ssl;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of the use of the parameters:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen  127.0.0.1 default_server accept_filter=dataready backlog=1024;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since version 0.8.21 nginx is able to listen on unix sockets:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen unix:/tmp/nginx1.sock;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== location ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/location.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive allows different configurations depending on the URI. It can be configured using both literal strings and regular expressions. To use regular expressions, you must use a prefix:&lt;br /&gt;
#  &amp;quot;~&amp;quot; for case sensitive matching&lt;br /&gt;
#  &amp;quot;~*&amp;quot; for case insensitive matching &lt;br /&gt;
# there is no syntax for NOT matching a regular expression. Instead, match the target regular expression and assign an empty block, then use ''location /'' to match anything else.&lt;br /&gt;
&lt;br /&gt;
The order in which ''location'' directives are checked is as follows:&lt;br /&gt;
&lt;br /&gt;
#  Directives with the &amp;quot;=&amp;quot; prefix that match the query exactly (literal string). If found, searching stops.&lt;br /&gt;
#  All remaining directives with conventional strings. If this match used the &amp;quot;^~&amp;quot; prefix, searching stops.&lt;br /&gt;
#  Regular expressions, in the order they are defined in the configuration file.&lt;br /&gt;
#  If #3 yielded a match, that result is used. Otherwise, the match from #2 is used.&lt;br /&gt;
&lt;br /&gt;
Details below.&lt;br /&gt;
&lt;br /&gt;
To determine which ''location'' directive matches a particular query, the literal strings are checked first. Literal strings match the beginning portion of the query - the most specific match will be used. Afterwards, regular expressions are checked in the order defined in the configuration file. The first regular expression to match the query will stop the search. If no regular expression matches are found, the result from the literal string search is used.&lt;br /&gt;
&lt;br /&gt;
For case-insensitive operating systems, like Mac OS X or Windows with Cygwin, literal string matching is done in a case insensitive way (0.7.7).  However, comparison is limited to single-byte locale's only.&lt;br /&gt;
&lt;br /&gt;
Regular expression may contain captures (0.7.40), which can then be used in other directives.&lt;br /&gt;
&lt;br /&gt;
It is possible to disable regular expression checks after literal string matching by using &amp;quot;^~&amp;quot; prefix.  If the most specific match literal location has this prefix: regular expressions aren't checked.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;=&amp;quot; prefix forces an '''exact''' (literal) match between the request URI and the ''location'' parameter. When matched, the search stops immediately.  A useful application is that if the request &amp;quot;/&amp;quot; occurs frequently, it's better to use &amp;quot;location = /&amp;quot;, as that will speed up the processing of this request a bit, since the search will stop after the first comparison.&lt;br /&gt;
&lt;br /&gt;
On exact match with literal location without &amp;quot;=&amp;quot; or &amp;quot;^~&amp;quot; prefixes search is also immediately terminated.&lt;br /&gt;
&lt;br /&gt;
It is important to know that nginx does the comparison against decoded URIs. For example, if you wish to match &amp;quot;/images/%20/test&amp;quot;, then you must use &amp;quot;/images/ /test&amp;quot; to determine the location.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location  = / {&lt;br /&gt;
  # matches the query / only.&lt;br /&gt;
  [ configuration A ] &lt;br /&gt;
}&lt;br /&gt;
location  / {&lt;br /&gt;
  # matches any query, since all queries begin with /, but regular&lt;br /&gt;
  # expressions and any longer conventional blocks will be&lt;br /&gt;
  # matched first.&lt;br /&gt;
  [ configuration B ] &lt;br /&gt;
}&lt;br /&gt;
location ^~ /images/ {&lt;br /&gt;
  # matches any query beginning with /images/ and halts searching,&lt;br /&gt;
  # so regular expressions will not be checked.&lt;br /&gt;
  [ configuration C ] &lt;br /&gt;
}&lt;br /&gt;
location ~* \.(gif|jpg|jpeg)$ {&lt;br /&gt;
  # matches any request ending in gif, jpg, or jpeg. However, all&lt;br /&gt;
  # requests to the /images/ directory will be handled by&lt;br /&gt;
  # Configuration C.   &lt;br /&gt;
  [ configuration D ] &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example requests:&lt;br /&gt;
&lt;br /&gt;
*  / -&amp;gt; configuration A&lt;br /&gt;
* /documents/document.html -&amp;gt; configuration B&lt;br /&gt;
* /images/1.gif -&amp;gt; configuration C&lt;br /&gt;
* /documents/1.jpg -&amp;gt; configuration D&lt;br /&gt;
&lt;br /&gt;
Note that you could define these 4 configurations in any order and the results would remain the same.&lt;br /&gt;
&lt;br /&gt;
The prefix &amp;quot;@&amp;quot; specifies a named location. Such locations are not used during normal processing of requests, they are intended only to process internally redirected requests (see &lt;br /&gt;
[[HttpCoreModule#error_page|error_page]], [[HttpCoreModule#try_files|try_files]]).&lt;br /&gt;
&lt;br /&gt;
== log_not_found ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/log_not_found.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The directive enables or disables messages in [[CoreModule#error_log|error_log]] about files not found on disk.&lt;br /&gt;
&lt;br /&gt;
== log_subrequest ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/log_subrequest.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive enables or disables messages in [[HttpLogModule#access_log|access_log]] about sub-requests such as [[HttpRewriteModule#Synopsis|rewrite rules]] and/or [[HttpSsiModule#Synopsis|SSI requests]].&lt;br /&gt;
&lt;br /&gt;
== max_ranges ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/max_ranges.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== merge_slashes ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/merge_slashes.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enables merging adjacent slashes when parsing the request line. For example, a request for http://www.example.com/foo//bar/ will produce the following values for $uri:&lt;br /&gt;
&lt;br /&gt;
* on: /foo/bar/&lt;br /&gt;
* off: /foo//bar/&lt;br /&gt;
&lt;br /&gt;
Be aware that static location matching is performed as a string compare, so if merge_slashes is turned off, a request for /foo//bar/ will *not* match &amp;lt;code&amp;gt;location /foo/bar/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== msie_padding ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/msie_padding.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive enables or disables the msie_padding feature for MSIE browsers, and Chrome (as of nginx 0.8.25+). When this is enabled, nginx will pad the size of the response body to a minimum of 512 bytes for responses with a status code above or equal to 400.&lt;br /&gt;
&lt;br /&gt;
The padding prevents the activation of &amp;quot;friendly&amp;quot; HTTP error pages in MSIE and Chrome, so as to not hide/mask the more-informative error pages from the server.&lt;br /&gt;
&lt;br /&gt;
== msie_refresh ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/msie_refresh.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive allows or forbids issuing a &amp;lt;code&amp;gt;refresh&amp;lt;/code&amp;gt; instead of doing a &amp;lt;code&amp;gt;redirect&amp;lt;/code&amp;gt; for MSIE.&lt;br /&gt;
&lt;br /&gt;
== open_file_cache ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/open_file_cache.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive sets the cache activity on. These information can be stored:&lt;br /&gt;
 &lt;br /&gt;
* Open file descriptors, information with their size and modification time;&lt;br /&gt;
* Information about the existence of directories;&lt;br /&gt;
* Error information when searches for a file - no file, do not have rights to read, etc. See also [[#open_file_cache_errors|open_file_cache_errors]]&lt;br /&gt;
&lt;br /&gt;
Options directive:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;max&amp;lt;/code&amp;gt; - specifies the maximum number of entries in the cache. When the cache overflows, the least recently used(LRU) items will be removed;&lt;br /&gt;
* &amp;lt;code&amp;gt;inactive&amp;lt;/code&amp;gt; - specifies the time when the cached item is removed, if it has not been downloaded during that time, the default is 60 seconds;&lt;br /&gt;
* &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt; - prohibits the cache activity.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
 open_file_cache max=1000 inactive=20s; &lt;br /&gt;
 open_file_cache_valid    30s; &lt;br /&gt;
 open_file_cache_min_uses 2;&lt;br /&gt;
 open_file_cache_errors   on; &lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== open_file_cache_errors ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/open_file_cache_errors.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive specifies whether or not to cache errors when searching for a file.&lt;br /&gt;
&lt;br /&gt;
== open_file_cache_min_uses ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/open_file_cache_min_uses.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive defines the minimum use number of a file within the time specified in the directive parameter inactive in [[#open_file_cache|open_file_cache]]. ?If use more than the number, the file descriptor will remain open in the cache.&lt;br /&gt;
&lt;br /&gt;
== open_file_cache_valid ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/open_file_cache_valid.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive specifies the time when need to check the validity of the information about the item in [[#open_file_cache|open_file_cache]].&lt;br /&gt;
&lt;br /&gt;
== optimize_server_names ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/optimize_server_names.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive activates or deactivates optimization of host name checks for name-based virtual servers.&lt;br /&gt;
&lt;br /&gt;
In particular, the check influences the name of the host used in redirects. If optimization is on, and all name-based servers listening on one address:port pair have identical configuration, then names are not checked during request execution and redirects use first server name.&lt;br /&gt;
&lt;br /&gt;
If redirect must use host name passed by the client, then the optimization must be turned off.&lt;br /&gt;
&lt;br /&gt;
Note: this directive is deprecated in nginx 0.7.x, use [[#server_name_in_redirect|server_name_in_redirect]] instead.&lt;br /&gt;
&lt;br /&gt;
== port_in_redirect ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/port_in_redirect.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive allows or prevents port indication in redirects handled by nginx.&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;port_in_redirect&amp;lt;/code&amp;gt; is off, then Nginx will '''not''' add the port in the url when the request is redirected.&lt;br /&gt;
&lt;br /&gt;
== post_action ==&lt;br /&gt;
'''syntax:''' ''post_action [ uri|off ] ''&lt;br /&gt;
&lt;br /&gt;
'''default:''' ''post_action off''&lt;br /&gt;
&lt;br /&gt;
'''context:''' ''http, server, location, if-in-location''&lt;br /&gt;
&lt;br /&gt;
Defines a URI to sub-request upon completion of current request.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /protected_files { &lt;br /&gt;
	internal;&lt;br /&gt;
&lt;br /&gt;
	proxy_pass http://127.0.0.2;&lt;br /&gt;
	post_action /protected_done;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Send the post_action request to a FastCGI backend for logging.&lt;br /&gt;
location /protected_done {&lt;br /&gt;
	internal;&lt;br /&gt;
	fastcgi_pass 127.0.0.1:9000;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: this directive &amp;quot;has subtleties&amp;quot; according to Maxim Dounin, so use at your own risk.&lt;br /&gt;
&lt;br /&gt;
== postpone_output ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/postpone_output.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== read_ahead ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/read_ahead.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== recursive_error_pages ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/recursive_error_pages.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;recursive_error_pages&amp;lt;/code&amp;gt; enables or disables following a chain of &amp;lt;code&amp;gt;error_page&amp;lt;/code&amp;gt; directives.&lt;br /&gt;
&lt;br /&gt;
== request_pool_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/request_pool_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive is used to allocate memory per request. The pool is used for small allocations. If a block is bigger than pool size or bigger than page size, then it is allocated outside the pool. If there is not enough memory for small allocation inside pool, then a new block of the same pool size is allocated. This directive has only a very small effect. (source http://markmail.org/message/b2kmrluscevimpba)&lt;br /&gt;
&lt;br /&gt;
== reset_timedout_connection ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/reset_timedout_connection.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive enables or disables resetting the connection on&lt;br /&gt;
timeout. When resetting the connection, before the socket is closed,&lt;br /&gt;
the socket SO_LINGER option is set with a 0 timeout, which&lt;br /&gt;
forces the RST packet to be sent to the client upon closing the socket, thus freeing&lt;br /&gt;
all memory associated with it. This prevents the socket in the FIN_WAIT1 state, along with the buffers&lt;br /&gt;
associated with it from lying around.&lt;br /&gt;
&lt;br /&gt;
Note that sockets with keepalive connections, after the defined timeout, are closed in the usual way.&lt;br /&gt;
&lt;br /&gt;
== resolver ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/resolver.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive defines DNS server address, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
resolver 127.0.0.1;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== resolver_timeout ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/resolver_timeout.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive defines timeout for name resolution, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
resolver_timeout 5s;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== root ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/root.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''root''' specifies the document root for the requests. For example, with this configuration&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location  /i/ {&lt;br /&gt;
  root  /spool/w3;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
A request for &amp;quot;/i/top.gif&amp;quot; will return the file &amp;quot;/spool/w3/i/top.gif&amp;quot;. You can use variables in the argument.&lt;br /&gt;
&lt;br /&gt;
'''note:''' Keep in mind that the root will still append the directory to the request so that a request for &amp;quot;/i/top.gif&amp;quot; will not look in &amp;quot;/spool/w3/top.gif&amp;quot; like might happen in an Apache-like alias configuration where the location match itself is dropped. Use the &amp;lt;code&amp;gt;alias&amp;lt;/code&amp;gt; directive to achieve the Apache-like functionality.&lt;br /&gt;
&lt;br /&gt;
== satisfy ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/satisfy.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This determines the adopted access policy when directives from multiple access phase handlers, such as the [[HttpAccessModule|Access]] and [[HttpAuthBasicModule|Auth Basic]] modules, are defined in a context:&lt;br /&gt;
* all - All access phase handlers must grant access to the context&lt;br /&gt;
* any - Any access phase handler may grant access to the context&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location / {&lt;br /&gt;
  satisfy any;&lt;br /&gt;
  allow 192.168.1.0/32;&lt;br /&gt;
  deny all;&lt;br /&gt;
  auth_basic &amp;quot;closed site&amp;quot;;&lt;br /&gt;
  auth_basic_user_file conf/htpasswd;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== satisfy_any ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/satisfy_any.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''deprecated:''' 0.6.25 -- Use the [[#satisfy|satisfy]] directive instead&lt;br /&gt;
&lt;br /&gt;
== send_lowat ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/send_lowat.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== send_timeout ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/send_timeout.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Specifies the response timeout to the client. This timeout does not apply to the ''entire'' transfer but, rather, only between two subsequent client-read operations.  Thus, if the client has not read any data for this amount of time, then nginx shuts down the connection.&lt;br /&gt;
&lt;br /&gt;
== sendfile ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/sendfile.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive activate or deactivate the usage of &amp;lt;code&amp;gt;sendfile()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
sendfile() copies data between one file descriptor and another.  Because this copying is done within the kernel, sendfile() is more efficient than the combination of read(2) and write(2), which would require transferring data to and from user space. &lt;br /&gt;
&lt;br /&gt;
Read more at: https://www.kernel.org/doc/man-pages/online/pages/man2/sendfile.2.html&lt;br /&gt;
&lt;br /&gt;
How does sendfile helps : http://www.techrepublic.com/article/use-sendfile-to-optimize-data-transfer/1044112&lt;br /&gt;
&lt;br /&gt;
== sendfile_max_chunk ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/sendfile_max_chunk.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== server ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/server.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive assigns configuration for the virtual server.&lt;br /&gt;
&lt;br /&gt;
There is no separation of IP and name-based (the &amp;lt;code&amp;gt;Host&amp;lt;/code&amp;gt; header of the request) servers.&lt;br /&gt;
&lt;br /&gt;
Instead, the directive &amp;lt;code&amp;gt;listen&amp;lt;/code&amp;gt; is used to describe all addresses and ports on which incoming connections can occur, and in directive &amp;lt;code&amp;gt;server_name&amp;lt;/code&amp;gt; indicate all names of the server.&lt;br /&gt;
&lt;br /&gt;
== server_name ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/server_name.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive performs two actions:&lt;br /&gt;
&lt;br /&gt;
* Compares the &amp;lt;code&amp;gt;Host&amp;lt;/code&amp;gt; header of the incoming HTTP request against the [[#server|server { ... }]] blocks in the Nginx configuration files and selects the first one that matches. This is how '''virtual servers''' are defined. Server names are processed in the following order:&lt;br /&gt;
&lt;br /&gt;
# full, static names&lt;br /&gt;
# names with a wildcard at the start of the name — *.example.com&lt;br /&gt;
# names with a wildcard at the end of the name — www.example.*&lt;br /&gt;
# names with regular expressions&lt;br /&gt;
: If there is no match, a [[#server|server { ... }]]  block in the configuration file will be used based on the following order:&lt;br /&gt;
# the server block with a matching &amp;lt;code&amp;gt;listen&amp;lt;/code&amp;gt; directive marked as &amp;lt;code&amp;gt;[default|default_server]&amp;lt;/code&amp;gt;&lt;br /&gt;
# the first server block with a matching &amp;lt;code&amp;gt;listen&amp;lt;/code&amp;gt; directive (or implicit &amp;lt;code&amp;gt;listen 80;&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* Sets the server name that will be used in HTTP redirects if [[#server_name_in_redirect|server_name_in_redirect]]  is set.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name   example.com  www.example.com;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first name becomes the basic name of server. By default the name of the machine (hostname) is used.  &lt;br /&gt;
&lt;br /&gt;
It is possible to use &amp;quot;*&amp;quot; for replacing the first or the last part of the name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name   example.com  *.example.com  www.example.*;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first two of the above names (example.com and *.example.com) can be combined into one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name  .example.com;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is also possible to use regular expressions in server names, prepending the name with a tilde &amp;quot;~&amp;quot; like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name   www.example.com   ~^www\d+\.example\.com$;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since nginx 0.7.12, an empty server name is supported to catch the requests without &amp;quot;Host&amp;quot; header, please note that most browsers will always send a Host header, if accessed by IP the Host header will contain the IP. To specify a catch-all block please see the default_server flag of the listen directive.&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name &amp;quot;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since nginx 0.8.25 named captures can be used in server_name:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name   ~^(www\.)?(?&amp;lt;domain&amp;gt;.+)$;&lt;br /&gt;
  root  /sites/$domain;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some older versions of PCRE may have issues with this syntax. If any problems arise try this following syntax:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name   ~^(www\.)?(?P&amp;lt;domain&amp;gt;.+)$;&lt;br /&gt;
  root  /sites/$domain;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since nginx 0.9.4, [[#.24hostname|$hostname]] can be used as a server_name argument:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  server_name $hostname;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== server_name_in_redirect ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/server_name_in_redirect.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;server_name_in_redirect&amp;lt;/code&amp;gt; is on, then Nginx will use the first value&lt;br /&gt;
of the [[#server_name|server_name]] directive for redirects. If &amp;lt;code&amp;gt;server_name_in_redirect&amp;lt;/code&amp;gt; is off,&lt;br /&gt;
then nginx will use the requested &amp;lt;code&amp;gt;Host&amp;lt;/code&amp;gt; header.&lt;br /&gt;
&lt;br /&gt;
Note: for Location headers coming from an upstream proxy (via proxy_pass for example) this may not be the only directive you need. In fact, it seems to be ignored a lot of the time. If you are seeing the upstream's server name come through and not be rewritten, you will need to use [[NginxHttpProxyModule#proxy_redirect|proxy_redirect]] to rewrite the upstream's provided hostname to what you want. Something like &amp;lt;code&amp;gt;proxy_redirect http://some.upstream.url/ /&amp;lt;/code&amp;gt; - you will want to rewrite it to a / relative path.&lt;br /&gt;
&lt;br /&gt;
== server_names_hash_max_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/server_names_hash_max_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The maximum size of the server name hash tables. For more detail see the description of tuning the hash tables in [[Optimizations|Nginx Optimizations]].&lt;br /&gt;
&lt;br /&gt;
== server_names_hash_bucket_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/server_names_hash_bucket_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive assigns the size of basket in the hash-tables of the names of servers. This value by default depends on the size of the line of processor cache. For more detail see the description of tuning the hash tables in [[Optimizations|Nginx Optimizations]].&lt;br /&gt;
&lt;br /&gt;
== server_tokens ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/server_tokens.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whether to send the Nginx version number in error pages and &amp;lt;code&amp;gt;Server&amp;lt;/code&amp;gt; header.&lt;br /&gt;
&lt;br /&gt;
== tcp_nodelay ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/tcp_nodelay.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive allows or forbids the use of the socket option &amp;lt;code&amp;gt;TCP_NODELAY&amp;lt;/code&amp;gt;. Only included in &amp;lt;code&amp;gt;keep-alive&amp;lt;/code&amp;gt; connections.&lt;br /&gt;
&lt;br /&gt;
You can read more about the &amp;lt;code&amp;gt;TCP_NODELAY&amp;lt;/code&amp;gt; socket option [[ReadMoreAboutTcpNodelay|here]].&lt;br /&gt;
&lt;br /&gt;
== tcp_nopush ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/tcp_nopush.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive permits or forbids the use of the socket options &amp;lt;code&amp;gt;TCP_NOPUSH&amp;lt;/code&amp;gt; on FreeBSD or &amp;lt;code&amp;gt;TCP_CORK&amp;lt;/code&amp;gt; on Linux. This option is only available when using &amp;lt;code&amp;gt;sendfile&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Setting this option causes nginx to attempt to send it's HTTP response headers in one packet on Linux and FreeBSD 4.x&lt;br /&gt;
&lt;br /&gt;
You can read more about the &amp;lt;code&amp;gt;TCP_NOPUSH&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;TCP_CORK&amp;lt;/code&amp;gt; socket options [[ReadMoreAboutTcpNopush|here]].&lt;br /&gt;
&lt;br /&gt;
== try_files ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/try_files.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Checks for the existence of files in order, and returns the first file that is found. A trailing slash indicates a directory - &amp;lt;code&amp;gt;$uri /&amp;lt;/code&amp;gt;. In the event that no file is found, an internal redirect to the last parameter is invoked. The last parameter is the fallback URI and *must* exist, or else an internal error will be raised.  Unlike rewrite, $args are not automatically preserved if the fallback is not a named location.  If you need args preserved, you must do so explicitly:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
try_files $uri $uri/ /index.php?q=$uri&amp;amp;$args;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example use in proxying Mongrel:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
try_files /system/maintenance.html $uri $uri/index.html $uri.html @mongrel;&lt;br /&gt;
&lt;br /&gt;
location @mongrel {&lt;br /&gt;
  proxy_pass http://mongrel;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you can specify an HTTP '''status''' code as the last argument to &amp;lt;code&amp;gt;try_file&amp;lt;/code&amp;gt; since Nginx version 0.7.51. Here's an example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location / {&lt;br /&gt;
  try_files $uri $uri/ /error.php?c=404 =404;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
When all other attempts to serve the content corresponding to the request fail issue a &amp;lt;code&amp;gt;404 Not Found&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example of use with Drupal / FastCGI:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
# for Drupal 6 or 7:&lt;br /&gt;
try_files $uri $uri/ /index.php?q=$uri&amp;amp;$args;&lt;br /&gt;
&lt;br /&gt;
# a better version for Drupal 7 since it doesn't need q=$uri:&lt;br /&gt;
try_files $uri $uri/ /index.php?$args;&lt;br /&gt;
&lt;br /&gt;
location ~ \.php$ {&lt;br /&gt;
  fastcgi_pass 127.0.0.1:8888;&lt;br /&gt;
  fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name; # if not already defined in the fastcgi_params file&lt;br /&gt;
  # any other specific fastcgi_params&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example, the directive &amp;lt;code&amp;gt;try_files&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
try_files $uri $uri/ /index.php?q=$uri&amp;amp;$args;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Is basically the same as this:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location / {&lt;br /&gt;
  error_page     404 = @drupal;&lt;br /&gt;
  log_not_found  off;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
location @drupal {&lt;br /&gt;
  rewrite ^ /index.php?q=$uri last; # for drupal 6&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or this:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
# DO NOT DO THIS! This is a terrible use of if.&lt;br /&gt;
if (!-e $request_filename) {&lt;br /&gt;
   rewrite ^ /index.php?q=$uri last;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;try_files&amp;lt;/code&amp;gt; is basically a replacement for the typical mod_rewrite style file/directory existence check. It is supposed to be more efficient than using &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; - see [[IfIsEvil]]&lt;br /&gt;
&lt;br /&gt;
Examples of use with Wordpress and Joomla (typical &amp;quot;Front controller pattern&amp;quot; packages)&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
# wordpress (without WP Super Cache) - example 1&lt;br /&gt;
try_files $uri $uri/ /index.php?q=$uri&amp;amp;$args;&lt;br /&gt;
&lt;br /&gt;
# wordpress (without WP Super Cache) - example 2 &lt;br /&gt;
# It doesn't REALLY need the &amp;quot;q&amp;quot; parameter, but without an explicit $args php &lt;br /&gt;
# gets an empty QUERY_STRING, breaking generated responses that don't use a &lt;br /&gt;
# permalink, such as search results.&lt;br /&gt;
try_files $uri $uri/ /index.php?$args;&lt;br /&gt;
&lt;br /&gt;
# joomla&lt;br /&gt;
try_files $uri $uri/ /index.php?q=$uri&amp;amp;$args;&lt;br /&gt;
&lt;br /&gt;
location ~ \.php$ {&lt;br /&gt;
  fastcgi_pass 127.0.0.1:8888;&lt;br /&gt;
  fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name; # if not already defined in the fastcgi_params file&lt;br /&gt;
  # any other specific fastcgi_params&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WP Super Cache requires a bunch of static file checks. Those are not shown here.&lt;br /&gt;
&lt;br /&gt;
== types ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/types.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Specifies one or more mappings between MIME types and file extensions.  More than one extension can be assigned to a MIME type.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
types {&lt;br /&gt;
  text/html    html;&lt;br /&gt;
  image/gif    gif;&lt;br /&gt;
  image/jpeg   jpg;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A sufficiently complete table of mappings is included with nginx, and is located at &amp;lt;code&amp;gt;conf/mime.types&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you wanted responses to particular location to always indicate a single MIME type, you could define an empty ''types'' block and set the ''default_type'' directive.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /download/ {&lt;br /&gt;
  types         { }&lt;br /&gt;
  default_type  application/octet-stream;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== types_hash_bucket_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/types_hash_bucket_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== types_hash_max_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/types_hash_max_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== underscores_in_headers ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/underscores_in_headers.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allows or disallows underscores in headers.&lt;br /&gt;
&lt;br /&gt;
== variables_hash_bucket_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/variables_hash_bucket_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assigns the key bucket size for the variables hash table.&lt;br /&gt;
&lt;br /&gt;
== variables_hash_max_size ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_core_module/variables_hash_max_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The maximum size of the variables hash table. For more detail see the description of tuning the hash tables in [[Optimizations|Nginx Optimizations]].&lt;br /&gt;
&lt;br /&gt;
= Variables =&lt;br /&gt;
The core module supports built-in variables, whose names correspond with the names of variables in Apache.&lt;br /&gt;
&lt;br /&gt;
First of all, there are variables which represent header lines in the client request, for example, &amp;lt;code&amp;gt;$http_user_agent&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$http_cookie&amp;lt;/code&amp;gt;, and so forth. Note that because these correspond to what the client actually sends, they are not guaranteed to exist and their meaning is defined elsewhere (e.g. in relevant standards).&lt;br /&gt;
&lt;br /&gt;
Furthermore, there are other variables:&lt;br /&gt;
&lt;br /&gt;
== $arg_PARAMETER ==&lt;br /&gt;
This variable contains the value of the &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request variable ''PARAMETER'' if present in the query string&lt;br /&gt;
&lt;br /&gt;
== $args ==&lt;br /&gt;
This variable is the &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; parameters in request line, e.g. &amp;lt;code&amp;gt;foo=123&amp;amp;bar=blahblah&amp;lt;/code&amp;gt;; This variable could be changed.&lt;br /&gt;
&lt;br /&gt;
== $binary_remote_addr ==&lt;br /&gt;
The address of the client in binary form;&lt;br /&gt;
&lt;br /&gt;
== $body_bytes_sent ==&lt;br /&gt;
The amount of bytes sent as part of the body of the response. Is accurate even when connections are aborted or interrupted.&lt;br /&gt;
&lt;br /&gt;
== $content_length == &lt;br /&gt;
This variable is equal to line &amp;lt;code&amp;gt;Content-Length&amp;lt;/code&amp;gt; in the header of request;&lt;br /&gt;
&lt;br /&gt;
== $content_type ==&lt;br /&gt;
This variable is equal to line &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; in the header of request;&lt;br /&gt;
&lt;br /&gt;
== $cookie_COOKIE ==&lt;br /&gt;
The value of the cookie ''COOKIE'';&lt;br /&gt;
&lt;br /&gt;
== $document_root== &lt;br /&gt;
This variable is equal to the value of directive [[#root|root]] for the current request;&lt;br /&gt;
&lt;br /&gt;
== $document_uri ==&lt;br /&gt;
The same as [[#$uri|$uri]].&lt;br /&gt;
&lt;br /&gt;
== $host==&lt;br /&gt;
This variable is equal to line &amp;lt;code&amp;gt;Host&amp;lt;/code&amp;gt; in the header of request or name of the server processing the request if the &amp;lt;code&amp;gt;Host&amp;lt;/code&amp;gt; header is not available.&lt;br /&gt;
&lt;br /&gt;
This variable may have a different value from &amp;lt;code&amp;gt;$http_host&amp;lt;/code&amp;gt; in such cases: 1) when the &amp;lt;code&amp;gt;Host&amp;lt;/code&amp;gt; input header is absent or has an empty value, &amp;lt;code&amp;gt;$host&amp;lt;/code&amp;gt; equals to the value of &amp;lt;code&amp;gt;server_name&amp;lt;/code&amp;gt; directive; 2)when the value of &amp;lt;code&amp;gt;Host&amp;lt;/code&amp;gt; contains port number, &amp;lt;code&amp;gt;$host&amp;lt;/code&amp;gt; doesn't include that port number. &amp;lt;code&amp;gt;$host&amp;lt;/code&amp;gt;'s value is always lowercase since 0.8.17.&lt;br /&gt;
&lt;br /&gt;
== $hostname ==&lt;br /&gt;
Set to the machine's hostname as returned by [http://linux.die.net/man/2/gethostname gethostname]&lt;br /&gt;
&lt;br /&gt;
== $http_HEADER ==&lt;br /&gt;
The value of the HTTP request header ''HEADER'' when converted to lowercase and with 'dashes' converted to 'underscores', e.g. &amp;lt;code&amp;gt;$http_user_agent&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$http_referer&amp;lt;/code&amp;gt;...;&lt;br /&gt;
&lt;br /&gt;
== $sent_http_HEADER ==&lt;br /&gt;
The value of the HTTP response header ''HEADER'' when converted to lowercase and with 'dashes' converted to 'underscores', e.g. &amp;lt;code&amp;gt;$sent_http_cache_control&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$sent_http_content_type&amp;lt;/code&amp;gt;...;&lt;br /&gt;
&lt;br /&gt;
== $is_args ==&lt;br /&gt;
Evaluates to &amp;quot;?&amp;quot; if [[#$args|$args]] is set, &amp;quot;&amp;quot; otherwise.&lt;br /&gt;
&lt;br /&gt;
== $limit_rate ==&lt;br /&gt;
This variable allows limiting the connection rate.&lt;br /&gt;
&lt;br /&gt;
== $nginx_version ==&lt;br /&gt;
The version of Nginx that the server is currently running;&lt;br /&gt;
&lt;br /&gt;
== $query_string ==&lt;br /&gt;
The same as [[#$args|$args]] except that this variable is readonly.&lt;br /&gt;
&lt;br /&gt;
== $remote_addr ==&lt;br /&gt;
The address of the client.&lt;br /&gt;
&lt;br /&gt;
== $remote_port ==&lt;br /&gt;
The port of the client;&lt;br /&gt;
&lt;br /&gt;
== $remote_user ==&lt;br /&gt;
This variable is equal to the name of user, authenticated by the [[HttpAuthBasicModule|Auth Basic Module]];&lt;br /&gt;
&lt;br /&gt;
== $request_filename ==&lt;br /&gt;
This variable is equal to path to the file for the current request, formed from directives root or alias and URI request;&lt;br /&gt;
&lt;br /&gt;
== $request_body ==&lt;br /&gt;
This variable(0.7.58+) contains the body of the request. The significance of this variable appears in locations with directives [[HttpProxyModule#proxy_pass|proxy_pass]] or [[HttpFcgiModule#fastcgi_pass|fastcgi_pass]].&lt;br /&gt;
&lt;br /&gt;
== $request_body_file ==&lt;br /&gt;
Client request body temporary filename;&lt;br /&gt;
&lt;br /&gt;
== $request_completion ==&lt;br /&gt;
Set to &amp;quot;OK&amp;quot; if request was completed successfully. Empty if request was not completed or if request was not the last part of a series of range requests.&lt;br /&gt;
&lt;br /&gt;
== $request_method ==&lt;br /&gt;
This variable is equal to the method of request, usually &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This variable always evaluates to the method name of the ''main request'', not the current request, when the current request is a subrequest.&lt;br /&gt;
&lt;br /&gt;
== $request_uri ==&lt;br /&gt;
This variable is equal to the *original* request URI as received from the client including the args. It cannot be modified. Look at $uri for the post-rewrite/altered URI. &lt;br /&gt;
Does not include host name. Example: &amp;quot;/foo/bar.php?arg=baz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== $scheme ==&lt;br /&gt;
The HTTP scheme (i.e. http, https).  Evaluated only on demand, for example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
rewrite  ^  $scheme://example.com$uri  redirect;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== $server_addr ==&lt;br /&gt;
The server address. Generally nginx makes a system call to obtain this value. To improve efficiency and avoid this system call, specify an address with the [[#listen|listen]] directive and to use the &amp;lt;code&amp;gt;bind&amp;lt;/code&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
== $server_name ==&lt;br /&gt;
The name of the server.&lt;br /&gt;
&lt;br /&gt;
== $server_port ==&lt;br /&gt;
This variable is equal to the port of the server, to which the request arrived;&lt;br /&gt;
&lt;br /&gt;
== $server_protocol ==&lt;br /&gt;
This variable is the protocol of the request.  Common examples are: &amp;lt;code&amp;gt;HTTP/1.0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;HTTP/1.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== $uri ==&lt;br /&gt;
This variable is the current request URI, without any arguments (see $args for those).  This variable will reflect any modifications done so far by internal redirects or the [[HttpIndexModule#index|index]] module.  Note this may be different from $request_uri, as $request_uri is what was originally sent by the browser before any such modifications.  Does not include the protocol or host name.  Example: &amp;lt;code&amp;gt;/foo/bar.html&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_core_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpXsltModule</id>
		<title>HttpXsltModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpXsltModule"/>
				<updated>2012-05-02T19:49:50Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
This module is a filter which converts an XML response with the aid of one or more XSLT templates.&lt;br /&gt;
&lt;br /&gt;
This module was introduced in 0.7.8 and needs to be enabled via &lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --with-http_xslt_module&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location / {&lt;br /&gt;
  xml_entities       /site/dtd/entities.dtd;&lt;br /&gt;
  xslt_stylesheet    /site/xslt/one.xslt   param=value;&lt;br /&gt;
  xslt_stylesheet    /site/xslt/two.xslt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== xml_entities ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_xslt_module/xml_entities.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Specifies the DTD file which describes symbolic elements (xml entities). This file is compiled at the stage of configuration. For technical reasons it's not possible to specify entities in the XML being processed, therefore they are ignored, but this specially assigned file is used instead. In this file it is not necessary to describe structure of processed XML, it is sufficient only to declare necessary symbolic elements, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;! ENTITY of nbsp “&amp;amp;#xa0; “&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== xslt_param ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_xslt_module/xslt_param.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== xslt_string_param ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_xslt_module/xslt_string_param.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== xslt_stylesheet ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_xslt_module/xslt_stylesheet.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Specifies the XSLT template with its parameters. Template is compiled at the stage of configuration. The parameters are assigned as shown:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  param=value&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can specify parameters either one per line, or separate multiple parameters with colon (“: ”) If the parameter itself contains the character “:”, escape it as “%3A”. Furthermore, libxslt requires that string parameters should be quoted by the single or dual quotation marks if they contain non-alphanumeric characters, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  param1='http%3A//www.example.com': param2=value2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It's possible to use variables as parameters, for example, the entire line of the parameters can be substituted with one variable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
  location / {&lt;br /&gt;
    xslt_stylesheet /site/xslt/one.xslt&lt;br /&gt;
    $arg_xslt_params&lt;br /&gt;
    param1='$value1': param2=value2&lt;br /&gt;
    param3=value3;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to specify several templates, in which case they would be chained together in the order of their declaration.&lt;br /&gt;
&lt;br /&gt;
== xslt_types ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_xslt_module/xslt_types.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Permit processing responses with specified MIME-types in addition to “text/xml”. If XSLT output mode is HTML, then the response MIME-type changes to “text/HTML”.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_xslt_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpDavModule</id>
		<title>HttpDavModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpDavModule"/>
				<updated>2012-05-02T19:49:07Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
This module adds the HTTP and WebDAV methods PUT, DELETE, MKCOL, COPY and MOVE.  &lt;br /&gt;
&lt;br /&gt;
This module does not provide full WebDAV support (it is missing PROPFIND and OPTIONS methods). If you need full WebDAV support in Nginx, please see [https://github.com/arut/nginx-dav-ext-module ngx-dav-ext-module] on github.&lt;br /&gt;
&lt;br /&gt;
This module is not compiled by default. It is necessary to enable it at compile-time via&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --with-http_dav_module&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location / {&lt;br /&gt;
  root     /data/www;&lt;br /&gt;
  client_body_temp_path  /data/client_temp;&lt;br /&gt;
&lt;br /&gt;
  dav_methods  PUT DELETE MKCOL COPY MOVE;&lt;br /&gt;
&lt;br /&gt;
  create_full_put_path   on;&lt;br /&gt;
  dav_access             group:rw  all:r;&lt;br /&gt;
&lt;br /&gt;
  limit_except  GET {&lt;br /&gt;
    allow  192.168.1.0/32;&lt;br /&gt;
    deny   all;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== dav_access ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_dav_module/dav_access.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive assigns access rights for file and directories, for example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
dav_access user:rw group:rw all:r;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If assigning any permissions for &amp;lt;code&amp;gt;groups&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt;, then it's not necessary to indicate permissions for &amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
dav_access group:rw all:r;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== dav_methods ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_dav_module/dav_methods.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive enables specified HTTP and WebDAV methods.  Setting it to &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt; disables all methods, ignoring the remaining parameters.&lt;br /&gt;
&lt;br /&gt;
For the PUT method the destination file must reside on the same partition as the directory where the temporary file is stored (given by directive &amp;lt;code&amp;gt;client_body_temp_path&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt; section). &lt;br /&gt;
&lt;br /&gt;
When a file is created using the PUT method it is possible to assign the modification date by setting the &amp;lt;code&amp;gt;Date&amp;lt;/code&amp;gt; header.&lt;br /&gt;
&lt;br /&gt;
== create_full_put_path ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_dav_module/create_full_put_path.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By default, the PUT method can only create files within existing directories. &lt;br /&gt;
This directive permits creating all necessary intermediate directories.&lt;br /&gt;
&lt;br /&gt;
== min_delete_depth ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_dav_module/min_delete_depth.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_dav_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpSubModule</id>
		<title>HttpSubModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpSubModule"/>
				<updated>2012-05-02T19:48:33Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
This module can search and replace text in the nginx response.  It is only available if the &lt;br /&gt;
&amp;lt;pre&amp;gt;--with-http_sub_module option&amp;lt;/pre&amp;gt;&lt;br /&gt;
was specified for ./configure.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
location / {&lt;br /&gt;
  sub_filter      &amp;lt;/head&amp;gt;&lt;br /&gt;
  '&amp;lt;/head&amp;gt;&amp;lt;script language=&amp;quot;javascript&amp;quot; src=&amp;quot;$script&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;';&lt;br /&gt;
  sub_filter_once on;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== sub_filter ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_sub_module/sub_filter.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''sub_filter'' allows replacing some text in the nginx response with some other text, independently of the source of the data. The matching is case-insensitive. Substitution text may contain variables. Only one substitution rule per location is supported.&lt;br /&gt;
&lt;br /&gt;
== sub_filter_once ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_sub_module/sub_filter_once.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''sub_filter_once off'' allows to search and replace all matching lines, the default is replacing only the first one.&lt;br /&gt;
&lt;br /&gt;
== sub_filter_types ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_sub_module/sub_filter_types.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''sub_filter_types'' is used to specify which content types should be checked for ''sub_filter''.  The default is only ''text/html''.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_sub_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpSslModule</id>
		<title>HttpSslModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpSslModule"/>
				<updated>2012-05-02T19:47:51Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
This module enables HTTPS support.&lt;br /&gt;
&lt;br /&gt;
It supports checking client certificates with two limitations:&lt;br /&gt;
&lt;br /&gt;
* it's not possible to assign a Certificate Revocation List for Nginx versions below 0.8.7.&lt;br /&gt;
* if you have a chain of certificates &amp;amp;mdash; by having intermediate certificates between the server certificate and the CA root certificate &amp;amp;mdash; they're not specified separately like you would do for Apache. Instead you'll need to concatenate all the certificates, starting with the server certificate, and going deeper in the chain running through all the intermediate certificates. This can be done with &amp;quot;cat chain.crt &amp;gt;&amp;gt; mysite.com.crt&amp;quot; on the command line. Once this is done there's no further use for all the intermediate certificates in what Nginx is concerned. You'll indicate in the Nginx configuration the file with '''all''' the (concatenated) certificates.&lt;br /&gt;
&lt;br /&gt;
By default the module is not built, it is necessary to state it explicitly: give the ''--with-http_ssl_module'' parameter to ./configure.  Building this module requires the OpenSSL library and respective include files; quite often the library and include files live in separate packages in your platform, the later being named like libssl-dev or similar.&lt;br /&gt;
&lt;br /&gt;
The following is an example configuration, to reduce the CPU load it is recommended to run one worker process only and to enable keep-alive connections:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
worker_processes 1;&lt;br /&gt;
http {&lt;br /&gt;
  server {&lt;br /&gt;
    listen               443;&lt;br /&gt;
    ssl                  on;&lt;br /&gt;
    ssl_certificate      /usr/local/nginx/conf/cert.pem;&lt;br /&gt;
    ssl_certificate_key  /usr/local/nginx/conf/cert.key;&lt;br /&gt;
    keepalive_timeout    70;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using a chain of certificates, just append the extra certificates to your .crt file (cert.pem in the example). The server certificate needs to be the first on the file, otherwise you'll get a mismatch between private and public keys.&lt;br /&gt;
&lt;br /&gt;
Since Nginx version 0.7.14 the preferred way of enabling SSL is by using the `ssl` parameter of the `listen` directive:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
  listen 443 default_server ssl;&lt;br /&gt;
  ssl_certificate      /usr/local/nginx/conf/cert.pem;&lt;br /&gt;
  ssl_certificate_key  /usr/local/nginx/conf/cert.key;  &lt;br /&gt;
  ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Generate Certificates ==&lt;br /&gt;
&lt;br /&gt;
To generate private (dummy) certificates you can perform the following list of openssl commands. &lt;br /&gt;
&lt;br /&gt;
First change directory to where you want to create the certificate and private key, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /usr/local/nginx/conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now create the server private key, you'll be asked for a passphrase:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl genrsa -des3 -out server.key 1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create the Certificate Signing Request (CSR):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl req -new -key server.key -out server.csr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Remove the necessity of entering a passphrase for starting up nginx with SSL using the above private key:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp server.key server.key.org&lt;br /&gt;
$ openssl rsa -in server.key.org -out server.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Finally sign the certificate using the above private key and CSR: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update Nginx configuration by including the newly signed certificate and private key:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    server_name YOUR_DOMAINNAME_HERE;&lt;br /&gt;
    listen 443;&lt;br /&gt;
    ssl on;&lt;br /&gt;
    ssl_certificate /usr/local/nginx/conf/server.crt;&lt;br /&gt;
    ssl_certificate_key /usr/local/nginx/conf/server.key;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart Nginx.&lt;br /&gt;
&lt;br /&gt;
Now we're ready to access the above host using:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;https://YOUR_DOMAINNAME_HERE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using Wildcard certificates with multiple servers ==&lt;br /&gt;
&lt;br /&gt;
In some instances you may wish to provide a number of secure subdomains amongst unsecured ones, and possibly share resources across both HTTP and HTTPS subdomains. To do this one would require a wildcard subdomain, for example ''*.nginx.org''. An example configuration follows which shows how to configure a standard ''www'' subdomain, a secured subdomain, and share images across both subdomains using a third.&lt;br /&gt;
&lt;br /&gt;
When using a configuration like this it's more efficient memory wise to place the certificate file containing the certificate(s) for all domain names and the corresponding private key file directives in a http context, such that it's inherited by all active servers/virtual hosts:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
ssl_certificate      common.crt;&lt;br /&gt;
ssl_certificate_key  common.key;&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
  listen           80;&lt;br /&gt;
  server_name      www.nginx.org;&lt;br /&gt;
  ...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
  listen           443 default_server ssl;&lt;br /&gt;
  server_name      secure.nginx.org;&lt;br /&gt;
  ...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
  listen           80;&lt;br /&gt;
  listen           443;&lt;br /&gt;
  server_name      images.nginx.org;&lt;br /&gt;
  ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== ssl ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssl_module/ssl.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enables HTTPS for a server.  (Note that since nginx version 0.7.14, the standard way to enable SSL is through the '''[[HttpCoreModule#listen|listen]]''' directive.)&lt;br /&gt;
&lt;br /&gt;
== ssl_certificate ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssl_module/ssl_certificate.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive specifies the file containing the certificate, in PEM format, for this virtual host. This file can contain also other certificates and the server private key. Since version 0.6.7 the file path is relative to the directory where nginx main configuration file, nginx.conf, resides.&lt;br /&gt;
&lt;br /&gt;
== ssl_certificate_key ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssl_module/ssl_certificate_key.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive specifies the file containing the private key, in PEM format, for this virtual host. Since version 0.6.7 the file path is relative to the directory where nginx main configuration file, nginx.conf, resides.&lt;br /&gt;
&lt;br /&gt;
== ssl_ciphers ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssl_module/ssl_ciphers.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive describes the list of cipher suites the server supports for establishing a secure connection. Cipher suites are specified in the [http://openssl.org/docs/apps/ciphers.html OpenSSL] cipherlist format, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since nginx version 1.0.5, the default ciphers are:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
ssl_ciphers  HIGH:!aNULL:!MD5;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The complete cipherlist supported by the currently installed version of OpenSSL in your platform can be obtained by issuing the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl ciphers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ssl_client_certificate ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssl_module/ssl_client_certificate.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive specifies the file containing the CA (root) certificate, in PEM format, that is used for validating client certificates.&lt;br /&gt;
&lt;br /&gt;
== ssl_crl ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssl_module/ssl_crl.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive, introduced in Nginx version 0.8.7, specifies the filename of a Certificate Revocation List, in PEM format, which is used to check the revocation status of certificates.&lt;br /&gt;
&lt;br /&gt;
== ssl_dhparam ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssl_module/ssl_dhparam.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive specifies a file containing Diffie-Hellman key agreement protocol cryptographic parameters, in PEM format, utilized for exchanging session keys between server and client.&lt;br /&gt;
&lt;br /&gt;
== ssl_prefer_server_ciphers ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssl_module/ssl_prefer_server_ciphers.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The server requires that the cipher suite list for protocols SSLv3 and TLSv1 are to be preferred over the client supported cipher suite list.&lt;br /&gt;
&lt;br /&gt;
== ssl_protocols ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssl_module/ssl_protocols.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive enables the protocol versions specified.&lt;br /&gt;
&lt;br /&gt;
== ssl_verify_client ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssl_module/ssl_verify_client.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive enables the verification of the client identity. Parameter 'optional' checks the client identity using its certificate in case it was made available to the server. (Was 'ask' before 0.8.7 and 0.7.63)&lt;br /&gt;
&lt;br /&gt;
== ssl_verify_depth ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssl_module/ssl_verify_depth.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive sets how deep the server should go in the client provided certificate chain in order to verify the client identity.&lt;br /&gt;
&lt;br /&gt;
== ssl_session_cache ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssl_module/ssl_session_cache.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The directive sets the types and sizes of caches to store the SSL sessions.&amp;lt;BR&amp;gt;The cache types are:&lt;br /&gt;
&lt;br /&gt;
* off -- Hard off: nginx says explicitly to a client that sessions can not reused.&lt;br /&gt;
* none -- Soft off: nginx says to a client that session can be resued, but nginx actually never reuses them. This is workaround for some mail clients as ssl_session_cache may be used in mail proxy as well as in HTTP server.&lt;br /&gt;
* builtin -- the OpenSSL builtin cache, is used inside one worker process only. The cache size is assigned in the number of the sessions. Note: there appears to be a memory fragmentation issue using this method, please take that into consideration when using this. See &amp;quot;References&amp;quot; below.&lt;br /&gt;
* shared -- the cache is shared between all worker processes. The size of the cache is assigned in bytes: 1 MB cache can contain roughly 4000 sessions. Each shared cache must be given an arbitrary name. A shared cache with a given name can be used in several virtual hosts.&lt;br /&gt;
It's possible to use both types of cache &amp;amp;mdash; builtin and shared &amp;amp;mdash; simultaneously, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ssl_session_cache  builtin:1000  shared:SSL:10m;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bear in mind however, that using only shared cache, i.e., without builtin, should be more effective.&lt;br /&gt;
&lt;br /&gt;
For Nginx versions below 0.8.34 this directive shouldn't be set to 'none' or 'off' if ssl_verify_client is set to 'on' or 'optional'.&lt;br /&gt;
&lt;br /&gt;
* Note that for session resumption to work you'll need to have, at least, the server configured as '''default''' for the SSL socket. Like this:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
listen [::]:443 ssl default_server;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
This is so because session resumption happens before any TLS extensions are enabled, namely Server Name Identification (SNI). The ClientHello message requests a session ID from a given IP address (server). For that to work the default server setting is '''required'''.&lt;br /&gt;
&lt;br /&gt;
A '''preferred''' approach is to move the &amp;lt;code&amp;gt;ssl_session_cache&amp;lt;/code&amp;gt; directive to the &amp;lt;code&amp;gt;http&amp;lt;/code&amp;gt; context. The (minor) downside is that all configured virtual hosts get the '''same''' SSL cache settings.&lt;br /&gt;
&lt;br /&gt;
== ssl_session_timeout ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssl_module/ssl_session_timeout.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive defines the maximum time during which the client can re-use the previously negotiated cryptographic parameters of the secure session that is stored in the SSL cache.&lt;br /&gt;
&lt;br /&gt;
== ssl_engine ==&lt;br /&gt;
'''syntax:''' ''ssl_engine''&lt;br /&gt;
&lt;br /&gt;
This allows specifying the OpenSSL engine to use, like PadLock, for example. It requires a recent version of OpenSSL. To verify if the OpenSSL version installed in your platform supports this, issue the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl engine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
On a Debian testing with OpenSSL version 0.9.8o from 01 Jun 2010 it returns:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl engine&lt;br /&gt;
(padlock) VIA PadLock (no-RNG, no-ACE)&lt;br /&gt;
(dynamic) Dynamic engine loading support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Built-in variables =&lt;br /&gt;
&lt;br /&gt;
Module ngx_http_ssl_module supports the following built-in variables:&lt;br /&gt;
&lt;br /&gt;
* $ssl_cipher returns the cipher suite being used for the currently established SSL/TLS connection&lt;br /&gt;
* $ssl_client_serial returns the serial number of the client certificate for the currently established SSL/TLS connection &amp;amp;mdash; if applicable, i.e., if client authentication is activated in the connection&lt;br /&gt;
* $ssl_client_s_dn returns the subject Distinguished Name (DN) of the client certificate for the currently established SSL/TLS connection &amp;amp;mdash; if applicable, i.e., if client authentication is activated in the connection&lt;br /&gt;
* $ssl_client_i_dn returns the issuer DN of the client certificate for the currently established SSL/TLS connection &amp;amp;mdash; if applicable, i.e., if client authentication is activated in the connection&lt;br /&gt;
* $ssl_protocol returns the protocol of the currently established SSL/TLS connection &amp;amp;mdash; depending on the configuration and client available options it's one of SSLv2, SSLv3 or TLSv1&lt;br /&gt;
* $ssl_session_id the Session ID of the established secure connection &amp;amp;mdash; requires Nginx version greater or equal to 0.8.20&lt;br /&gt;
* $ssl_client_cert&lt;br /&gt;
* $ssl_client_raw_cert &lt;br /&gt;
* $ssl_client_verify takes the value &amp;quot;SUCCESS&amp;quot; when the client certificate is successfully verified&lt;br /&gt;
&lt;br /&gt;
= Nonstandard error codes =&lt;br /&gt;
&lt;br /&gt;
This module supports several nonstandard error codes which can be used for debugging with the aid of directive error_page:&lt;br /&gt;
&lt;br /&gt;
* 495 - error checking client certificate&lt;br /&gt;
* 496 - client did not grant the required certificate&lt;br /&gt;
* 497 - normal request was sent to HTTPS&lt;br /&gt;
Debugging is done after the request is completely &amp;quot;disassembled&amp;quot; and it's components are accessible via variables such as $request_uri, $uri, $arg and more.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* [http://nginx.org/en/docs/http/ngx_http_ssl_module.html Original Documentation]&lt;br /&gt;
* [http://kbeezie.com/view/free-ssl-with-nginx/ Implementing an actual SSL Certificate]&lt;br /&gt;
* [http://marc.info/?t=120127289900027 SSL Memory Fragmentation and new default status for ssl_session_cache]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpSecureLinkModule</id>
		<title>HttpSecureLinkModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpSecureLinkModule"/>
				<updated>2012-05-02T19:46:48Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* secure_link_secret */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
This module checks request URLs for a required security token. &lt;br /&gt;
This module is not compiled by default and must be specified using the&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--with-http_secure_link_module&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
argument to configure when compiling nginx. Note that this module is only supported in nginx version 0.7.18 and higher.&lt;br /&gt;
&lt;br /&gt;
== Example usage: ==&lt;br /&gt;
Imagine having a pdf file you want to ensure isn't linked from else where, to do this we need to add a unique token and an expiration date, we use the following PHP code to generate a token and an expire time&lt;br /&gt;
To construct the above hash, in PHP you can issue the following:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$secret = 'segredo'; // To make the hash more difficult to reproduce.&lt;br /&gt;
$path   = '/p/files/top_secret.pdf'; // This is the file to send to the user.&lt;br /&gt;
$expire = 1096891200; // At which point in time the file should expire. time() + x; would be the usual usage.&lt;br /&gt;
&lt;br /&gt;
$md5 = base64_encode(md5($secret . $path . $expire, true)); // Using binary hashing.&lt;br /&gt;
$md5 = strtr($md5, '+/', '-_'); // + and / are considered special characters in URLs, see the wikipedia page linked in references.&lt;br /&gt;
$md5 = str_replace('=', '', $md5); // When used in query parameters the base64 padding character is considered special.&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The expire time can obtained by using the [http://pt2.php.net/manual/en/function.time.php time()] function in PHP &amp;amp;mdash; or similar in other programming language &amp;amp;mdash; in order to obtain the [https://secure.wikimedia.org/wikipedia/en/wiki/Unix_epoch Unix epoch].&lt;br /&gt;
&lt;br /&gt;
Now that we have a hash that cannot easily be reproduced and an expire time we link the file in the following way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.com/p/files/top_secret.pdf?st=PIrEk4JX5gJPTGmvqJG41g&amp;amp;e=1324527723&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To have Nginx protect this URL we need to tell it how to reproduce the MD5 hash. We do this in the following way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /p/ {&lt;br /&gt;
    ## This must match the URI part related to the MD5 hash and expiration time.&lt;br /&gt;
    secure_link $arg_st,$arg_e;&lt;br /&gt;
&lt;br /&gt;
    ## The MD5 hash is built from our secret token, the URI($path in PHP) and our expiration time.&lt;br /&gt;
    secure_link_md5 segredo$uri$arg_e;&lt;br /&gt;
&lt;br /&gt;
    ## If the hash is incorrect then $secure_link is a null string.&lt;br /&gt;
    if ($secure_link = &amp;quot;&amp;quot;) {&lt;br /&gt;
        return 403;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ## The current local time is greater than the specified expiration time.&lt;br /&gt;
    if ($secure_link = &amp;quot;0&amp;quot;) {&lt;br /&gt;
        return 403;&lt;br /&gt;
    }&lt;br /&gt;
     &lt;br /&gt;
    ## If everything is ok $secure_link is 1.&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=  Directives =&lt;br /&gt;
== secure_link ==&lt;br /&gt;
&lt;br /&gt;
{{Directive|name=secure_link|args=md5_hash[,expiration_time]|default=none|context=location|vars=yes}}&lt;br /&gt;
&lt;br /&gt;
This directive specifies the MD5 hash value and the expiration time of this link URI. The md5_hash '''must''' be encoded using [http://en.wikipedia.org/wiki/Base64#URL_applications Base64 for URLs]. expiration_time is the [https://secure.wikimedia.org/wikipedia/en/wiki/Unix_epoch Unix epoch]. &lt;br /&gt;
&lt;br /&gt;
If no expiration_time is specified then the link '''never''' expires.&lt;br /&gt;
&lt;br /&gt;
== secure_link_md5 ==&lt;br /&gt;
&lt;br /&gt;
{{Directive|name=secure_link_md5|args=secret_token_concatenated_with_protected_uri|default=none|context=location|vars=yes}}&lt;br /&gt;
&lt;br /&gt;
This directive specifies the string you want to be hashed by MD5. The string can be obtained using variables like in the example above. This hash value is compared with the md5_hash given in the '''secure_link''' directive. If they match then $secure_link is set to '''1''', otherwise it's the null string.&lt;br /&gt;
&lt;br /&gt;
== secure_link_secret ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_secure_link_module/secure_link_secret.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive has been deprecated as of nginx 0.8.50 in favor of [[#secure_link_md5|secure_link_md5]].&lt;br /&gt;
&lt;br /&gt;
= variables =&lt;br /&gt;
&lt;br /&gt;
== $secure_link ==&lt;br /&gt;
&lt;br /&gt;
This variable behaves differently depending on whether [[HttpSecureLinkModule#secure_link_secret|secure_link_secret]] is used or not: &lt;br /&gt;
* If using '''secure_link_secret''', when the requested URI matches the computed MD5 hash, $secure_link is set to the protected URI. Otherwise it's a null string.&lt;br /&gt;
&lt;br /&gt;
* If using '''secure_link''' and '''secure_link_md5''', when the requested URI matches the computed MD5 hash, then $secure_link is set to '''1'''. If the current local time exceeds the $expiration_time then $secure_link is set to '''0'''. Otherwise it's set to a null string.&lt;br /&gt;
&lt;br /&gt;
== $secure_link_expires ==&lt;br /&gt;
&lt;br /&gt;
Is set to the $expiration_time when specified.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* [http://nginx.org/en/docs/http/ngx_http_secure_link_module.html Original Documentation]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Base64#URL_applications Base64 for URLs]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpRealipModule</id>
		<title>HttpRealipModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpRealipModule"/>
				<updated>2012-05-02T19:46:22Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
This module allows to change the client's IP address to value from request header (e. g. &amp;lt;code&amp;gt;X-Real-IP&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;X-Forwarded-For&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
It is useful if nginx works behind some proxy of L7 load balancer, and the request comes from a local IP, but proxy add request header with client's IP. &lt;br /&gt;
&lt;br /&gt;
This module isn't built by default, enable it with the configure option &lt;br /&gt;
&amp;lt;pre&amp;gt;--with-http_realip_module&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
set_real_ip_from   192.168.1.0/24;&lt;br /&gt;
set_real_ip_from   192.168.2.1;&lt;br /&gt;
real_ip_header     X-Real-IP;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== set_real_ip_from ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_realip_module/set_real_ip_from.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive describes the trusted addresses, which transfer accurate address for the replacement. Since 0.8.22 Unix sockets can also be trusted.&lt;br /&gt;
&lt;br /&gt;
== real_ip_header ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_realip_module/real_ip_header.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive sets the name of the header used for transferring the replacement IP address.&lt;br /&gt;
&lt;br /&gt;
In case of X-Forwarded-For, this module uses the last ip in the X-Forwarded-For header for replacement.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_realip_module.html Original Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://trac.nginx.org/nginx/ticket/2 trac ticket #2]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpRandomIndexModule</id>
		<title>HttpRandomIndexModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpRandomIndexModule"/>
				<updated>2012-05-02T19:45:57Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* random_index */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
Pick a random file from a directory and use it as the index file.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location  /  {&lt;br /&gt;
  random_index  on;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== random_index ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_random_index_module/random_index.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When enabled will scan the directory for files on each request, and chose a randomly picked file instead of the usual index.html to use as the index file.  Only plain-text files not starting with a dot will be considered.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_random_index_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpMp4Module</id>
		<title>HttpMp4Module</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpMp4Module"/>
				<updated>2012-05-02T19:45:37Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /*  Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
This module enables mp4 streaming with seeking ability. &lt;br /&gt;
This module is not compiled by default and must be specified using &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--with-http_mp4_module&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as an argument to configure when compiling Nginx. Note that this module is only supported in nginx version 1.1.3 and higher in development branch and 1.0.7 in stable branch.&lt;br /&gt;
&lt;br /&gt;
== Example usage: ==&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /video/ {&lt;br /&gt;
    mp4;&lt;br /&gt;
    mp4_buffer_size     1m;&lt;br /&gt;
    mp4_max_buffer_size 5m;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=  Directives =&lt;br /&gt;
&lt;br /&gt;
== mp4 ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_mp4_module/mp4.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enables the mp4 streaming feature.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /video {&lt;br /&gt;
    mp4 on; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== mp4_buffer_size==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_mp4_module/mp4_buffer_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the buffer size used for processing mp4 file.&lt;br /&gt;
&lt;br /&gt;
== mp4_max_buffer_size==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_mp4_module/mp4_max_buffer_size.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the maxium buffer size used for processing mp4 file. If the meta data exceeds this size Nginx will return a 500 status code and log an error resembling the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;/video/file.mp4&amp;quot; mp4 moov atom is too large:&lt;br /&gt;
12583268, you may want to increase mp4_max_buffer_size&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
Please see the following page for more details: http://nginx.org/en/docs/http/ngx_http_mp4_module.html&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpImageFilterModule</id>
		<title>HttpImageFilterModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpImageFilterModule"/>
				<updated>2012-05-02T19:45:07Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.7.54+&lt;br /&gt;
&lt;br /&gt;
This module is a filter for transforming JPEG, GIF and PNG images. It is not enabled by default to enable it, provide this option to ./configure when building nginx:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--with-http_image_filter_module &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
libgd is required to build and run the module. We recommend using the latest version of libgd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Example Configuration = &lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /img/ {&lt;br /&gt;
    proxy_pass     http://backend;&lt;br /&gt;
    image_filter   resize  150 100;&lt;br /&gt;
    error_page     415   = /empty;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
location = /empty {&lt;br /&gt;
    empty_gif;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives = &lt;br /&gt;
&lt;br /&gt;
== image_filter ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_image_filter_module/image_filter.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Specifies the type of transformation to apply to the image, one of the below:&lt;br /&gt;
&lt;br /&gt;
* test: checking that the response is indeed an image format JPEG, GIF or PNG. Otherwise, an error 415.&lt;br /&gt;
&lt;br /&gt;
* size: Gives information about the image in JSON format. For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;img&amp;quot; : { &amp;quot;width&amp;quot;: 100, &amp;quot;height&amp;quot;: 100, &amp;quot;type&amp;quot;: &amp;quot;gif&amp;quot; } }&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or if an error occurs,&lt;br /&gt;
&amp;lt;pre&amp;gt;{}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* resize: proportionally reduces the image to a specified size.&lt;br /&gt;
&lt;br /&gt;
* crop: proportionally reduces the image to a specified size and trims extra edge.&lt;br /&gt;
&lt;br /&gt;
== image_filter_buffer ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_image_filter_module/image_filter_buffer.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the maximum size for reading the image.&lt;br /&gt;
&lt;br /&gt;
== image_filter_jpeg_quality ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_image_filter_module/image_filter_jpeg_quality.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the rate of loss of information when processing the images as '''JPEG'''. The maximum recommended value is '''95'''.&lt;br /&gt;
&lt;br /&gt;
== image_filter_sharpen ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_image_filter_module/image_filter_sharpen.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== image_filter_transparency ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_image_filter_module/image_filter_transparency.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive allows you to disable image transparency in GIF and&lt;br /&gt;
palette-based PNG to improve image resampling quality. &lt;br /&gt;
&lt;br /&gt;
True color PNG alpha-channels are always preserved despite this setting.&lt;br /&gt;
&lt;br /&gt;
Note: Grayscale PNG's are untested, but should be handled&lt;br /&gt;
as truecolor PNGs.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_image_filter_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpGzipStaticModule</id>
		<title>HttpGzipStaticModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpGzipStaticModule"/>
				<updated>2012-05-02T19:44:23Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* gzip_static */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
Before serving a file from disk to a gzip-enabled client, this module will look for a precompressed file in the same location that ends in &amp;quot;.gz&amp;quot;. The purpose is to avoid compressing the same file each time it is requested.&lt;br /&gt;
&lt;br /&gt;
ngx_http_gzip_static_module was introduced in nginx 0.6.24. You must enable support at compile time:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --with-http_gzip_static_module&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
gzip_static on;&lt;br /&gt;
&lt;br /&gt;
gzip_http_version   1.1;&lt;br /&gt;
gzip_proxied        expired no-cache no-store private auth;&lt;br /&gt;
gzip_disable        &amp;quot;MSIE [1-6]\.&amp;quot;;&lt;br /&gt;
gzip_vary           on;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== gzip_static ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_gzip_static_module/gzip_static.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enables the module. You should ensure that the timestamps of the compressed and uncompressed files match.&lt;br /&gt;
&lt;br /&gt;
== gzip_http_version ==&lt;br /&gt;
See [[NginxHttpGzipModule#gzip_http_version| NginxHttpGzipModule]] &lt;br /&gt;
&lt;br /&gt;
== gzip_proxied ==&lt;br /&gt;
See [[NginxHttpGzipModule#gzip_proxied| NginxHttpGzipModule]] &lt;br /&gt;
&lt;br /&gt;
== gzip_disable ==&lt;br /&gt;
See [[NginxHttpGzipModule#gzip_disable| NginxHttpGzipModule]] &lt;br /&gt;
&lt;br /&gt;
== gzip_vary ==&lt;br /&gt;
See [[NginxHttpGzipModule#gzip_vary| NginxHttpGzipModule]]&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* [http://nginx.org/en/docs/http/ngx_http_gzip_static_module.html Original Documentation]&lt;br /&gt;
* [[NginxHttpGzipModule|See also: Gzip Compression Module]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpGeoipModule</id>
		<title>HttpGeoipModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpGeoipModule"/>
				<updated>2012-05-02T19:43:59Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
This module creates ngx_http_geoip_module variables based on the IP-address of the client matched against the [http://www.maxmind.com/ MaxMind] GeoIP binary files. This module appeared in nginx version 0.7.63 and 0.8.6.&lt;br /&gt;
&lt;br /&gt;
Precondition&lt;br /&gt;
&lt;br /&gt;
This module needs the geo databases and the library to read from the database.&lt;br /&gt;
&lt;br /&gt;
There are several options:&lt;br /&gt;
&lt;br /&gt;
* Download the database yourself, e.g.:&lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
  wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install a package providing the database. For example in Debian the package is called '''geoip-database'''.&lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
  aptitude install geoip-database&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install a port providing the database. For example in FreeBSD the port is called &amp;quot;GeoIP&amp;quot;.&lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
  cd /usr/ports/net/GeoIP&lt;br /&gt;
  make install clean&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The FreeBSD port provides the GeoLite country database located at /usr/local/share/GeoIP/GeoIP.dat&lt;br /&gt;
&lt;br /&gt;
Note that this is only the country database. You'll need to download the '''city''' database from Maxmind site:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To compile Nginx you'll need the library development files. In Debian they're in the package '''libgeoip-dev'''.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libgeoip-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For systems where there's not a packaged version of the library you'll have to compile it from source:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Follow the install instructions provided there.&lt;br /&gt;
&lt;br /&gt;
Compile Nginx enabling Geo IP support:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --with-http_geoip_module&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can check if your installed version of Nginx supports Geo IP with &amp;lt;code&amp;gt;nginx -V&amp;lt;/code&amp;gt;. Watch for the &amp;lt;code&amp;gt; --with-http_geoip_module&amp;lt;/code&amp;gt;. This means that Geo IP support is enabled.&lt;br /&gt;
&lt;br /&gt;
Here'a a configuration example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
http {&lt;br /&gt;
    geoip_country  GeoIP.dat; # the country IP database&lt;br /&gt;
    geoip_city     GeoLiteCity.dat; # the city IP database&lt;br /&gt;
    (...)&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can mimic Apache's mod_geoip functionality with PHP-FPM by adding the following fastcgi_param values:&lt;br /&gt;
&lt;br /&gt;
(From [http://kbeezie.com/view/apache-mod_geoip-nginx/ Mimic Apache mod_geoip in Nginx])&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
	fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code; &lt;br /&gt;
	fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== geoip_country ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_geoip_module/geoip_country.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive specifies the full path to the Geo IP database .dat file that associates IP addresses with country geolocation information. This allows you to get the country corresponding to the given IP. It can be used to determine the visitor's country from the IP address of the client. When set the following variables are available:&lt;br /&gt;
&lt;br /&gt;
* $geoip_country_code &amp;amp;mdash; two-letter country code, for example, &amp;quot;RU&amp;quot;, &amp;quot;US&amp;quot;.&lt;br /&gt;
* $geoip_country_code3 &amp;amp;mdash; three-letter country code, for example, &amp;quot;RUS&amp;quot;, &amp;quot;USA&amp;quot;.&lt;br /&gt;
* $geoip_country_name &amp;amp;mdash; the (verbose) name of the country, for example, &amp;quot;Russian Federation&amp;quot;, &amp;quot;United States&amp;quot;, &amp;amp;c.&lt;br /&gt;
&lt;br /&gt;
Nginx caches all supplied databases in memory. The country database is small, roughly 1.4M, therefore there's very little penalty in caching it. The city database is much bigger. Hence its memory footprint is larger.&lt;br /&gt;
&lt;br /&gt;
== geoip_city ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_geoip_module/geoip_city.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive specifies the full path to the Geo IP database .dat file that associates IP addresses with country, city and region geolocation information. This allows you to get that information corresponding to the given IP. It can be used to determine the visitor's geolocation from the IP address of the client. When set the following variables are available:&lt;br /&gt;
&lt;br /&gt;
* '''$geoip_city_country_code''' &amp;amp;mdash; two-letter country code, for example, &amp;quot;RU&amp;quot;, &amp;quot;US&amp;quot;.&lt;br /&gt;
* '''$geoip_city_country_code3''' &amp;amp;mdash; three-letter country code, for example, &amp;quot;RUS&amp;quot;, &amp;quot;USA&amp;quot;.&lt;br /&gt;
* '''$geoip_city_country_name''' &amp;amp;mdash; the name of the country, for example, &amp;quot;Russian Federation&amp;quot;, &amp;quot;United States&amp;quot; &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_region''' &amp;amp;mdash; the name of region (province, region, state, province, federal land, and the like), for example, &amp;quot;Moscow City&amp;quot;, &amp;quot;DC&amp;quot; &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_city''' &amp;amp;mdash; the name of the city, for example, &amp;quot;Moscow&amp;quot;, &amp;quot;Washington&amp;quot;, &amp;quot;Lisbon&amp;quot;, &amp;amp;c &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_postal_code''' &amp;amp;mdash; zip code or postal code &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_city_continent_code''' &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_latitude''' &amp;amp;mdash; latitude &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_longitude''' &amp;amp;mdash; longitude &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_dma_code''' &amp;amp;mdash; DMA Code &amp;amp;mdash; if available.&lt;br /&gt;
* '''$geoip_area_code''' &amp;amp;mdash; Area Code &amp;amp;mdash; if available.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_geoip_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpFlvModule</id>
		<title>HttpFlvModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpFlvModule"/>
				<updated>2012-05-02T19:43:21Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* flv */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
This module provides the ability to seek within FLV (Flash) files using byte-based offsets.&lt;br /&gt;
&lt;br /&gt;
Module ngx_http_flv_module offers special handling of files it handles: &lt;br /&gt;
&lt;br /&gt;
* adds &amp;lt;code&amp;gt;FLV&amp;lt;/code&amp;gt; header to the requested file; &lt;br /&gt;
* transfers file, beginning from the displacement, specified in the request argument &amp;lt;code&amp;gt;start=XXX&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
This module is not compiled by default and must be specified using the &amp;lt;code&amp;gt;--with-http_flv_module&amp;lt;/code&amp;gt; argument to &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt; when compiling Nginx.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location ~ \.flv$ {&lt;br /&gt;
  flv;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== flv ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_flv_module/flv.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enables special handling of files for this location.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_flv_module.html Original documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpPerlModule</id>
		<title>HttpPerlModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpPerlModule"/>
				<updated>2012-05-02T19:43:03Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
This module makes it possible to execute Perl directly within Nginx and call Perl via SSI.&lt;br /&gt;
&lt;br /&gt;
== Building Module at Compile-time ==&lt;br /&gt;
Unless built at compile-time, the module is not available. The default is to not build this module.&lt;br /&gt;
If you want to enable this module, is necessary to specify '''--with-http_perl_module''' when running ''configure''.  &lt;br /&gt;
&lt;br /&gt;
Your system must have Perl 5.6.1 or above.&lt;br /&gt;
&lt;br /&gt;
== Known Problems ==&lt;br /&gt;
This module is experimental; therefore anything is possible and bugs are likely.&lt;br /&gt;
&lt;br /&gt;
#  If a Perl module performs protracted operation, (for example DNS lookups, database queries, etc), then the worker process that is running the Perl script is completely tied up for the duration of script. Therefore embedded Perl scripts should be extremely careful to limit themselves to short, predictable operations.&lt;br /&gt;
#  It's possible for Nginx to leak memory if you reload the configuration file (via 'kill -HUP &amp;lt;pid&amp;gt;').&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
http {&lt;br /&gt;
  perl_modules  perl/lib;&lt;br /&gt;
  perl_require  hello.pm;&lt;br /&gt;
&lt;br /&gt;
  perl_set  $msie6  '&lt;br /&gt;
  sub {&lt;br /&gt;
    my $r = shift;&lt;br /&gt;
    my $ua = $r-&amp;gt;header_in(&amp;quot;User-Agent&amp;quot;);&lt;br /&gt;
    return &amp;quot;&amp;quot; if $ua =~ /Opera/;&lt;br /&gt;
    return &amp;quot;1&amp;quot; if $ua =~ / MSIE [6-9] \.\d+/;&lt;br /&gt;
    return &amp;quot;&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
 ';&lt;br /&gt;
&lt;br /&gt;
  server {&lt;br /&gt;
    location / {&lt;br /&gt;
      perl  hello::handler;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
perl/lib/hello.pm:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
package hello;&lt;br /&gt;
use nginx;&lt;br /&gt;
&lt;br /&gt;
sub handler {&lt;br /&gt;
  my $r = shift;&lt;br /&gt;
  $r-&amp;gt;send_http_header(&amp;quot;text/html&amp;quot;);&lt;br /&gt;
  return OK if $r-&amp;gt;header_only;&lt;br /&gt;
&lt;br /&gt;
  $r-&amp;gt;print(&amp;quot;hello!\n&amp;lt;br/&amp;gt;&amp;quot;);&lt;br /&gt;
  $r-&amp;gt;rflush;&lt;br /&gt;
&lt;br /&gt;
  if (-f $r-&amp;gt;filename or -d _) {&lt;br /&gt;
    $r-&amp;gt;print($r-&amp;gt;uri, &amp;quot; exists!\n&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return OK;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&lt;br /&gt;
__END__&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== perl ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_perl_module/perl.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive establishes a function for the data location.&lt;br /&gt;
&lt;br /&gt;
== perl_modules ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_perl_module/perl_modules.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive assigns additional path for Perl modules. Since version 0.6.7 this path is relative to directory of nginx configuration file nginx.conf, but not to nginx prefix directory.&lt;br /&gt;
&lt;br /&gt;
== perl_require ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_perl_module/perl_require.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There can be multiple perl_require directives.&lt;br /&gt;
&lt;br /&gt;
== perl_set ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_perl_module/perl_set.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive establishes the function of variable ???&lt;br /&gt;
&lt;br /&gt;
= Calling Perl from SSI =&lt;br /&gt;
Instruction format is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--# perl sub=&amp;quot;module::function&amp;quot; arg=&amp;quot;parameter1&amp;quot; arg=&amp;quot;parameter2&amp;quot;...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Methods of request object $r =&lt;br /&gt;
* $r-&amp;gt;args - method returns the arguments of request.&lt;br /&gt;
* $r-&amp;gt;discard_request_body - method tells nginx to discard the request body.&lt;br /&gt;
* $r-&amp;gt;filename - method returns the name of file, which corresponds to URI request.&lt;br /&gt;
* $r-&amp;gt;has_request_body(function) - method returns 0, if there is no request body. But if the request body exists, then the passed function is established and 1 returned. At the end of the body processing, nginx will call the established processor.    Example usage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
package hello;&lt;br /&gt;
&lt;br /&gt;
use nginx;&lt;br /&gt;
&lt;br /&gt;
sub handler {&lt;br /&gt;
  my $r = shift;&lt;br /&gt;
&lt;br /&gt;
  if ($r-&amp;gt;request_method ne &amp;quot;POST&amp;quot;) {&lt;br /&gt;
    return DECLINED;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ($r-&amp;gt;has_request_body(\&amp;amp;post)) {&lt;br /&gt;
    return OK;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub post {&lt;br /&gt;
  my $r = shift;&lt;br /&gt;
  $r-&amp;gt;send_http_header;&lt;br /&gt;
  $r-&amp;gt;print(&amp;quot;request_body: \&amp;quot;&amp;quot;, $r-&amp;gt;request_body, &amp;quot;\&amp;quot;&amp;lt;br/&amp;gt;&amp;quot;);&lt;br /&gt;
  $r-&amp;gt;print(&amp;quot;request_body_file: \&amp;quot;&amp;quot;, $r-&amp;gt;request_body_file, &amp;quot;\&amp;quot;&amp;lt;br/&amp;gt;\n&amp;quot;);&lt;br /&gt;
  return OK;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&lt;br /&gt;
&lt;br /&gt;
__END__&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* $r-&amp;gt;header_in(header) - retrieve an HTTP request header.&lt;br /&gt;
* $r-&amp;gt;header_only - true if we only need to return a response header.&lt;br /&gt;
* $r-&amp;gt;header_out(header, value) - set a response header.&lt;br /&gt;
* $r-&amp;gt;internal_redirect(uri) - method makes internal redirect to the indicated uri. Redirect occurs only after the completion of Perl script.&lt;br /&gt;
* $r-&amp;gt;print(args, ...) - sends data to client.&lt;br /&gt;
* $r-&amp;gt;request_body - method returns the request body of client when the body is not recorded into the temporary file. &lt;br /&gt;
: So that the body of the demand of client is guaranteed to remain in memory, it is necessary to limit its size with the aid&lt;br /&gt;
: of client_max_body_size and to assign sufficient size for the buffer using client_body_buffer_size.&lt;br /&gt;
* $r-&amp;gt;request_body_file — method returns the name of the file, in which is stored the body of the demand of client. The file must be removed on the completion of work. So that the body of the request would always be written to the file, it is necessary to indicate client_body_in_file_only on.&lt;br /&gt;
* $r-&amp;gt;request_method — method returns the HTTP method of the request.&lt;br /&gt;
* $r-&amp;gt;remote_addr - method returns IP address of client.&lt;br /&gt;
* $r-&amp;gt;rflush - method immediately transmits data to client.&lt;br /&gt;
* $r-&amp;gt;sendfile(file [, displacement [, length ]   ) - transfers to client contents of the file indicated. The optional parameters indicate initial offset and length of transmitted data. Strictly the transmission of data occurs only after the completion of the perl script.&lt;br /&gt;
* $r-&amp;gt;send_http_header(type) - adds header to response. The optional parameter &amp;quot;type&amp;quot; establishes the value of line &amp;quot;Content-Type&amp;quot; in the title of answer.&lt;br /&gt;
* $r-&amp;gt;sleep(milliseconds, handler) - method sets the specified handler and stops processing the request at a given time. nginx will continue to process other requests in the meantime. After the specified timeout has expired, nginx will run the installed handler. Please note that you need to pass a reference to the function handler. To transfer data between processors you should use $r-&amp;gt;variable(). Example of usage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
package hello; &lt;br /&gt;
&lt;br /&gt;
use nginx; &lt;br /&gt;
&lt;br /&gt;
sub handler {&lt;br /&gt;
   my $r = shift; &lt;br /&gt;
&lt;br /&gt;
  $r-&amp;gt;discard_request_body; &lt;br /&gt;
  $r-&amp;gt;variable(&amp;quot;var&amp;quot;, &amp;quot;OK&amp;quot;); &lt;br /&gt;
  $r-&amp;gt;sleep(1000, \&amp;amp;next); &lt;br /&gt;
&lt;br /&gt;
  return OK; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub next {&lt;br /&gt;
  my $r = shift; &lt;br /&gt;
&lt;br /&gt;
  $r-&amp;gt;send_http_header; &lt;br /&gt;
  $r-&amp;gt;print($r-&amp;gt;variable(&amp;quot;var&amp;quot;)); &lt;br /&gt;
&lt;br /&gt;
  return OK;&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
1; &lt;br /&gt;
__END__&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* $r-&amp;gt;status(code) - sets the HTTP response code&lt;br /&gt;
* $r-&amp;gt;unescape(text) - decodes the text, assigned in the form %XX.&lt;br /&gt;
* $r-&amp;gt;uri - returns request URI.&lt;br /&gt;
* $r-&amp;gt;variable(name[, value]) - the method returns or sets the value of the specified variable. Variables are local to each query.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_perl_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpAdditionModule</id>
		<title>HttpAdditionModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpAdditionModule"/>
				<updated>2012-05-02T19:42:26Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- page was renamed from NginxDocsEnglishDraftHttpAdditionModule&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
= Synopsis =&lt;br /&gt;
This module adds contents of other locations before and after the current location's content.&lt;br /&gt;
&lt;br /&gt;
It is implemented as an output filter, the contents of the main request and subrequests to other locations are not buffered completely and are still sent to the client in a streaming fashion. Because the length of the final response body is unknown while sending the HTTP headers, the HTTP chunked encoding is always used here.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
By default the module is not built, it is necessary to enable its build with &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --with-http_addition_module&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
at compilation time.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location / {&lt;br /&gt;
  add_before_body   /before_action;&lt;br /&gt;
  add_after_body    /after_action;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
Note that as of 0.8.17 no contents will be added if the current location is served as a subrequest itself. Consider the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /foo {&lt;br /&gt;
  add_before_body /bar;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
location /bar {&lt;br /&gt;
  add_before_body  /baz;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then accessing ''/foo'' won't get ''/baz'' inserted before the contents of the subrequest ''/bar''.&lt;br /&gt;
&lt;br /&gt;
Also note that at this time, only strings can be used in before/after body locations, not variables. So&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location / {&lt;br /&gt;
  set $before_action /before_action;&lt;br /&gt;
  add_before_body $before_action;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will not work as expected (although the configuration file will still load properly).&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== add_before_body ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_addition_module/add_before_body.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive adds content of uri before the response body, issued as a result of the work of the assigned subrequest. &lt;br /&gt;
&lt;br /&gt;
== add_after_body ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_addition_module/add_after_body.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive adds content of uri after the response body, issued as a result of the work of the assigned subrequest.&lt;br /&gt;
&lt;br /&gt;
== addition_types ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_addition_module/addition_types.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive (since 0.7.9) allows you to add text only to locations of the specified MIME-types (defaults to ''&amp;quot;text/html&amp;quot;''). &lt;br /&gt;
&lt;br /&gt;
(Before 0.8.17, this directive was mispelled as &amp;quot;addtion_types&amp;quot; in the source. This bug has been fixed in 0.8.17.)&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_addition_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpUseridModule</id>
		<title>HttpUseridModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpUseridModule"/>
				<updated>2012-05-02T19:41:46Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
The module ngx_http_userid_module hands out cookies which are used for the purposes of  &lt;br /&gt;
identifying clients upon subsequent requests. For logging it is possible to use variables &lt;br /&gt;
&amp;lt;code&amp;gt;$uid_got&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;$uid_set&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Remark: keep in mind variables &amp;lt;code&amp;gt;$uid_got&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;$uid_set&amp;lt;/code&amp;gt; are not accessible in SSI,&lt;br /&gt;
because the SSI filter module's processing occurs earlier in the chain than the userid filter.  &lt;br /&gt;
&lt;br /&gt;
This module is compatible with [http://www.lexa.ru/programs/mod-uid-eng.html mod_uid]  for Apache.&lt;br /&gt;
&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
userid          on;&lt;br /&gt;
userid_name     uid;&lt;br /&gt;
userid_domain   example.com;&lt;br /&gt;
userid_path     /;&lt;br /&gt;
userid_expires  365d;&lt;br /&gt;
userid_p3p      'policyref=&amp;quot;/w3c/p3p.xml&amp;quot;, CP=&amp;quot;CUR ADM OUR NOR STA NID&amp;quot;';&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== userid ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_userid_module/userid.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enables or disables issuing cookies and logging requested cookies:&lt;br /&gt;
&lt;br /&gt;
* on - enables version 2 cookies and logs them;&lt;br /&gt;
* v1 - enables version 1 cookies and logs them;&lt;br /&gt;
* log - do not send cookies, but write down incoming cookies to log;&lt;br /&gt;
* off - do not send cookies, and don't write them to logs;&lt;br /&gt;
&lt;br /&gt;
== userid_domain ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_userid_module/userid_domain.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assigns the domain for cookie. The parameter &amp;quot;none&amp;quot; doesn't issue domain for cookie.&lt;br /&gt;
&lt;br /&gt;
== userid_expires ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_userid_module/userid_expires.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the expiration time for the cookie.&lt;br /&gt;
&lt;br /&gt;
The parameter set &amp;amp; send-out browser expiration time for cookie. Value &amp;quot;max&amp;quot; assigns the time on 31 December, 2037, 23:55:55 gmt. This is the maximum time that older browsers understand.&lt;br /&gt;
&lt;br /&gt;
== userid_name ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_userid_module/userid_name.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assigns name to cookie.&lt;br /&gt;
&lt;br /&gt;
== userid_p3p ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_userid_module/userid_p3p.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive assigns value for the header P3P, which will sent together with cookie.&lt;br /&gt;
&lt;br /&gt;
== userid_path ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_userid_module/userid_path.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the cookie path.&lt;br /&gt;
&lt;br /&gt;
== userid_service ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_userid_module/userid_service.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive assigns the IP address of the server which gave out cookie. &lt;br /&gt;
If not set, version 1 cookies set to zero, and for version 2 cookies the IP address of server.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_userid_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpUpstreamModule</id>
		<title>HttpUpstreamModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpUpstreamModule"/>
				<updated>2012-05-02T19:40:42Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
This module provides simple load-balancing (round-robin and client IP) across backend servers.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
upstream backend  {&lt;br /&gt;
  server backend1.example.com weight=5;&lt;br /&gt;
  server backend2.example.com:8080;&lt;br /&gt;
  server unix:/tmp/backend3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
  location / {&lt;br /&gt;
    proxy_pass  http://backend;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== ip_hash ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_upstream_module/ip_hash.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive causes requests to be distributed between upstreams based on the IP-address of the client. &amp;lt;BR&amp;gt;&lt;br /&gt;
The key for the hash is the class-C network address of the client.  This method guarantees that the client request will always be transferred to the same server. But if this server is considered inoperative, then the request of this client will be transferred to another server.  This gives a high probability clients will always connect to the same server.&lt;br /&gt;
&lt;br /&gt;
It is not possible to combine ip_hash and weight methods for connection distribution.  If one of the servers must be removed for some time, you must mark that server as *down*.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
upstream backend {&lt;br /&gt;
  ip_hash;&lt;br /&gt;
  server   backend1.example.com;&lt;br /&gt;
  server   backend2.example.com;&lt;br /&gt;
  server   backend3.example.com  down;&lt;br /&gt;
  server   backend4.example.com;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== keepalive ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_upstream_module/keepalive.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== server ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_upstream_module/server.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive assigns the name and the parameters of server. For the name it is possible to use a domain name, an address, port or unix socket. If domain name resolves to several addresses, then all are used.&lt;br /&gt;
&lt;br /&gt;
* weight = NUMBER - set weight of the server, if not set weight is equal to one.&lt;br /&gt;
* max_fails = NUMBER - number of unsuccessful attempts at communicating with the server within the time period (assigned by parameter fail_timeout) after which it is considered inoperative.  If not set, the number of attempts is one. A value of 0 turns off this check.  What is considered a failure is defined by [[NginxHttpProxyModule#proxy_next_upstream|proxy_next_upstream]] or [[HttpFcgiModule#fastcgi_next_upstream|fastcgi_next_upstream]] (except http_404 errors which do not count towards max_fails).&lt;br /&gt;
* fail_timeout = TIME - the time during which must occur *max_fails* number of unsuccessful attempts at communication with the server that would cause the server to be considered inoperative, and also the time for which the  server will be considered inoperative (before another attempt is made).  If not set the time is 10 seconds. fail_timeout has nothing to do with upstream response time, use [[NginxHttpProxyModule#proxy_connect_timeout|proxy_connect_timeout]]  and [[NginxHttpProxyModule#proxy_read_timeout|proxy_read_timeout]]  for controlling this.&lt;br /&gt;
* down - marks server as permanently offline, to be used with the directive ip_hash.&lt;br /&gt;
* backup - (0.6.7 or later) only uses this server if the non-backup servers are all down or busy (cannot be used with the directive ip_hash)&lt;br /&gt;
&lt;br /&gt;
Example configuration:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
upstream  backend  {&lt;br /&gt;
  server   backend1.example.com    weight=5;&lt;br /&gt;
  server   127.0.0.1:8080          max_fails=3  fail_timeout=30s;&lt;br /&gt;
  server   unix:/tmp/backend3;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Attention: If you use only one upstream server nginx set a internal variable to 1, this means that the max_fails &amp;amp; fail_timeout parameter are not handled.'''&lt;br /&gt;
&lt;br /&gt;
Effect: If nginx can not connect to upstream the request it's gone.&lt;br /&gt;
&lt;br /&gt;
Solution: Use the same server several times&lt;br /&gt;
&lt;br /&gt;
== upstream ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_upstream_module/upstream.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive describes a set of servers, which can be used in directives proxy_pass and fastcgi_pass as a single entity.&lt;br /&gt;
They can listen to server on different ports and furthermore, it is possible to simultaneously use a server that listens on both TCP and Unix sockets. &lt;br /&gt;
&lt;br /&gt;
Servers can be assigned different weights.  If not specified weight is equal to one.&lt;br /&gt;
&lt;br /&gt;
Example configuration:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
upstream backend {&lt;br /&gt;
  server backend1.example.com weight=5;&lt;br /&gt;
  server 127.0.0.1:8080       max_fails=3  fail_timeout=30s;&lt;br /&gt;
  server unix:/tmp/backend3;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Requests are distributed according to the servers in round-robin manner with respect of the server weight.&amp;lt;BR&amp;gt;&lt;br /&gt;
For example of every seven requests given above they will be distributed like this: 5 requests on backend1.example.com and one request to the second and the third of server. If with an attempt at the work with the server error occurred, then the request will be transmitted to the following server and then until all workers of server not are tested. If successful answer is not succeeded in obtaining from all servers, then to client will be returned the result of work with the last server.&lt;br /&gt;
&lt;br /&gt;
= Variables =&lt;br /&gt;
Since version 0.5.18, it is possible to log via log_module variables.&lt;br /&gt;
&lt;br /&gt;
Configuration example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
log_format timing '$remote_addr - $remote_user [$time_local]  $request '&lt;br /&gt;
  'upstream_response_time $upstream_response_time '&lt;br /&gt;
  'msec $msec request_time $request_time';&lt;br /&gt;
&lt;br /&gt;
log_format up_head '$remote_addr - $remote_user [$time_local]  $request '&lt;br /&gt;
  'upstream_http_content_type $upstream_http_content_type';&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== $upstream_addr == &lt;br /&gt;
Address (ip:port or unix:socket-path) of the upstream server that handled the request. If multiple upstream addresses were accessed while processing the request, then the addresses are separated by a comma and space, for example: &amp;quot;192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock&amp;quot;. If there was an internal redirect from one server group to another using the &amp;quot;X-Accel-Redirect&amp;quot; or error_page, these groups of servers are separated by a colon with a space on each side, for example: &amp;quot;192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock : 192.168.10.1:80, 192.168.10.2:80&amp;quot;. Note the spaces: it's a good idea to enclose this in &amp;quot;&amp;quot; in a log format to make parsing easier.&lt;br /&gt;
&lt;br /&gt;
== $upstream_cache_status ==&lt;br /&gt;
Appeared in 0.8.3.  Possible values:&lt;br /&gt;
* MISS&lt;br /&gt;
* EXPIRED - expired, request was passed to backend&lt;br /&gt;
* UPDATING - expired, stale response was used due to proxy/fastcgi_cache_use_stale updating&lt;br /&gt;
* STALE - expired, stale response was used due to proxy/fastcgi_cache_use_stale&lt;br /&gt;
* HIT&lt;br /&gt;
&lt;br /&gt;
== $upstream_status ==&lt;br /&gt;
Upstream server status of the answer. As in $upstream_addr, if more than one upstream server is accessed, the values are separated by commas and colons with spaces.&lt;br /&gt;
&lt;br /&gt;
== $upstream_response_time == &lt;br /&gt;
Response time of upstream server(s) in seconds, with an accuracy of milliseconds. As in $upstream_addr, if more than one upstream server is accessed, the values are separated by commas and colons with spaces.&lt;br /&gt;
&lt;br /&gt;
== $upstream_http_$HEADER ==&lt;br /&gt;
Arbitrary HTTP protocol headers, for example:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
$upstream_http_host&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bear in mind that if more than one upstream server is accessed, only the header from the last one appears here.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_upstream_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/Modules</id>
		<title>Modules</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/Modules"/>
				<updated>2012-05-02T19:39:57Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Standard HTTP modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installing Modules =&lt;br /&gt;
Nginx modules must be selected during compile, run time including of modules is not supported. A full summary of the compile-time options, including optional modules can be found in the provided configure script by running &amp;quot;./configure --help&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Nginx core modules =&lt;br /&gt;
These modules are required.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[CoreModule|Main]]&lt;br /&gt;
| Configure error logging, processes, permissions, etc.&lt;br /&gt;
|-&lt;br /&gt;
| [[EventsModule|Events]]&lt;br /&gt;
| Configure epoll, kqueue, select, poll, etc. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Standard HTTP modules =&lt;br /&gt;
These modules are automatically compiled in unless explicitly disabled with &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Version&lt;br /&gt;
! configure argument to disable&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCoreModule|Core]]&lt;br /&gt;
| Control ports, locations, error pages, aliases, and other essentials.&lt;br /&gt;
|&lt;br /&gt;
| --without-http&lt;br /&gt;
|- &lt;br /&gt;
| [[HttpAccessModule|Access]]&lt;br /&gt;
| Allow/deny based on IP address.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_access_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAuthBasicModule|Auth Basic]]&lt;br /&gt;
| Basic HTTP authentication.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_auth_basic_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAutoindexModule|Auto Index]]&lt;br /&gt;
| Generates automatic directory listings.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_autoindex_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpBrowserModule|Browser]]&lt;br /&gt;
| Interpret &amp;quot;User-Agent&amp;quot; string.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_browser_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpCharsetModule|Charset]]&lt;br /&gt;
| Recode web pages.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_charset_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpEmptyGifModule|Empty GIF]]&lt;br /&gt;
| Serve a 1x1 image from memory.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_empty_gif_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFastcgiModule|FastCGI]]&lt;br /&gt;
| FastCGI Support.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_fastcgi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGeoModule|Geo]]&lt;br /&gt;
| Set config variables using key/value pairs of IP addresses.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_geo_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGzipModule|Gzip]]&lt;br /&gt;
| Gzip responses.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_gzip_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpHeadersModule|Headers]]&lt;br /&gt;
| Set arbitrary HTTP response headers. &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpIndexModule|Index]]&lt;br /&gt;
| Controls which files are to be used as index. &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLimitReqModule|Limit Requests]]&lt;br /&gt;
| Limit frequency of connections from a client.&lt;br /&gt;
| 0.7.20&lt;br /&gt;
| --without-http_limit_req_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLimitZoneModule|Limit Zone]]&lt;br /&gt;
| Limit simultaneous connections from a client. Deprecated in 1.1.8, use Limit Conn Instead.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_limit_zone_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLimitConnModule|Limit Conn]]&lt;br /&gt;
| Limit concurrent connections based on a variable.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_limit_conn_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpLogModule|Log]]&lt;br /&gt;
| Customize access logs.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMapModule|Map]]&lt;br /&gt;
| Set config variables using arbitrary key/value pairs.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_map_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMemcachedModule|Memcached]]&lt;br /&gt;
| Memcached support.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_memcached_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpProxyModule|Proxy]]&lt;br /&gt;
| Proxy to upstream servers.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_proxy_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRefererModule|Referer]]&lt;br /&gt;
| Filter requests based on &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_referer_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRewriteModule|Rewrite]]&lt;br /&gt;
| Request rewriting using regular expressions.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_rewrite_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpScgiModule|SCGI]]&lt;br /&gt;
| SCGI protocol support.&lt;br /&gt;
| 0.8.42&lt;br /&gt;
| --without-http_scgi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSplitClientsModule|Split Clients]]&lt;br /&gt;
| Splits clients based on some conditions&lt;br /&gt;
| 0.8.37&lt;br /&gt;
| --without-http_split_clients_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSsiModule|SSI]]&lt;br /&gt;
| Server-side includes.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_ssi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUpstreamModule|Upstream]]&lt;br /&gt;
| For load-balancing.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_upstream_ip_hash_module (ip_hash directive only)&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUseridModule|User ID]]&lt;br /&gt;
| Issue identifying cookies.&lt;br /&gt;
|&lt;br /&gt;
| --without-http_userid_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpUwsgiModule|uWSGI]]&lt;br /&gt;
| uWSGI protocol support.&lt;br /&gt;
| 0.8.40&lt;br /&gt;
| --without-http_uwsgi_module&lt;br /&gt;
|-&lt;br /&gt;
| [[X-accel|X-Accel]]&lt;br /&gt;
| X-Sendfile-like module.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Optional HTTP modules =&lt;br /&gt;
The following modules must be enabled at compile-time with the specified option to &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Version&lt;br /&gt;
! configure argument to enable&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpAdditionModule|Addition]]&lt;br /&gt;
| Append text to pages.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_addition_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDegradationModule|Degradation]]&lt;br /&gt;
| Allow to return 204 or 444 code for some locations on low memory condition.&lt;br /&gt;
| 0.8.25&lt;br /&gt;
| --with-http_degradation_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpPerlModule|Embedded Perl]]&lt;br /&gt;
| Use Perl in Nginx config files.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_perl_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpFlvModule|FLV]]&lt;br /&gt;
| Flash Streaming Video&lt;br /&gt;
| &lt;br /&gt;
| --with-http_flv_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGeoipModule|GeoIP]]&lt;br /&gt;
| Creates variables with information from the [http://www.maxmind.com/ MaxMind] GeoIP binary files.&lt;br /&gt;
| 0.8.6, 0.7.63&lt;br /&gt;
| --with-http_geoip_module&lt;br /&gt;
|-&lt;br /&gt;
| [[GooglePerftoolsModule|Google Perftools]]&lt;br /&gt;
| Google Performance Tools support.&lt;br /&gt;
| 0.6.29&lt;br /&gt;
| --with-google_perftools_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpGzipStaticModule|Gzip Precompression]]&lt;br /&gt;
| Serves precompressed versions of static files.&lt;br /&gt;
| 0.6.23&lt;br /&gt;
| --with-http_gzip_static_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpImageFilterModule|Image Filter]]&lt;br /&gt;
| Transform images with Libgd&lt;br /&gt;
| 0.7.54&lt;br /&gt;
| --with-http_image_filter_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpMp4Module|MP4]]&lt;br /&gt;
| Enables mp4 streaming with seeking ability.&lt;br /&gt;
| 1.1.3, 1.0.7&lt;br /&gt;
| --with-http_mp4_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRandomIndexModule|Random Index]]&lt;br /&gt;
| Randomize directory indexes.&lt;br /&gt;
| 0.7.15&lt;br /&gt;
| --with-http_random_index_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpRealipModule|Real IP]]&lt;br /&gt;
| For using nginx as backend&lt;br /&gt;
| &lt;br /&gt;
| --with-http_realip_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSecureLinkModule|Secure Link]]&lt;br /&gt;
| Protect pages with a secret key.&lt;br /&gt;
| 0.7.18&lt;br /&gt;
| --with-http_secure_link_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSslModule|SSL]]&lt;br /&gt;
| HTTPS/SSL support.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_ssl_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpStubStatusModule|Stub Status]]&lt;br /&gt;
| View server statistics.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_stub_status_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpSubModule|Substitution]]&lt;br /&gt;
| Replace text in pages&lt;br /&gt;
| &lt;br /&gt;
| --with-http_sub_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpDavModule|WebDAV]]&lt;br /&gt;
| WebDAV pass-through support.&lt;br /&gt;
| &lt;br /&gt;
| --with-http_dav_module&lt;br /&gt;
|-&lt;br /&gt;
| [[HttpXsltModule|XSLT]]&lt;br /&gt;
| Post-process pages with XSLT.&lt;br /&gt;
| 0.7.8&lt;br /&gt;
| --with-http_xslt_module&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Mail modules =&lt;br /&gt;
{| class=&amp;quot;modules-index-table&amp;quot; &lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! configure argument&lt;br /&gt;
|-&lt;br /&gt;
| [[MailCoreModule|Core]]&lt;br /&gt;
| Nginx is able to handle and proxy the IMAP, POP3, SMTP protocols. &lt;br /&gt;
| --with-mail&amp;lt;br&amp;gt;--without-mail_pop3_module&amp;lt;br&amp;gt;--without-mail_imap_module&amp;lt;br&amp;gt;--without-mail_smtp_module&lt;br /&gt;
|-&lt;br /&gt;
| [[MailAuthModule|Auth]]&lt;br /&gt;
| Use Nginx to authenticate mail services.&lt;br /&gt;
|-&lt;br /&gt;
| [[MailProxyModule|Proxy]]&lt;br /&gt;
| Nginx can proxy IMAP, POP3, and SMTP protocols.&lt;br /&gt;
|-&lt;br /&gt;
| [[MailSslModule|SSL]]&lt;br /&gt;
| This module ensures SSL/TLS support for POP3/IMAP/SMTP.&lt;br /&gt;
| --with-mail_ssl_module&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Third party modules and Patches =&lt;br /&gt;
Please see the catalog of [[3rdPartyModules|3rd party modules]].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* [[ModulesByExample|Module index by example]]&lt;br /&gt;
* [[ConfigNotation| Configuration Notation Reference]]&lt;br /&gt;
* [[ModuleComparisonMatrix| Module comparison matrix with other servers]]&lt;br /&gt;
* [[FeatureRequests| Feature Requests]] &lt;br /&gt;
* [[GettingStarted| Getting Started]] &lt;br /&gt;
* [[Configuration| Configuration Cookbook]]&lt;br /&gt;
* [[DirectiveIndex| Index of all Directives]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpSsiModule</id>
		<title>HttpSsiModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpSsiModule"/>
				<updated>2012-05-02T19:39:13Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
This module provides a filter which processes Server-Side Includes (SSI) in the input. &lt;br /&gt;
The list of the supported commands for SSI is currently incomplete. &lt;br /&gt;
&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location / {&lt;br /&gt;
  ssi  on;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== ssi ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssi_module/ssi.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enables SSI processing.&lt;br /&gt;
&lt;br /&gt;
Note that when SSI is enabled the Last-Modified and Content-Length headers are not sent.&lt;br /&gt;
&lt;br /&gt;
== ssi_silent_errors ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssi_module/ssi_silent_errors.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doesn't output &amp;quot;[an error occurred while processing the directive] &amp;quot;, if an error occurs while processing the SSI.&lt;br /&gt;
&lt;br /&gt;
== ssi_types ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_ssi_module/ssi_types.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enables SSI processing for MIME-types in addition to &amp;quot;text/html&amp;quot; types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ssi_value_length ==&lt;br /&gt;
'''syntax:''' ''ssi_value_length length''&lt;br /&gt;
&lt;br /&gt;
'''default:''' ''ssi_value_length 256''&lt;br /&gt;
&lt;br /&gt;
'''context:''' ''http, server, location''&lt;br /&gt;
&lt;br /&gt;
Defines the allowed length of values for parameters used in SSI.&lt;br /&gt;
&lt;br /&gt;
= SSI Commands =&lt;br /&gt;
&lt;br /&gt;
Instruction format is the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--# command parameter1=value parameter2=value ... parameterN=value --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the hash ('#') must immediately follow the two dashes ('--').&lt;br /&gt;
&lt;br /&gt;
The supported SSI commands are listed below.&lt;br /&gt;
&lt;br /&gt;
== block ==&lt;br /&gt;
This command creates a block, which can be used as a silencer in command &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;. Inside the block there can be other SSI commands.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; — the name of the block.  For example: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--# block name=&amp;quot;one&amp;quot; --&amp;gt;&lt;br /&gt;
  the silencer&lt;br /&gt;
  &amp;lt;!--# endblock --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== config ==&lt;br /&gt;
Assigns some configuration parameter for SSI.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;errmsg&amp;lt;/code&amp;gt; — the line which is used as the error during SSI processing. By default, this string is used: &amp;quot;[an error occurred while processing the directive] &amp;quot;&lt;br /&gt;
* &amp;lt;code&amp;gt;timefmt&amp;lt;/code&amp;gt; — the time formatting string, as used in strftime(3). By default, this string is used: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;quot;%A, %d-%b-%Y %H:%M:%S %Z&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
To include time in seconds use the format &amp;quot;%s&amp;quot; as well.&lt;br /&gt;
&lt;br /&gt;
== echo ==&lt;br /&gt;
&lt;br /&gt;
Print a variable.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt; — the name of the variable&lt;br /&gt;
* &amp;lt;code&amp;gt;encoding&amp;lt;/code&amp;gt; — the escape of the variable, there are &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;entity&amp;lt;/code&amp;gt;. Defaults to &amp;lt;code&amp;gt;entity&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; - if the variable is empty, display this string. Defaults to &amp;quot;none&amp;quot;. Example: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--# echo var=&amp;quot;name&amp;quot; default=&amp;quot;no&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
is the same as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--# if expr=&amp;quot;$name&amp;quot; --&amp;gt;&amp;lt;!--# echo var=&amp;quot;name&amp;quot; --&amp;gt;&amp;lt;!--# else --&amp;gt;no&amp;lt;!--# endif --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== if / elif / else / endif ==&lt;br /&gt;
&lt;br /&gt;
Conditionally include text or other directives. Usage: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--# if expr=&amp;quot;...&amp;quot; --&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;!--# elif expr=&amp;quot;...&amp;quot; --&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;!--# else --&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;!--# endif --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Only one level of nesting is possible.&lt;br /&gt;
* ''expr'' — the expression to evaluate. It can be a variable: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--# if expr=&amp;quot;$name&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
A string comparison: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--# if expr=&amp;quot;$name = text&amp;quot; --&amp;gt;&lt;br /&gt;
  &amp;lt;!--# if expr=&amp;quot;$name != text&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Or a regex match: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--# if expr=&amp;quot;$name = /text/&amp;quot; --&amp;gt;&lt;br /&gt;
  &amp;lt;!--# if expr=&amp;quot;$name != /text/&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
	&lt;br /&gt;
If there are variables in the text, they will have their values substituted.&lt;br /&gt;
&lt;br /&gt;
== include ==&lt;br /&gt;
&lt;br /&gt;
Include a document from another source.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;file&amp;lt;/code&amp;gt; — include a file, e.g. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--# include file=&amp;quot;footer.html&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;virtual&amp;lt;/code&amp;gt; — include a request, e.g. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--# include virtual=&amp;quot;/remote/body.php?argument=value&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The target of &amp;quot;file&amp;quot; or &amp;quot;virtual&amp;quot; must be a location in the server configuration.&lt;br /&gt;
&lt;br /&gt;
The distinction between &amp;quot;file&amp;quot; and &amp;quot;virtual&amp;quot; is mostly historical.   &amp;quot;file&amp;quot; is the same as &amp;quot;virtual&amp;quot; with implied &amp;quot;wait&amp;quot; option.   At one point the directives mirrored the Apache equivalents but now they are basically the same operation.  Both can handle a URI and both can serve a static file.&lt;br /&gt;
&lt;br /&gt;
Multiple requests will be issued in parallel. If you need them issued sequentially, use the &amp;quot;wait&amp;quot; option.&lt;br /&gt;
* &amp;lt;code&amp;gt;stub&amp;lt;/code&amp;gt; — The name of the block to use as a default if the request is empty or returns an error. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--# block name=&amp;quot;one&amp;quot; --&amp;gt;&amp;amp;nbsp;&amp;lt;!--# endblock --&amp;gt;&lt;br /&gt;
  &amp;lt;!--# include virtual=&amp;quot;/remote/body.php?argument=value&amp;quot; stub=&amp;quot;one&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;wait&amp;lt;/code&amp;gt; — when set to yes, the rest of the SSI will not be evaluated until the current request is finished. Example: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--# include virtual=&amp;quot;/remote/body.php?argument=value&amp;quot; wait=&amp;quot;yes&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== set ==&lt;br /&gt;
&lt;br /&gt;
Assign a variable.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt; — the variable.&lt;br /&gt;
* &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; — its value. If it contains variable names, these will be evaluated.&lt;br /&gt;
&lt;br /&gt;
= Variables =&lt;br /&gt;
== $date_local ==&lt;br /&gt;
The current time in the local timezone. The config option &amp;quot;timefmt&amp;quot; controls the format.&lt;br /&gt;
&lt;br /&gt;
== $date_gmt ==&lt;br /&gt;
The current time in GMT. The config option &amp;quot;timefmt&amp;quot; controls the format.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_ssi_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpSplitClientsModule</id>
		<title>HttpSplitClientsModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpSplitClientsModule"/>
				<updated>2012-05-02T19:38:36Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* split_clients */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
&lt;br /&gt;
ngx_http_split_clients_module is used to split clients based on some conditions(e.g ip addresses, headers, cookies, etc).&lt;br /&gt;
&lt;br /&gt;
Example configuration:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
http {&lt;br /&gt;
    split_clients &amp;quot;${remote_addr}AAA&amp;quot; $variant {&lt;br /&gt;
        0.5% .one;&lt;br /&gt;
        2.0% .two;&lt;br /&gt;
        - &amp;quot;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    server {&lt;br /&gt;
        location / {&lt;br /&gt;
             index index${variant}.html;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$cookie_..., etc, may be used as a source for splitting. The source string is hashed using MurmurHash2 (as of 1.0.1; previously CRC32) and the percent of the hash is used as source value.&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
&lt;br /&gt;
== split_clients ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_split_clients_module/split_clients.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [http://nginx.org/en/docs/http/ngx_http_split_clients_module.html Original Documentation]&lt;br /&gt;
* [http://www.ruby-forum.com/topic/209653 Naming convention discussion]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpRewriteModule</id>
		<title>HttpRewriteModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpRewriteModule"/>
				<updated>2012-05-02T19:38:00Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* Directives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
This module makes it possible to change URI using regular expressions (PCRE), and to redirect and select configuration depending on variables.&lt;br /&gt;
&lt;br /&gt;
If the directives of this module are given at the server level, then they are carried out before the location of the request is determined. If in that selected location there are further rewrite directives, then they also are carried out. If the URI changed as a result of the execution of directives inside location, then location is again determined for the new URI.&lt;br /&gt;
&lt;br /&gt;
This cycle can be repeated up to 10 times, after which Nginx returns a 500 error.&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== break ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_rewrite_module/break.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Completes the current set of rules. Continue processing within the current location block but do not process any more rewrite directives.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
if ($slow) {&lt;br /&gt;
  limit_rate  10k;&lt;br /&gt;
  break;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== if ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_rewrite_module/if.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''note:''' Before using if please see [[IfIsEvil|the if is evil page]] and consider using [[NginxHttpCoreModule#try_files|try_files]] instead.&lt;br /&gt;
&lt;br /&gt;
Checks the truth of a condition.  If the condition evaluates to true, then the code indicated in the curly braces is carried out and the request is processed in accordance with the configuration within the following block.  The configuration inside the &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;directive is inherited from the previous level.&lt;br /&gt;
&lt;br /&gt;
The condition can be:&lt;br /&gt;
&lt;br /&gt;
* the name of a variable; false values are: empty string (&amp;lt;code&amp;gt;&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;, or any string starting with &amp;quot;0&amp;quot;;&lt;br /&gt;
* a comparison of a variable using the &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt; operators;&lt;br /&gt;
* pattern matching with [http://perldoc.perl.org/perlretut.html regular expressions]:&lt;br /&gt;
** &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt; performs a case-sensitive match&lt;br /&gt;
** &amp;lt;code&amp;gt;~*&amp;lt;/code&amp;gt; performs a case-insensitive match (&amp;lt;code&amp;gt;firefox&amp;lt;/code&amp;gt; matches &amp;lt;code&amp;gt;FireFox&amp;lt;/code&amp;gt;)&lt;br /&gt;
** &amp;lt;code&amp;gt;!~&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;!~*&amp;lt;/code&amp;gt; mean the opposite, &amp;quot;doesn't match&amp;quot;&lt;br /&gt;
* checking for the existence of a file using the &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;!-f&amp;lt;/code&amp;gt; operators;&lt;br /&gt;
* checking for the existence of a directory using &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;!-d&amp;lt;/code&amp;gt;;&lt;br /&gt;
* checking for the existence of a file, directory or symbolic link using &amp;lt;code&amp;gt;-e&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;!-e&amp;lt;/code&amp;gt;;&lt;br /&gt;
* checking whether a file is executable using &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;!-x&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Parts of the regular expressions can be in parentheses, whose value can then later be accessed in the &amp;lt;code&amp;gt;$1&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;$9&amp;lt;/code&amp;gt; variables. See [http://perldoc.perl.org/perlretut.html#Extracting-matches Extracting matches].&lt;br /&gt;
&lt;br /&gt;
Examples of use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
if ($http_user_agent ~ MSIE) {&lt;br /&gt;
  rewrite  ^(.*)$  /msie/$1  break;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ($http_cookie ~* &amp;quot;id=([^;] +)(?:;|$)&amp;quot; ) {&lt;br /&gt;
  set  $id  $1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ($request_method = POST ) {&lt;br /&gt;
  return 405;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ($slow) {&lt;br /&gt;
  limit_rate  10k;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ($invalid_referer) {&lt;br /&gt;
  return   403;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ($args ~ post=140){&lt;br /&gt;
  rewrite ^ http://example.com/ permanent;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
The value of the built-in variable &amp;lt;code&amp;gt;$invalid_referer&amp;lt;/code&amp;gt; is given by the directive [[HttpRefererModule#valid_referers|valid_referers]].&lt;br /&gt;
&lt;br /&gt;
== return ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_rewrite_module/return.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive concludes execution of the rules and returns the status code indicated to client.  It is possible to use the following values: 200, 204, 400, 402-406, 408, 410, 411, 413, 416 and 500-504.  Furthermore, nonstandard code 444 closes the connection without sending any headers.&lt;br /&gt;
&lt;br /&gt;
== rewrite ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_rewrite_module/rewrite.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive changes '''URI''' in accordance with the regular expression and the replacement string. Directives are carried out in order of appearance in the configuration file.&lt;br /&gt;
&lt;br /&gt;
Flags make it possible to end the execution of rewrite directives.&lt;br /&gt;
&lt;br /&gt;
If the replacement string begins with &amp;lt;code&amp;gt;http://&amp;lt;/code&amp;gt; then the client will be redirected, and any further rewrite directives are terminated.&lt;br /&gt;
&lt;br /&gt;
Flags can be any of the following:&lt;br /&gt;
&lt;br /&gt;
* last - completes processing of current rewrite directives and restarts the process (including rewriting) with a search for a match on the URI from all available locations.&lt;br /&gt;
* break - completes processing of current rewrite directives and non-rewrite processing continues within the current location block only. &lt;br /&gt;
* redirect - returns temporary redirect with code 302; it is used if the substituting line begins with &amp;lt;code&amp;gt;http://&amp;lt;/code&amp;gt;&lt;br /&gt;
* permanent - returns permanent redirect with code 301&lt;br /&gt;
- Note that outside location blocks, '''last''' and '''break''' are effectively the same.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
rewrite  ^(/download/.*)/media/(.*)\..*$  $1/mp3/$2.mp3  last;&lt;br /&gt;
rewrite  ^(/download/.*)/audio/(.*)\..*$  $1/mp3/$2.ra   last;&lt;br /&gt;
return   403;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But if we place these directives in location &amp;lt;code&amp;gt;/download/&amp;lt;/code&amp;gt;, then it is necessary to replace flag &amp;quot;last&amp;quot; by &amp;quot;break&amp;quot;, otherwise Nginx will hit the 10 cycle limit and return error 500:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /download/ {&lt;br /&gt;
  rewrite  ^(/download/.*)/media/(.*)\..*$  $1/mp3/$2.mp3  break;&lt;br /&gt;
  rewrite  ^(/download/.*)/audio/(.*)\..*$  $1/mp3/$2.ra   break;&lt;br /&gt;
  return   403;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
If in the line of replacement arguments are indicated, then the rest of the request arguments are appended to them. To avoid having them appended, place a question mark as the last character:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
  rewrite  ^/users/(.*)$  /show?user=$1?  last;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: for curly braces( { and } ), as they are used both in regexes and for block control, to avoid conflicts, regexes with curly braces are to be enclosed with double quotes (or single quotes). For example, to rewrite URLs like: &lt;br /&gt;
&amp;lt;pre&amp;gt;/photos/123456&amp;lt;/pre&amp;gt;&lt;br /&gt;
to:&lt;br /&gt;
&amp;lt;pre&amp;gt;/path/to/photos/12/1234/123456.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
use the following (note the quotes enclosing the regex):&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
rewrite  &amp;quot;/photos/([0-9] {2})([0-9] {2})([0-9] {2})&amp;quot; /path/to/photos/$1/$1$2/$1$2$3.png; &lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you specify a &amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt; at the end of a rewrite then Nginx will drop the original $args (arguments). When using [[HttpCoreModule#.24request_uri|$request_uri]] or [[HttpCoreModule#.24uri|$uri]]&amp;amp;[[HttpCoreModule#.24args|$args]] you should specify the &amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt; at the end of the rewrite to avoid Nginx doubling the query string.&lt;br /&gt;
&lt;br /&gt;
Example using $request_uri in a rewrite from www.example.com to example.com&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;server {&lt;br /&gt;
   server_name www.example.com;&lt;br /&gt;
   rewrite ^ http://example.com$request_uri? permanent;&lt;br /&gt;
}&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also rewrite operates only on path, not parameters.  To rewrite a URL with parameters to another URL, use this instead:&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
if ($args ~ post=100){&lt;br /&gt;
  rewrite ^ http://example.com/new-address.html? permanent;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
Note that the $args variable is '''not''' decoded, unlike URIs during [[NginxHttpCoreModule#location|location matching]].&lt;br /&gt;
&lt;br /&gt;
Also note that named subexpressions &amp;lt;code&amp;gt;(?&amp;lt;name&amp;gt;)&amp;lt;/code&amp;gt; should be used when accessing variables from a [[HttpMapModule#map|map]] using regular expressions (patterns begininng with &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt;) because the map runs on demand and will override &amp;lt;code&amp;gt;$1&amp;lt;/code&amp;gt; (even when named subexpressions are used in the map).&lt;br /&gt;
&lt;br /&gt;
== rewrite_log ==&lt;br /&gt;
{{Directive|name=rewrite_log|args=on {{!}} off|default=off|vars=no|context=http, server, if-in-server, location, if-in-location}}&lt;br /&gt;
&lt;br /&gt;
When enabled, outputs information about rewrites to the error log at ''notice'' level.&lt;br /&gt;
&lt;br /&gt;
== set ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_rewrite_module/set.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Directive establishes value for the variable indicated. As the value it is possible to use a text, variables and their combination.&lt;br /&gt;
&lt;br /&gt;
You can use '''set''' to define a new variable. Note that you can't set the value of a ''$http_xxx'' header variable.&lt;br /&gt;
&lt;br /&gt;
== uninitialized_variable_warn ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_rewrite_module/uninitialized_variable_warn.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enables or disables logging of warnings about noninitialized variables.&lt;br /&gt;
&lt;br /&gt;
= Internal implementation =&lt;br /&gt;
&lt;br /&gt;
Internally, the rewrite directives are compiled at the time the configuration file is loaded into internal codes, usable during the request by the interpreter.&lt;br /&gt;
&lt;br /&gt;
This interpreter is a simple stack virtual machine. For example, the directive:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /download/ {&lt;br /&gt;
  if ($forbidden) {&lt;br /&gt;
    return   403;&lt;br /&gt;
  }&lt;br /&gt;
  if ($slow) {&lt;br /&gt;
    limit_rate  10k;&lt;br /&gt;
  }&lt;br /&gt;
  rewrite  ^/(download/.*)/media/(.*)\..*$  /$1/mp3/$2.mp3  break;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
will be compiled into this sequence:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  variable $forbidden&lt;br /&gt;
  checking to zero&lt;br /&gt;
  recovery 403&lt;br /&gt;
  completion of entire code&lt;br /&gt;
  variable $slow&lt;br /&gt;
  checking to zero&lt;br /&gt;
  checkings of regular expression&lt;br /&gt;
  copying &amp;quot;/&amp;quot;&lt;br /&gt;
  copying $1&lt;br /&gt;
  copying &amp;quot;/mp3/&amp;quot;&lt;br /&gt;
  copying $2&lt;br /&gt;
  copying &amp;quot;.mp3&amp;quot;&lt;br /&gt;
  completion of regular expression&lt;br /&gt;
  completion of entire sequence&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that there is no code for directive limit_rate, since it does not refer to module ngx_http_rewrite_module. The &amp;quot;if&amp;quot; block exists in the same part of the configuration as the &amp;quot;location&amp;quot; directive.&lt;br /&gt;
&lt;br /&gt;
If $slow is true, then what's inside the &amp;quot;if&amp;quot; block is evaluated, and in this configuration limit_rate it is equal to 10k.&lt;br /&gt;
&lt;br /&gt;
Directive:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
  rewrite  ^/(download/.*)/media/(.*)\..*$  /$1/mp3/$2.mp3  break;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
It is possible to reduce the sequence, if in the regular expression we include the first slash inside the parentheses:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
  rewrite  ^(/download/.*)/media/(.*)\..*$  $1/mp3/$2.mp3  break;&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
then the sequence will appear like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  checking regular expression&lt;br /&gt;
  copying $1&lt;br /&gt;
  copying &amp;quot;/mp3/&amp;quot;&lt;br /&gt;
  copying $2&lt;br /&gt;
  copying &amp;quot;.mp3&amp;quot;&lt;br /&gt;
  completion of regular expression&lt;br /&gt;
  completion of entire code&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_rewrite_module.html Original Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://www.pcre.org/pcre.txt PCRE Man Page in Plain Text]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/HttpRefererModule</id>
		<title>HttpRefererModule</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/HttpRefererModule"/>
				<updated>2012-05-02T19:37:11Z</updated>
		
		<summary type="html">&lt;p&gt;Admin: /* valid_referers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synopsis =&lt;br /&gt;
This module makes it possible to block access to the site with the incorrect values of line &amp;quot;Referer&amp;quot; in the request header. &lt;br /&gt;
&lt;br /&gt;
Keep in mind that it is easy to spoof this header; therefore, the purpose of using of this module consists not in 100% blocking of these requests, but in the blocking of the mass flow of requests, made from typical browsers. Also, consider that the typical browser does not always provide a &amp;quot;Referer&amp;quot; header, even for correct requests.&lt;br /&gt;
&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location /photos/ {&lt;br /&gt;
  valid_referers none blocked www.mydomain.com mydomain.com;&lt;br /&gt;
&lt;br /&gt;
  if ($invalid_referer) {&lt;br /&gt;
    return   403;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Directives =&lt;br /&gt;
== valid_referers ==&lt;br /&gt;
&amp;lt;include wikitext nopre src=&amp;quot;http://wiki.nginx.org/nginx.org/http/ngx_http_referer_module/valid_referers.txt&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This directive assigns a value of 0 or 1 to the variable &amp;lt;code&amp;gt;$invalid_referer&amp;lt;/code&amp;gt; based on the contents of the &amp;lt;code&amp;gt;referer&amp;lt;/code&amp;gt; header.  &lt;br /&gt;
&lt;br /&gt;
You can use this to help reduce deep-linking from outside sites.  If &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header is not accounted for in the list of &amp;lt;code&amp;gt;valid_referers&amp;lt;/code&amp;gt;, then &amp;lt;code&amp;gt;$invalid_referer&amp;lt;/code&amp;gt; will be set to 1 (see example above).&lt;br /&gt;
&lt;br /&gt;
The parameters can be as follows:&lt;br /&gt;
* &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; means the absence of &amp;quot;Referer&amp;quot; header.&lt;br /&gt;
* &amp;lt;code&amp;gt;blocked&amp;lt;/code&amp;gt; means masked &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header by firewall, for example, &amp;quot;Referer: XXXXXXX&amp;quot;.&lt;br /&gt;
* server_names is a list of one or more servers. From version 0.5.33 onwards, * wildcards can be used in the server names.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[http://nginx.org/en/docs/http/ngx_http_referer_module.html Original Documentation]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>
