diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5726efe
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+.log
+logs/access.log
+logs/error.log
\ No newline at end of file
diff --git a/0.注意上方地址栏路径必须为纯英文 b/0.注意上方地址栏路径必须为纯英文
new file mode 100644
index 0000000..e69de29
diff --git a/1.第一次运行程序时弹窗处理.PNG b/1.第一次运行程序时弹窗处理.PNG
new file mode 100644
index 0000000..cf7f414
Binary files /dev/null and b/1.第一次运行程序时弹窗处理.PNG differ
diff --git a/2.请同意防火墙权限(重要).PNG b/2.请同意防火墙权限(重要).PNG
new file mode 100644
index 0000000..edc249b
Binary files /dev/null and b/2.请同意防火墙权限(重要).PNG differ
diff --git a/3.可视化工具说明.PNG b/3.可视化工具说明.PNG
new file mode 100644
index 0000000..e0e049a
Binary files /dev/null and b/3.可视化工具说明.PNG differ
diff --git a/4.可视化工具(这个操作简单).exe b/4.可视化工具(这个操作简单).exe
new file mode 100644
index 0000000..ba538cf
Binary files /dev/null and b/4.可视化工具(这个操作简单).exe differ
diff --git a/5.调试工具(这个功能全).bat b/5.调试工具(这个功能全).bat
new file mode 100644
index 0000000..3bf87dd
--- /dev/null
+++ b/5.调试工具(这个功能全).bat
@@ -0,0 +1,165 @@
+
+@echo off
+rem ṩWindowsnginxرչ
+
+echo ==================begin========================
+
+cls
+::ngxin ڵ̷
+set NGINX_PATH=%~d0
+
+::nginx Ŀ¼
+set NGINX_DIR=%~dp0
+::color 0a
+TITLE Nginx ű v1.0
+
+CLS
+
+echo.
+echo. ***************************
+echo. ***************************
+echo. *** Nginx ű v1.0 ***
+echo. *** Mashiro ***
+echo. *** https://2heng.xin ***
+echo. ***************************
+echo. ***************************
+echo.
+
+:MENU
+
+echo. ***** nginx list ******
+::tasklist|findstr /i "nginx.exe"
+tasklist /fi "imagename eq nginx.exe"
+
+echo.
+
+ if ERRORLEVEL 1 (
+ echo nginx.exe
+ ) else (
+ echo nginx.exe
+ )
+
+echo.
+::*************************************************************************************************************
+echo.
+ echo. [1] Nginx
+ echo. [2] رNginx
+ echo. [3] Nginx
+ echo. [4] ˢ¿̨
+ echo. [5] ¼Nginxļ
+ echo. [6] nginxļ
+ echo. [7] 鿴nginx version
+ echo. [0]
+echo.
+
+echo.ѡ:
+set /p ID=
+ IF "%id%"=="1" GOTO start
+ IF "%id%"=="2" GOTO stop
+ IF "%id%"=="3" GOTO restart
+ IF "%id%"=="4" GOTO MENU
+ IF "%id%"=="5" GOTO reloadConf
+ IF "%id%"=="6" GOTO checkConf
+ IF "%id%"=="7" GOTO showVersion
+ IF "%id%"=="0" EXIT
+PAUSE
+
+::*************************************************************************************************************
+::
+:start
+ call :startNginx
+ GOTO MENU
+
+::ֹͣ
+:stop
+ call :shutdownNginx
+ GOTO MENU
+
+::
+:restart
+ call :shutdownNginx
+ call :startNginx
+ GOTO MENU
+
+::ļ
+:checkConf
+ call :checkConfNginx
+ GOTO MENU
+
+::¼Nginxļ
+:reloadConf
+ call :checkConfNginx
+ call :reloadConfNginx
+ GOTO MENU
+
+::ʾnginx汾
+:showVersion
+ call :showVersionNginx
+ GOTO MENU
+
+
+::*************************************************************************************
+::ײ
+::*************************************************************************************
+:shutdownNginx
+ echo.
+ echo.رNginx......
+ taskkill /F /IM nginx.exe > nul
+ echo.OK,رnginx
+ goto :eof
+
+:startNginx
+ echo.
+ echo.Nginx......
+ IF NOT EXIST "%NGINX_DIR%nginx.exe" (
+ echo "%NGINX_DIR%nginx.exe"
+ goto :eof
+ )
+
+ %NGINX_PATH%
+ cd "%NGINX_DIR%"
+
+ IF EXIST "%NGINX_DIR%nginx.exe" (
+ echo "start '' nginx.exe"
+ start "" nginx.exe
+ )
+ echo.OK
+ goto :eof
+
+
+:checkConfNginx
+ echo.
+ echo. nginx ļ......
+ IF NOT EXIST "%NGINX_DIR%nginx.exe" (
+ echo "%NGINX_DIR%nginx.exe"
+ goto :eof
+ )
+
+ %NGINX_PATH%
+ cd "%NGINX_DIR%"
+ nginx -t -c conf/nginx.conf
+
+ goto :eof
+
+::¼ nginx ļ
+:reloadConfNginx
+ echo.
+ echo.¼ nginx ļ......
+ IF NOT EXIST "%NGINX_DIR%nginx.exe" (
+ echo "%NGINX_DIR%nginx.exe"
+ goto :eof
+ )
+
+ %NGINX_PATH%
+ cd "%NGINX_DIR%"
+ nginx -s reload
+
+ goto :eof
+
+::ʾnginx汾
+:showVersionNginx
+ echo.
+ %NGINX_PATH%
+ cd "%NGINX_DIR%"
+ nginx -V
+ goto :eof
\ No newline at end of file
diff --git a/6.日志上传注意事项.txt b/6.日志上传注意事项.txt
new file mode 100644
index 0000000..71ac083
--- /dev/null
+++ b/6.日志上传注意事项.txt
@@ -0,0 +1,3 @@
+logs ļΪ־ļaccess.log Ϊ־ķʼ¼error.log Ϊ Nginx ־
+
+ͨṩ־ɣ־ʱעⱣ˽
\ No newline at end of file
diff --git a/7.更多信息及更新.html b/7.更多信息及更新.html
new file mode 100644
index 0000000..8632784
--- /dev/null
+++ b/7.更多信息及更新.html
@@ -0,0 +1,7 @@
+
+
+
+by Mashiro
+
+ʱ䣺2018/9/17
+
\ No newline at end of file
diff --git a/BouncyCastle.dll b/BouncyCastle.dll
new file mode 100644
index 0000000..a563671
Binary files /dev/null and b/BouncyCastle.dll differ
diff --git a/README.md b/README.md
index e661731..9338aae 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,21 @@
# Pixiv-Nginx
+
+[![GitHub release](https://img.shields.io/github/release/mashirozx/Pixiv-Nginx.svg?style=flat-square)](https://github.com/mashirozx/Pixiv-Nginx/releases/latest)
+[![Github commits (since latest release)](https://img.shields.io/github/commits-since/mashirozx/Pixiv-Nginx/latest.svg?style=flat-square)](https://github.com/mashirozx/Pixiv-Nginx/commits/)
+
+
+ʹ˵
+
+### Ҫ
+
+֧
+
+
+֧
+
+
+PayPal
+
+
+### Lisence
+This is a fork of [nginx/nginx](https://github.com/nginx/nginx), so you should always follow its [2-clause BSD-like license](http://nginx.org/LICENSE).
\ No newline at end of file
diff --git a/ca.cer b/ca.cer
new file mode 100644
index 0000000..ef06415
--- /dev/null
+++ b/ca.cer
@@ -0,0 +1,16 @@
+-----BEGIN CERTIFICATE-----
+MIICfzCCAegCCQCAFez22a+CnTANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMC
+Q04xETAPBgNVBAgMCFNoYW5naGFpMREwDwYDVQQHDAhTaGFuZ2hhaTEUMBIGA1UE
+CgwLTWFzaGlybyBMTEMxEDAOBgNVBAsMB01hc2hpcm8xJjAkBgNVBAMMHU1hc2hp
+cm8gSW50ZXJuZXQgQXV0aG9yaXR5IENBMB4XDTE4MDkxNjA4MzQxNVoXDTI4MDkx
+MzA4MzQxNVowgYMxCzAJBgNVBAYTAkNOMREwDwYDVQQIDAhTaGFuZ2hhaTERMA8G
+A1UEBwwIU2hhbmdoYWkxFDASBgNVBAoMC01hc2hpcm8gTExDMRAwDgYDVQQLDAdN
+YXNoaXJvMSYwJAYDVQQDDB1NYXNoaXJvIEludGVybmV0IEF1dGhvcml0eSBDQTCB
+nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAugoR9OzVDTN0lXToRH+kQ2qjV+UI
+tXR6WVXwYyyqcihrhe5A9SQ21LJRoyZlSOVdg85QvhBJeLgOgtGVZZla1z6TjMDx
+rfTIjHKRVj9/kyujkxtY0w2iZnz1pd31A+UJdQwnDMeyBZagRVQD/7xn1wV72bS8
+vyhEh0Q/ZUZGxrcCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAX+noK9G1vvNFB8ZXq
+MNYf7qimQTjxTBGQLijrNCyiqOkw8YW1BgdnaV0Vc97L7nqRx1XGEAvPHiGEC/Xk
+xu9Mj+gwTEFRXBauoPBFElnBuQaePYmCHB+eCODPLwkgkhh3/HUr0385bTvVwoqX
+AsTNS/eeFFtZ88cLcdCBbupWiw==
+-----END CERTIFICATE-----
diff --git a/conf/ca/ca.cer b/conf/ca/ca.cer
new file mode 100644
index 0000000..ef06415
--- /dev/null
+++ b/conf/ca/ca.cer
@@ -0,0 +1,16 @@
+-----BEGIN CERTIFICATE-----
+MIICfzCCAegCCQCAFez22a+CnTANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMC
+Q04xETAPBgNVBAgMCFNoYW5naGFpMREwDwYDVQQHDAhTaGFuZ2hhaTEUMBIGA1UE
+CgwLTWFzaGlybyBMTEMxEDAOBgNVBAsMB01hc2hpcm8xJjAkBgNVBAMMHU1hc2hp
+cm8gSW50ZXJuZXQgQXV0aG9yaXR5IENBMB4XDTE4MDkxNjA4MzQxNVoXDTI4MDkx
+MzA4MzQxNVowgYMxCzAJBgNVBAYTAkNOMREwDwYDVQQIDAhTaGFuZ2hhaTERMA8G
+A1UEBwwIU2hhbmdoYWkxFDASBgNVBAoMC01hc2hpcm8gTExDMRAwDgYDVQQLDAdN
+YXNoaXJvMSYwJAYDVQQDDB1NYXNoaXJvIEludGVybmV0IEF1dGhvcml0eSBDQTCB
+nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAugoR9OzVDTN0lXToRH+kQ2qjV+UI
+tXR6WVXwYyyqcihrhe5A9SQ21LJRoyZlSOVdg85QvhBJeLgOgtGVZZla1z6TjMDx
+rfTIjHKRVj9/kyujkxtY0w2iZnz1pd31A+UJdQwnDMeyBZagRVQD/7xn1wV72bS8
+vyhEh0Q/ZUZGxrcCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAX+noK9G1vvNFB8ZXq
+MNYf7qimQTjxTBGQLijrNCyiqOkw8YW1BgdnaV0Vc97L7nqRx1XGEAvPHiGEC/Xk
+xu9Mj+gwTEFRXBauoPBFElnBuQaePYmCHB+eCODPLwkgkhh3/HUr0385bTvVwoqX
+AsTNS/eeFFtZ88cLcdCBbupWiw==
+-----END CERTIFICATE-----
diff --git a/conf/ca/pixiv.net.crt b/conf/ca/pixiv.net.crt
new file mode 100644
index 0000000..4a4e695
--- /dev/null
+++ b/conf/ca/pixiv.net.crt
@@ -0,0 +1,71 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 5 (0x5)
+ Signature Algorithm: sha256WithRSAEncryption
+ Issuer: C=CN, ST=Shanghai, L=Shanghai, O=Mashiro LLC, OU=Mashiro, CN=Mashiro Internet Authority CA
+ Validity
+ Not Before: Sep 16 16:57:32 2018 GMT
+ Not After : Sep 13 16:57:32 2028 GMT
+ Subject: C=CN, ST=Shanghai, O=Mashiro LLC, OU=Mashiro, CN=*.pixiv.net
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ Public-Key: (2048 bit)
+ Modulus:
+ 00:a9:84:77:44:2f:77:cf:5a:de:59:4c:ce:15:c1:
+ bc:db:6d:43:1e:6f:f2:2e:46:f5:a4:74:bc:f6:92:
+ 60:77:b2:cd:79:bf:d7:65:2b:54:78:48:6d:ab:2f:
+ 6b:f8:63:c1:69:a1:1d:b2:b5:78:e4:2b:b7:ad:62:
+ d6:14:aa:7a:24:97:72:d2:81:f7:e3:d7:b4:76:1f:
+ 94:de:74:5c:b0:b1:6c:31:21:2f:c4:3e:58:41:3b:
+ ab:06:e5:8a:28:80:fd:c3:a1:b5:dc:db:c7:4f:62:
+ bd:cc:ff:ee:b5:e9:21:5f:9b:88:20:ab:c3:36:f9:
+ 82:22:3c:88:6e:d9:69:cd:ad:c0:2b:5e:19:68:e7:
+ ff:2a:64:90:24:32:07:ab:2c:67:a9:ab:2d:75:ef:
+ 85:26:df:37:67:c3:53:31:0e:9c:8c:58:aa:24:f3:
+ e2:5f:2b:1c:fc:72:45:34:94:9b:b4:69:cb:ef:a3:
+ 6d:8f:f7:ab:4c:83:77:84:e8:ac:e6:b7:17:58:e8:
+ c2:47:ce:08:35:32:9a:45:79:15:e4:f4:07:92:ee:
+ 79:64:cc:41:6b:5d:a4:4c:46:72:2f:5a:7a:66:38:
+ df:3d:58:8f:02:79:4b:ea:0f:8b:0c:33:cc:41:79:
+ 0f:3c:16:91:0c:67:44:6d:42:7e:1c:cb:2f:d6:1f:
+ 6b:fb
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints:
+ CA:FALSE
+ X509v3 Subject Alternative Name:
+ DNS:*.pixiv.net, DNS:pixiv.net, DNS:*.secure.pixiv.net, DNS:pximg.net, DNS:*.pximg.net, DNS:wikipedia.org, DNS:*.wikipedia.org, DNS:google.com, DNS:*.google.com, IP Address:127.0.0.1
+ X509v3 Subject Key Identifier:
+ A7:E1:07:03:F4:8A:62:A6:32:C3:98:CC:C1:3E:37:33:56:22:DA:21
+ Signature Algorithm: sha256WithRSAEncryption
+ 8d:e9:35:fa:68:71:c0:12:f5:d1:4c:2a:91:29:96:e5:7c:26:
+ 1c:05:66:29:31:42:c1:9f:fb:2f:6c:2f:47:20:1d:dd:d2:c4:
+ 7f:4d:df:a6:0b:91:13:bc:38:28:87:aa:a5:f5:6b:88:fb:04:
+ 92:ad:d2:3f:82:70:5e:de:e5:bd:74:f2:86:c0:22:61:61:30:
+ e1:02:02:1d:89:6d:97:38:cb:0b:32:bb:37:32:08:7f:5e:ab:
+ 15:79:93:e6:8f:d0:40:78:5b:b0:a2:b0:d2:e5:04:01:65:74:
+ bf:57:42:ea:9c:5b:93:c6:96:26:34:bc:f0:d7:46:6a:ad:7c:
+ 2f:92
+-----BEGIN CERTIFICATE-----
+MIIDnDCCAwWgAwIBAgIBBTANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCQ04x
+ETAPBgNVBAgMCFNoYW5naGFpMREwDwYDVQQHDAhTaGFuZ2hhaTEUMBIGA1UECgwL
+TWFzaGlybyBMTEMxEDAOBgNVBAsMB01hc2hpcm8xJjAkBgNVBAMMHU1hc2hpcm8g
+SW50ZXJuZXQgQXV0aG9yaXR5IENBMB4XDTE4MDkxNjE2NTczMloXDTI4MDkxMzE2
+NTczMlowXjELMAkGA1UEBhMCQ04xETAPBgNVBAgMCFNoYW5naGFpMRQwEgYDVQQK
+DAtNYXNoaXJvIExMQzEQMA4GA1UECwwHTWFzaGlybzEUMBIGA1UEAwwLKi5waXhp
+di5uZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCphHdEL3fPWt5Z
+TM4VwbzbbUMeb/IuRvWkdLz2kmB3ss15v9dlK1R4SG2rL2v4Y8FpoR2ytXjkK7et
+YtYUqnokl3LSgffj17R2H5TedFywsWwxIS/EPlhBO6sG5YoogP3DobXc28dPYr3M
+/+616SFfm4ggq8M2+YIiPIhu2WnNrcArXhlo5/8qZJAkMgerLGepqy1174Um3zdn
+w1MxDpyMWKok8+JfKxz8ckU0lJu0acvvo22P96tMg3eE6KzmtxdY6MJHzgg1MppF
+eRXk9AeS7nlkzEFrXaRMRnIvWnpmON89WI8CeUvqD4sMM8xBeQ88FpEMZ0RtQn4c
+yy/WH2v7AgMBAAGjgb8wgbwwCQYDVR0TBAIwADCBjwYDVR0RBIGHMIGEggsqLnBp
+eGl2Lm5ldIIJcGl4aXYubmV0ghIqLnNlY3VyZS5waXhpdi5uZXSCCXB4aW1nLm5l
+dIILKi5weGltZy5uZXSCDXdpa2lwZWRpYS5vcmeCDyoud2lraXBlZGlhLm9yZ4IK
+Z29vZ2xlLmNvbYIMKi5nb29nbGUuY29thwR/AAABMB0GA1UdDgQWBBSn4QcD9Ipi
+pjLDmMzBPjczViLaITANBgkqhkiG9w0BAQsFAAOBgQCN6TX6aHHAEvXRTCqRKZbl
+fCYcBWYpMULBn/svbC9HIB3d0sR/Td+mC5ETvDgoh6ql9WuI+wSSrdI/gnBe3uW9
+dPKGwCJhYTDhAgIdiW2XOMsLMrs3Mgh/XqsVeZPmj9BAeFuworDS5QQBZXS/V0Lq
+nFuTxpYmNLzw10ZqrXwvkg==
+-----END CERTIFICATE-----
diff --git a/conf/ca/pixiv.net.key b/conf/ca/pixiv.net.key
new file mode 100644
index 0000000..a31503a
--- /dev/null
+++ b/conf/ca/pixiv.net.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCphHdEL3fPWt5Z
+TM4VwbzbbUMeb/IuRvWkdLz2kmB3ss15v9dlK1R4SG2rL2v4Y8FpoR2ytXjkK7et
+YtYUqnokl3LSgffj17R2H5TedFywsWwxIS/EPlhBO6sG5YoogP3DobXc28dPYr3M
+/+616SFfm4ggq8M2+YIiPIhu2WnNrcArXhlo5/8qZJAkMgerLGepqy1174Um3zdn
+w1MxDpyMWKok8+JfKxz8ckU0lJu0acvvo22P96tMg3eE6KzmtxdY6MJHzgg1MppF
+eRXk9AeS7nlkzEFrXaRMRnIvWnpmON89WI8CeUvqD4sMM8xBeQ88FpEMZ0RtQn4c
+yy/WH2v7AgMBAAECggEAWSrltYcmhXrt5JlC+izLk7x4hsUp5e/LfHMvhp/egHgc
+H0OrIHtXVmH61gX+zExky5RFU+CjM5pPZrPLmllGIINNka9t3npzYYMhQpaAvyzE
+lV84igilUcL6JomNT9ryIPqp9//fakGtRu0E+skjle/w/gZ7jCpYqnue5HgWcGpu
+cUTABq96kRzY8winNZcfbBw2uIdpKGDXMxWnepVbhNNzXpns0ivJ7+MrUSKLX1a2
+nCPQkRjAZHYMgRIKfPbSwcyRcHHsO5CyCY71uiqFBy2aDtamD/r9QOFTEdvTMddf
+aP1RU8eSb2mDDrWPySbkYTGuehcfXcroxBFkQnRn0QKBgQDbB6qyIF/bVVATZBpR
+TBu1CQuiowEbvSm+XCA2vig4A5IJ6JnUaS+wc2BBM2RUBLYbHKb4lEGGmpnGGHCD
+sxy64PhAvzWqbn9hvU3HwDwPZzUqWGHq9yaFbgD/LK/Vl57ow/oRV7a0u9hAJOPx
+mR70uqvfr6HTMbCmjY/k4TfvAwKBgQDGIVpLo+Bjz62c8YJEiOqQjB1yFuqRP4OH
+K6MmyMEc6H2619RyyrDbkMNVpwHNwChTUNcwAqFYvEqRGrvQ5dO8whYxEli/0cIR
+jOgzbGLXst3nIbzm30MeknnoWVCrMiqXeCNtwnUifKS4WvBs0Bdn4KBZTiytNN6K
+xhZJPgvhqQKBgDADKDnPuvN7agg2I0a65j/y8af/D1kjSClATJdza6GLttGROVdE
+j32gbPMd7to0Bi8/QqKu7QYykY7JALD97EhS1FhtEbiAbE/ijVBCJWhC+XaE1UIK
+V1lcWb+V7h1mFSF1BDYVAinwG2FENOta41xGJzLrbw+6jryTv30umXI9AoGBAL2k
+JPJrjBbdLJchDwgcaTAr/O88Ag8+1N0npoUz+Kt72QRjG4U4fynaGS29qdtPRwng
+QehBTEBMEa9sAEOGCDIPMACOSAZqdrAnyAWYg89j9EQMJexx3KPBnhAIlU8XuG68
+3mRrkYSN+3g+CwyL7StPdQul6Nts1GnOCnzWd7bpAoGBANkO5h+oUhd4y8tCX3vX
+mT98imjvCnvW1KTKa9YHL0OEH5aEPKDzUwHyqtUJCsw7YTk0+z/XtiVm9/V/1t76
+Dllt7KaEI6MszXD8QgBDpkCp8N2zmTT5URKbV33odGXYJPcA908RiqDCBmw3zxjZ
+cCSu7rDx8R2i8DFU9frXY81l
+-----END PRIVATE KEY-----
diff --git a/conf/cert.pem b/conf/cert.pem
new file mode 100644
index 0000000..1e493d2
--- /dev/null
+++ b/conf/cert.pem
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE-----
+MIICxDCCAaygAwIBAgIIVHb1I+71EegwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE
+AwwEV25tcDAeFw0xODA5MTYxNTMxMDZaFw0yODA5MTYxNTMxMDZaMA8xDTALBgNV
+BAMMBFdubXAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDF6c6zZZyP
+zref4Nmd6N0aqIQLeJcwhpSZNiw0S44+oROrZ8aVfoRLkBbe2uGDwpjh9G9C+RaX
+QukIuvQY0iPycM69oEk8xLfK2qLRn8gPjmmzLoqjkUDtvzGU9aYcNP5wkeOzQHFy
+w5ZEjqv9ZxrhTSeZr6m6cRNA2nexUjSp2j8cRcecXMxgfFdN4T2VkXwo0PSm5cb7
+tw3lSmOMaHEB156I7JP8zeacLiN6tmsqcq9bdl4BFzWNjMCYH+d3B78zhzRLiZjp
+aqDQwc/LggkbVwFgSeYIFgWGhztFMxCgItMYJqdgShK/xK09A5PFebONbEGRuejw
+88cPYCHkWFx3AgMBAAGjJDAiMCAGCWCGSAGG+EIBDQQTDBFHZW5lcmF0ZWQgYnkg
+V25tcDANBgkqhkiG9w0BAQsFAAOCAQEAAD+Vl7W/kX+fD6bZp4BBRHe9eYE7XM9B
+aft8KR6kxzGXdQqIT1dAfFeTd49XeLLMXeVl9idGHAinl64ZCrDyjEDEPsIAoYf2
+nzgpTrv9qExghRXp/1jTRZ6HBHEXHHLlDBHCfw+pHw6R53W28RN7Em7vvu222DpT
+0mRO1CSm+OCRuw1pPq5Z9SiNDI52bB6XIyq+QE7jNuQCWG8eRV66fVBdEr99wL2e
+6ZTVfKKM3sfvmHNY45roRhqTRyibA9X7fnz4fBa8uBmbSCBAfebI6HvzStInqJOQ
+DPdQyX9Ky87CRCyCRZFQJFe1eUfaMMQMN/pFNYiS518NFtIzSMHZZg==
+-----END CERTIFICATE-----
diff --git a/conf/fastcgi.conf b/conf/fastcgi.conf
new file mode 100644
index 0000000..091738c
--- /dev/null
+++ b/conf/fastcgi.conf
@@ -0,0 +1,26 @@
+
+fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+fastcgi_param QUERY_STRING $query_string;
+fastcgi_param REQUEST_METHOD $request_method;
+fastcgi_param CONTENT_TYPE $content_type;
+fastcgi_param CONTENT_LENGTH $content_length;
+
+fastcgi_param SCRIPT_NAME $fastcgi_script_name;
+fastcgi_param REQUEST_URI $request_uri;
+fastcgi_param DOCUMENT_URI $document_uri;
+fastcgi_param DOCUMENT_ROOT $document_root;
+fastcgi_param SERVER_PROTOCOL $server_protocol;
+fastcgi_param REQUEST_SCHEME $scheme;
+fastcgi_param HTTPS $https if_not_empty;
+
+fastcgi_param GATEWAY_INTERFACE CGI/1.1;
+fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
+
+fastcgi_param REMOTE_ADDR $remote_addr;
+fastcgi_param REMOTE_PORT $remote_port;
+fastcgi_param SERVER_ADDR $server_addr;
+fastcgi_param SERVER_PORT $server_port;
+fastcgi_param SERVER_NAME $server_name;
+
+# PHP only, required if PHP was built with --enable-force-cgi-redirect
+fastcgi_param REDIRECT_STATUS 200;
diff --git a/conf/fastcgi_params b/conf/fastcgi_params
new file mode 100644
index 0000000..28decb9
--- /dev/null
+++ b/conf/fastcgi_params
@@ -0,0 +1,25 @@
+
+fastcgi_param QUERY_STRING $query_string;
+fastcgi_param REQUEST_METHOD $request_method;
+fastcgi_param CONTENT_TYPE $content_type;
+fastcgi_param CONTENT_LENGTH $content_length;
+
+fastcgi_param SCRIPT_NAME $fastcgi_script_name;
+fastcgi_param REQUEST_URI $request_uri;
+fastcgi_param DOCUMENT_URI $document_uri;
+fastcgi_param DOCUMENT_ROOT $document_root;
+fastcgi_param SERVER_PROTOCOL $server_protocol;
+fastcgi_param REQUEST_SCHEME $scheme;
+fastcgi_param HTTPS $https if_not_empty;
+
+fastcgi_param GATEWAY_INTERFACE CGI/1.1;
+fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
+
+fastcgi_param REMOTE_ADDR $remote_addr;
+fastcgi_param REMOTE_PORT $remote_port;
+fastcgi_param SERVER_ADDR $server_addr;
+fastcgi_param SERVER_PORT $server_port;
+fastcgi_param SERVER_NAME $server_name;
+
+# PHP only, required if PHP was built with --enable-force-cgi-redirect
+fastcgi_param REDIRECT_STATUS 200;
diff --git a/conf/key.pem b/conf/key.pem
new file mode 100644
index 0000000..7a8123b
--- /dev/null
+++ b/conf/key.pem
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAxenOs2Wcj863n+DZnejdGqiEC3iXMIaUmTYsNEuOPqETq2fG
+lX6ES5AW3trhg8KY4fRvQvkWl0LpCLr0GNIj8nDOvaBJPMS3ytqi0Z/ID45psy6K
+o5FA7b8xlPWmHDT+cJHjs0BxcsOWRI6r/Wca4U0nma+punETQNp3sVI0qdo/HEXH
+nFzMYHxXTeE9lZF8KND0puXG+7cN5UpjjGhxAdeeiOyT/M3mnC4jerZrKnKvW3Ze
+ARc1jYzAmB/ndwe/M4c0S4mY6Wqg0MHPy4IJG1cBYEnmCBYFhoc7RTMQoCLTGCan
+YEoSv8StPQOTxXmzjWxBkbno8PPHD2Ah5FhcdwIDAQABAoIBAC5fI3bGMqJBSaX0
+vZhxtMinvlSfuzD7/3pMhpv0Lg5/mEe7h3yEicPYrXsm5tsD7+VVa/JRwZjMbSSG
+BWaBajnGc7JbiX1rDDND+g1Ktknq0NpSZ9p+UKvD9f6Udgi64/kFPchEq7A7ooxK
+r4Kus04h0UsBrS+JifzSk2PhQoSfPDQ+RtzUy9qTh8dTj4CUf3CYBTMPDPmbvSRx
+qwsNOqrcMf9Wn/g2jk6FFtnjsN+lE3x2Zy+kuYDNfGNnUDg9XghalUXFOxnFqFcO
+UxttpbT3qoMOtk4agIh8HJ9697CgN7OfLWZ+dxpJYbOLiLLr6IotiEWI0bStTC4t
+CXRaZxUCgYEA7V10bfad9zpvilHfa+Q73z5eBfyfTAJYMvo/FhjKPgSqsBtkIIYz
+3GvZy4JqZbWYNvmvBCzQGehtRsZpzkKviUWDxYEbHDfL7lNh7DHrcjmrlUFWhT3I
+ZYgIPQASwpMPwRz6Xsc2T2YgBDRAX25PSGAY6tBAymGTarLltxOBHO0CgYEA1XN0
+UBWiR40KWjhHBowqSqYFb95LcqtE4pE8158tGqOAZDp9s3n16phNpvOlF9CH9ebC
+3SAPTk0ShNUkbcDb+mI0L8ZUkKIJOgA6ESJS9X++OEkK6Yqt8U0u8WgI79atQGoB
+6Zee5NbQP43223CwJE4K0YhDX+d+bAZMoGzMFnMCgYB3fQciX/ZvQSRrLgHZj0Aw
+hnXQb7ZFDh0WNHFTj1En3TOLiY5i7QvoVwaBcvpajwq8Cf73jBOKJz3zVehnY5x3
+7t2BrBdYoiHvrFvsCckrbCqa7RQ/6LUbn1n+Uy4ecueIYC0NTx1g5NkTJLaPE7mn
+hnCkrAchmfMa0EnhWlkxlQKBgCLKcLjk7dBvwrI13g3JJtOH//bd6rpEBDRRq/MR
+NM7Uu4aaqgZo6JZWQMHnkI8zJBYGiNh180i180DHZOqmtrQ28X6f+wSgBJT5mH1W
+dOMi8SRHc4nhWryr8ezTIjHFcfO/05P5bKKsCMFzKDtYQL2KIuVIKoMlPkvpMvAr
+C5DVAoGBAIQ/B0/pr9HDr23Vdnwd5har7rEomat+1LXAdtcJAGF3yIxMNSxqn7Ep
+KNGMfj5x6BrfXtujmCKbqcaXV0mpDIXpNyqJViCa6t6Z3Hjk/c4vBBods5ssHFeL
+W+62bkHmws1OFb61d/ko+GojOchLxeoLIQ41vIdzQQzv+Th8w8VM
+-----END RSA PRIVATE KEY-----
diff --git a/conf/koi-utf b/conf/koi-utf
new file mode 100644
index 0000000..e7974ff
--- /dev/null
+++ b/conf/koi-utf
@@ -0,0 +1,109 @@
+
+# This map is not a full koi8-r <> utf8 map: it does not contain
+# box-drawing and some other characters. Besides this map contains
+# several koi8-u and Byelorussian letters which are not in koi8-r.
+# If you need a full and standard map, use contrib/unicode2nginx/koi-utf
+# map instead.
+
+charset_map koi8-r utf-8 {
+
+ 80 E282AC ; # euro
+
+ 95 E280A2 ; # bullet
+
+ 9A C2A0 ; #
+
+ 9E C2B7 ; # ·
+
+ A3 D191 ; # small yo
+ A4 D194 ; # small Ukrainian ye
+
+ A6 D196 ; # small Ukrainian i
+ A7 D197 ; # small Ukrainian yi
+
+ AD D291 ; # small Ukrainian soft g
+ AE D19E ; # small Byelorussian short u
+
+ B0 C2B0 ; # °
+
+ B3 D081 ; # capital YO
+ B4 D084 ; # capital Ukrainian YE
+
+ B6 D086 ; # capital Ukrainian I
+ B7 D087 ; # capital Ukrainian YI
+
+ B9 E28496 ; # numero sign
+
+ BD D290 ; # capital Ukrainian soft G
+ BE D18E ; # capital Byelorussian short U
+
+ BF C2A9 ; # (C)
+
+ C0 D18E ; # small yu
+ C1 D0B0 ; # small a
+ C2 D0B1 ; # small b
+ C3 D186 ; # small ts
+ C4 D0B4 ; # small d
+ C5 D0B5 ; # small ye
+ C6 D184 ; # small f
+ C7 D0B3 ; # small g
+ C8 D185 ; # small kh
+ C9 D0B8 ; # small i
+ CA D0B9 ; # small j
+ CB D0BA ; # small k
+ CC D0BB ; # small l
+ CD D0BC ; # small m
+ CE D0BD ; # small n
+ CF D0BE ; # small o
+
+ D0 D0BF ; # small p
+ D1 D18F ; # small ya
+ D2 D180 ; # small r
+ D3 D181 ; # small s
+ D4 D182 ; # small t
+ D5 D183 ; # small u
+ D6 D0B6 ; # small zh
+ D7 D0B2 ; # small v
+ D8 D18C ; # small soft sign
+ D9 D18B ; # small y
+ DA D0B7 ; # small z
+ DB D188 ; # small sh
+ DC D18D ; # small e
+ DD D189 ; # small shch
+ DE D187 ; # small ch
+ DF D18A ; # small hard sign
+
+ E0 D0AE ; # capital YU
+ E1 D090 ; # capital A
+ E2 D091 ; # capital B
+ E3 D0A6 ; # capital TS
+ E4 D094 ; # capital D
+ E5 D095 ; # capital YE
+ E6 D0A4 ; # capital F
+ E7 D093 ; # capital G
+ E8 D0A5 ; # capital KH
+ E9 D098 ; # capital I
+ EA D099 ; # capital J
+ EB D09A ; # capital K
+ EC D09B ; # capital L
+ ED D09C ; # capital M
+ EE D09D ; # capital N
+ EF D09E ; # capital O
+
+ F0 D09F ; # capital P
+ F1 D0AF ; # capital YA
+ F2 D0A0 ; # capital R
+ F3 D0A1 ; # capital S
+ F4 D0A2 ; # capital T
+ F5 D0A3 ; # capital U
+ F6 D096 ; # capital ZH
+ F7 D092 ; # capital V
+ F8 D0AC ; # capital soft sign
+ F9 D0AB ; # capital Y
+ FA D097 ; # capital Z
+ FB D0A8 ; # capital SH
+ FC D0AD ; # capital E
+ FD D0A9 ; # capital SHCH
+ FE D0A7 ; # capital CH
+ FF D0AA ; # capital hard sign
+}
diff --git a/conf/koi-win b/conf/koi-win
new file mode 100644
index 0000000..72afabe
--- /dev/null
+++ b/conf/koi-win
@@ -0,0 +1,103 @@
+
+charset_map koi8-r windows-1251 {
+
+ 80 88 ; # euro
+
+ 95 95 ; # bullet
+
+ 9A A0 ; #
+
+ 9E B7 ; # ·
+
+ A3 B8 ; # small yo
+ A4 BA ; # small Ukrainian ye
+
+ A6 B3 ; # small Ukrainian i
+ A7 BF ; # small Ukrainian yi
+
+ AD B4 ; # small Ukrainian soft g
+ AE A2 ; # small Byelorussian short u
+
+ B0 B0 ; # °
+
+ B3 A8 ; # capital YO
+ B4 AA ; # capital Ukrainian YE
+
+ B6 B2 ; # capital Ukrainian I
+ B7 AF ; # capital Ukrainian YI
+
+ B9 B9 ; # numero sign
+
+ BD A5 ; # capital Ukrainian soft G
+ BE A1 ; # capital Byelorussian short U
+
+ BF A9 ; # (C)
+
+ C0 FE ; # small yu
+ C1 E0 ; # small a
+ C2 E1 ; # small b
+ C3 F6 ; # small ts
+ C4 E4 ; # small d
+ C5 E5 ; # small ye
+ C6 F4 ; # small f
+ C7 E3 ; # small g
+ C8 F5 ; # small kh
+ C9 E8 ; # small i
+ CA E9 ; # small j
+ CB EA ; # small k
+ CC EB ; # small l
+ CD EC ; # small m
+ CE ED ; # small n
+ CF EE ; # small o
+
+ D0 EF ; # small p
+ D1 FF ; # small ya
+ D2 F0 ; # small r
+ D3 F1 ; # small s
+ D4 F2 ; # small t
+ D5 F3 ; # small u
+ D6 E6 ; # small zh
+ D7 E2 ; # small v
+ D8 FC ; # small soft sign
+ D9 FB ; # small y
+ DA E7 ; # small z
+ DB F8 ; # small sh
+ DC FD ; # small e
+ DD F9 ; # small shch
+ DE F7 ; # small ch
+ DF FA ; # small hard sign
+
+ E0 DE ; # capital YU
+ E1 C0 ; # capital A
+ E2 C1 ; # capital B
+ E3 D6 ; # capital TS
+ E4 C4 ; # capital D
+ E5 C5 ; # capital YE
+ E6 D4 ; # capital F
+ E7 C3 ; # capital G
+ E8 D5 ; # capital KH
+ E9 C8 ; # capital I
+ EA C9 ; # capital J
+ EB CA ; # capital K
+ EC CB ; # capital L
+ ED CC ; # capital M
+ EE CD ; # capital N
+ EF CE ; # capital O
+
+ F0 CF ; # capital P
+ F1 DF ; # capital YA
+ F2 D0 ; # capital R
+ F3 D1 ; # capital S
+ F4 D2 ; # capital T
+ F5 D3 ; # capital U
+ F6 C6 ; # capital ZH
+ F7 C2 ; # capital V
+ F8 DC ; # capital soft sign
+ F9 DB ; # capital Y
+ FA C7 ; # capital Z
+ FB D8 ; # capital SH
+ FC DD ; # capital E
+ FD D9 ; # capital SHCH
+ FE D7 ; # capital CH
+ FF DA ; # capital hard sign
+}
diff --git a/conf/mime.types b/conf/mime.types
new file mode 100644
index 0000000..8a2348a
--- /dev/null
+++ b/conf/mime.types
@@ -0,0 +1,95 @@
+
+types {
+ text/html html htm shtml;
+ text/css css;
+ text/xml xml;
+ image/gif gif;
+ image/jpeg jpeg jpg;
+ application/javascript js;
+ application/atom+xml atom;
+ application/rss+xml rss;
+
+ text/mathml mml;
+ text/plain txt;
+ text/vnd.sun.j2me.app-descriptor jad;
+ text/vnd.wap.wml wml;
+ text/x-component htc;
+
+ image/png png;
+ image/svg+xml svg svgz;
+ image/tiff tif tiff;
+ image/vnd.wap.wbmp wbmp;
+ image/webp webp;
+ image/x-icon ico;
+ image/x-jng jng;
+ image/x-ms-bmp bmp;
+
+ application/font-woff woff;
+ application/java-archive jar war ear;
+ application/json json;
+ application/mac-binhex40 hqx;
+ application/msword doc;
+ application/pdf pdf;
+ application/postscript ps eps ai;
+ application/rtf rtf;
+ application/vnd.apple.mpegurl m3u8;
+ application/vnd.google-earth.kml+xml kml;
+ application/vnd.google-earth.kmz kmz;
+ application/vnd.ms-excel xls;
+ application/vnd.ms-fontobject eot;
+ application/vnd.ms-powerpoint ppt;
+ application/vnd.oasis.opendocument.graphics odg;
+ application/vnd.oasis.opendocument.presentation odp;
+ application/vnd.oasis.opendocument.spreadsheet ods;
+ application/vnd.oasis.opendocument.text odt;
+ application/vnd.openxmlformats-officedocument.presentationml.presentation
+ pptx;
+ application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
+ xlsx;
+ application/vnd.openxmlformats-officedocument.wordprocessingml.document
+ docx;
+ application/vnd.wap.wmlc wmlc;
+ application/x-7z-compressed 7z;
+ application/x-cocoa cco;
+ application/x-java-archive-diff jardiff;
+ application/x-java-jnlp-file jnlp;
+ application/x-makeself run;
+ application/x-perl pl pm;
+ application/x-pilot prc pdb;
+ application/x-rar-compressed rar;
+ application/x-redhat-package-manager rpm;
+ application/x-sea sea;
+ application/x-shockwave-flash swf;
+ application/x-stuffit sit;
+ application/x-tcl tcl tk;
+ application/x-x509-ca-cert der pem crt;
+ application/x-xpinstall xpi;
+ application/xhtml+xml xhtml;
+ application/xspf+xml xspf;
+ application/zip zip;
+
+ application/octet-stream bin exe dll;
+ application/octet-stream deb;
+ application/octet-stream dmg;
+ application/octet-stream iso img;
+ application/octet-stream msi msp msm;
+
+ audio/midi mid midi kar;
+ audio/mpeg mp3;
+ audio/ogg ogg;
+ audio/x-m4a m4a;
+ audio/x-realaudio ra;
+
+ video/3gpp 3gpp 3gp;
+ video/mp2t ts;
+ video/mp4 mp4;
+ video/mpeg mpeg mpg;
+ video/quicktime mov;
+ video/webm webm;
+ video/x-flv flv;
+ video/x-m4v m4v;
+ video/x-mng mng;
+ video/x-ms-asf asx asf;
+ video/x-ms-wmv wmv;
+ video/x-msvideo avi;
+}
diff --git a/conf/nginx.conf b/conf/nginx.conf
new file mode 100644
index 0000000..43f00e8
--- /dev/null
+++ b/conf/nginx.conf
@@ -0,0 +1,233 @@
+
+#user nobody;
+worker_processes 1;
+
+#error_log logs/error.log;
+#error_log logs/error.log notice;
+#error_log logs/error.log info;
+
+#pid logs/nginx.pid;
+
+
+events {
+ worker_connections 1024;
+}
+
+
+http {
+ include mime.types;
+ default_type application/octet-stream;
+
+ #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
+ # '$status $body_bytes_sent "$http_referer" '
+ # '"$http_user_agent" "$http_x_forwarded_for"';
+
+ #access_log logs/access.log main;
+
+ sendfile on;
+ #tcp_nopush on;
+
+ #keepalive_timeout 0;
+ keepalive_timeout 65;
+
+ server_names_hash_max_size 512;
+ server_names_hash_bucket_size 1024;
+
+ #gzip on;
+
+ upstream www-pixiv-net {
+ server 210.129.120.46:443;
+ server 210.129.120.52:443;
+ server 210.129.120.50:443;
+ }
+
+ upstream sketch-pixiv-net {
+ server 210.140.174.37:443;
+ server 210.140.170.179:443;
+ server 210.140.175.130:443;
+ }
+
+ upstream imgaz-pixiv-net {
+ server 210.140.131.145:443;
+ server 210.140.131.144:443;
+ server 210.140.131.147:443;
+ server 210.140.131.153:443;
+ }
+
+ upstream i-pximg-net {
+ server 210.140.92.140:443;
+ server 210.140.92.137:443;
+ server 210.140.92.139:443;
+ server 210.140.92.142:443;
+ server 210.140.92.134:443;
+ server 210.140.92.141:443;
+ server 210.140.92.143:443;
+ server 210.140.92.135:443;
+ server 210.140.92.136:443;
+ }
+
+ server {
+ #listen 80;
+ listen 443 ssl;
+ server_name pixiv.net;
+ server_name www.pixiv.net;
+ server_name ssl.pixiv.net;
+ server_name accounts.pixiv.net;
+ server_name touch.pixiv.net;
+ server_name oauth.secure.pixiv.net;
+
+ ssl on;
+ ssl_certificate ca/pixiv.net.crt;
+ ssl_certificate_key ca/pixiv.net.key;
+
+ client_max_body_size 50M;
+
+ location / {
+ proxy_pass https://www-pixiv-net;
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Real_IP $remote_addr;
+ proxy_set_header User-Agent $http_user_agent;
+ proxy_set_header Accept-Encoding '';
+ proxy_buffering off;
+ }
+ }
+
+ server {
+ listen 443 ssl;
+ server_name i.pximg.net;
+
+ ssl on;
+ ssl_certificate ca/pixiv.net.crt;
+ ssl_certificate_key ca/pixiv.net.key;
+
+ location / {
+ proxy_pass https://i-pximg-net;
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Real_IP $remote_addr;
+ proxy_set_header User-Agent $http_user_agent;
+ proxy_set_header Accept-Encoding '';
+ proxy_buffering off;
+ }
+ }
+
+ server {
+ listen 443 ssl;
+ server_name sketch.pixiv.net;
+
+ ssl on;
+ ssl_certificate ca/pixiv.net.crt;
+ ssl_certificate_key ca/pixiv.net.key;
+
+ location / {
+ proxy_pass https://sketch-pixiv-net;
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Real_IP $remote_addr;
+ proxy_set_header User-Agent $http_user_agent;
+ proxy_set_header Accept-Encoding '';
+ proxy_buffering off;
+ }
+
+ # Proxying WebSockets
+ location /ws/ {
+ proxy_pass https://sketch-pixiv-net;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+ proxy_set_header Host $host;
+ }
+ }
+
+ server {
+ listen 443 ssl;
+ server_name factory.pixiv.net;
+
+ ssl on;
+ ssl_certificate ca/pixiv.net.crt;
+ ssl_certificate_key ca/pixiv.net.key;
+
+ location / {
+ proxy_pass https://210.140.131.180/;
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Real_IP $remote_addr;
+ proxy_set_header User-Agent $http_user_agent;
+ proxy_set_header Accept-Encoding '';
+ proxy_buffering off;
+ }
+ }
+
+ server {
+ listen 443 ssl;
+ server_name dic.pixiv.net;
+ server_name en-dic.pixiv.net;
+ server_name sensei.pixiv.net;
+ server_name fanbox.pixiv.net;
+ server_name payment.pixiv.net.pixiv.net;
+
+ ssl on;
+ ssl_certificate ca/pixiv.net.crt;
+ ssl_certificate_key ca/pixiv.net.key;
+
+ location / {
+ proxy_pass https://210.129.120.50/;
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Real_IP $remote_addr;
+ proxy_set_header User-Agent $http_user_agent;
+ proxy_set_header Accept-Encoding '';
+ proxy_buffering off;
+ }
+ }
+
+ server {
+ listen 443 ssl;
+ server_name imgaz.pixiv.net;
+ server_name comic.pixiv.net;
+ server_name novel.pixiv.net;
+
+ ssl on;
+ ssl_certificate ca/pixiv.net.crt;
+ ssl_certificate_key ca/pixiv.net.key;
+
+ location / {
+ proxy_pass https://imgaz-pixiv-net;
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Real_IP $remote_addr;
+ proxy_set_header User-Agent $http_user_agent;
+ proxy_set_header Accept-Encoding '';
+ proxy_buffering off;
+ }
+ }
+
+ server {
+ listen 443 ssl;
+ server_name zh.wikipedia.org;
+ server_name zh-yue.wikipedia.org;
+ server_name wuu.wikipedia.org;
+ server_name ug.wikipedia.org;
+ server_name ja.wikipedia.org;
+ server_name zh.wikinews.org;
+ server_name zh.m.wikipedia.org;
+ server_name ug.m.wikipedia.org;
+ server_name zh.m.wikinews.org;
+
+ ssl on;
+ ssl_certificate ca/pixiv.net.crt;
+ ssl_certificate_key ca/pixiv.net.key;
+
+ location / {
+ proxy_pass https://103.102.166.224/;
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Real_IP $remote_addr;
+ proxy_set_header User-Agent $http_user_agent;
+ proxy_set_header Accept-Encoding '';
+ proxy_buffering off;
+ }
+ }
+
+}
diff --git a/conf/scgi_params b/conf/scgi_params
new file mode 100644
index 0000000..6d4ce4f
--- /dev/null
+++ b/conf/scgi_params
@@ -0,0 +1,17 @@
+
+scgi_param REQUEST_METHOD $request_method;
+scgi_param REQUEST_URI $request_uri;
+scgi_param QUERY_STRING $query_string;
+scgi_param CONTENT_TYPE $content_type;
+
+scgi_param DOCUMENT_URI $document_uri;
+scgi_param DOCUMENT_ROOT $document_root;
+scgi_param SCGI 1;
+scgi_param SERVER_PROTOCOL $server_protocol;
+scgi_param REQUEST_SCHEME $scheme;
+scgi_param HTTPS $https if_not_empty;
+
+scgi_param REMOTE_ADDR $remote_addr;
+scgi_param REMOTE_PORT $remote_port;
+scgi_param SERVER_PORT $server_port;
+scgi_param SERVER_NAME $server_name;
diff --git a/conf/uwsgi_params b/conf/uwsgi_params
new file mode 100644
index 0000000..09c732c
--- /dev/null
+++ b/conf/uwsgi_params
@@ -0,0 +1,17 @@
+
+uwsgi_param QUERY_STRING $query_string;
+uwsgi_param REQUEST_METHOD $request_method;
+uwsgi_param CONTENT_TYPE $content_type;
+uwsgi_param CONTENT_LENGTH $content_length;
+
+uwsgi_param REQUEST_URI $request_uri;
+uwsgi_param PATH_INFO $document_uri;
+uwsgi_param DOCUMENT_ROOT $document_root;
+uwsgi_param SERVER_PROTOCOL $server_protocol;
+uwsgi_param REQUEST_SCHEME $scheme;
+uwsgi_param HTTPS $https if_not_empty;
+
+uwsgi_param REMOTE_ADDR $remote_addr;
+uwsgi_param REMOTE_PORT $remote_port;
+uwsgi_param SERVER_PORT $server_port;
+uwsgi_param SERVER_NAME $server_name;
diff --git a/conf/win-utf b/conf/win-utf
new file mode 100644
index 0000000..ed8bc00
--- /dev/null
+++ b/conf/win-utf
@@ -0,0 +1,126 @@
+
+# This map is not a full windows-1251 <> utf8 map: it does not
+# contain Serbian and Macedonian letters. If you need a full map,
+# use contrib/unicode2nginx/win-utf map instead.
+
+charset_map windows-1251 utf-8 {
+
+ 82 E2809A ; # single low-9 quotation mark
+
+ 84 E2809E ; # double low-9 quotation mark
+ 85 E280A6 ; # ellipsis
+ 86 E280A0 ; # dagger
+ 87 E280A1 ; # double dagger
+ 88 E282AC ; # euro
+ 89 E280B0 ; # per mille
+
+ 91 E28098 ; # left single quotation mark
+ 92 E28099 ; # right single quotation mark
+ 93 E2809C ; # left double quotation mark
+ 94 E2809D ; # right double quotation mark
+ 95 E280A2 ; # bullet
+ 96 E28093 ; # en dash
+ 97 E28094 ; # em dash
+
+ 99 E284A2 ; # trade mark sign
+
+ A0 C2A0 ; #
+ A1 D18E ; # capital Byelorussian short U
+ A2 D19E ; # small Byelorussian short u
+
+ A4 C2A4 ; # currency sign
+ A5 D290 ; # capital Ukrainian soft G
+ A6 C2A6 ; # borken bar
+ A7 C2A7 ; # section sign
+ A8 D081 ; # capital YO
+ A9 C2A9 ; # (C)
+ AA D084 ; # capital Ukrainian YE
+ AB C2AB ; # left-pointing double angle quotation mark
+ AC C2AC ; # not sign
+ AD C2AD ; # soft hypen
+ AE C2AE ; # (R)
+ AF D087 ; # capital Ukrainian YI
+
+ B0 C2B0 ; # °
+ B1 C2B1 ; # plus-minus sign
+ B2 D086 ; # capital Ukrainian I
+ B3 D196 ; # small Ukrainian i
+ B4 D291 ; # small Ukrainian soft g
+ B5 C2B5 ; # micro sign
+ B6 C2B6 ; # pilcrow sign
+ B7 C2B7 ; # ·
+ B8 D191 ; # small yo
+ B9 E28496 ; # numero sign
+ BA D194 ; # small Ukrainian ye
+ BB C2BB ; # right-pointing double angle quotation mark
+
+ BF D197 ; # small Ukrainian yi
+
+ C0 D090 ; # capital A
+ C1 D091 ; # capital B
+ C2 D092 ; # capital V
+ C3 D093 ; # capital G
+ C4 D094 ; # capital D
+ C5 D095 ; # capital YE
+ C6 D096 ; # capital ZH
+ C7 D097 ; # capital Z
+ C8 D098 ; # capital I
+ C9 D099 ; # capital J
+ CA D09A ; # capital K
+ CB D09B ; # capital L
+ CC D09C ; # capital M
+ CD D09D ; # capital N
+ CE D09E ; # capital O
+ CF D09F ; # capital P
+
+ D0 D0A0 ; # capital R
+ D1 D0A1 ; # capital S
+ D2 D0A2 ; # capital T
+ D3 D0A3 ; # capital U
+ D4 D0A4 ; # capital F
+ D5 D0A5 ; # capital KH
+ D6 D0A6 ; # capital TS
+ D7 D0A7 ; # capital CH
+ D8 D0A8 ; # capital SH
+ D9 D0A9 ; # capital SHCH
+ DA D0AA ; # capital hard sign
+ DB D0AB ; # capital Y
+ DC D0AC ; # capital soft sign
+ DD D0AD ; # capital E
+ DE D0AE ; # capital YU
+ DF D0AF ; # capital YA
+
+ E0 D0B0 ; # small a
+ E1 D0B1 ; # small b
+ E2 D0B2 ; # small v
+ E3 D0B3 ; # small g
+ E4 D0B4 ; # small d
+ E5 D0B5 ; # small ye
+ E6 D0B6 ; # small zh
+ E7 D0B7 ; # small z
+ E8 D0B8 ; # small i
+ E9 D0B9 ; # small j
+ EA D0BA ; # small k
+ EB D0BB ; # small l
+ EC D0BC ; # small m
+ ED D0BD ; # small n
+ EE D0BE ; # small o
+ EF D0BF ; # small p
+
+ F0 D180 ; # small r
+ F1 D181 ; # small s
+ F2 D182 ; # small t
+ F3 D183 ; # small u
+ F4 D184 ; # small f
+ F5 D185 ; # small kh
+ F6 D186 ; # small ts
+ F7 D187 ; # small ch
+ F8 D188 ; # small sh
+ F9 D189 ; # small shch
+ FA D18A ; # small hard sign
+ FB D18B ; # small y
+ FC D18C ; # small soft sign
+ FD D18D ; # small e
+ FE D18E ; # small yu
+ FF D18F ; # small ya
+}
diff --git a/contrib/README b/contrib/README
new file mode 100644
index 0000000..fec4b20
--- /dev/null
+++ b/contrib/README
@@ -0,0 +1,21 @@
+
+geo2nginx.pl by Andrei Nigmatulin
+
+ The perl script to convert CSV geoip database ( free download
+ at http://www.maxmind.com/app/geoip_country ) to format, suitable
+ for use by the ngx_http_geo_module.
+
+
+unicode2nginx by Maxim Dounin
+
+ The perl script to convert unicode mappings ( available
+ at http://www.unicode.org/Public/MAPPINGS/ ) to the nginx
+ configuration file format.
+ Two generated full maps for windows-1251 and koi8-r.
+
+
+vim by Evan Miller
+
+ Syntax highlighting of nginx configuration for vim, to be
+ placed into ~/.vim/.
+
diff --git a/contrib/geo2nginx.pl b/contrib/geo2nginx.pl
new file mode 100644
index 0000000..bc8af46
--- /dev/null
+++ b/contrib/geo2nginx.pl
@@ -0,0 +1,58 @@
+#!/usr/bin/perl -w
+
+# (c) Andrei Nigmatulin, 2005
+#
+# this script provided "as is", without any warranties. use it at your own risk.
+#
+# special thanx to Andrew Sitnikov for perl port
+#
+# this script converts CSV geoip database (free download at http://www.maxmind.com/app/geoip_country)
+# to format, suitable for use with nginx_http_geo module (http://sysoev.ru/nginx)
+#
+# for example, line with ip range
+#
+# "62.16.68.0","62.16.127.255","1041253376","1041268735","RU","Russian Federation"
+#
+# will be converted to four subnetworks:
+#
+# 62.16.68.0/22 RU;
+# 62.16.72.0/21 RU;
+# 62.16.80.0/20 RU;
+# 62.16.96.0/19 RU;
+
+
+use warnings;
+use strict;
+
+while( ){
+ if (/"[^"]+","[^"]+","([^"]+)","([^"]+)","([^"]+)"/){
+ print_subnets($1, $2, $3);
+ }
+}
+
+sub print_subnets {
+ my ($a1, $a2, $c) = @_;
+ my $l;
+ while ($a1 <= $a2) {
+ for ($l = 0; ($a1 & (1 << $l)) == 0 && ($a1 + ((1 << ($l + 1)) - 1)) <= $a2; $l++){};
+ print long2ip($a1) . "/" . (32 - $l) . " " . $c . ";\n";
+ $a1 += (1 << $l);
+ }
+}
+
+sub long2ip {
+ my $ip = shift;
+
+ my $str = 0;
+
+ $str = ($ip & 255);
+
+ $ip >>= 8;
+ $str = ($ip & 255).".$str";
+
+ $ip >>= 8;
+ $str = ($ip & 255).".$str";
+
+ $ip >>= 8;
+ $str = ($ip & 255).".$str";
+}
diff --git a/contrib/unicode2nginx/koi-utf b/contrib/unicode2nginx/koi-utf
new file mode 100644
index 0000000..48853af
--- /dev/null
+++ b/contrib/unicode2nginx/koi-utf
@@ -0,0 +1,131 @@
+charset_map koi8-r utf-8 {
+
+ 80 E29480 ; # BOX DRAWINGS LIGHT HORIZONTAL
+ 81 E29482 ; # BOX DRAWINGS LIGHT VERTICAL
+ 82 E2948C ; # BOX DRAWINGS LIGHT DOWN AND RIGHT
+ 83 E29490 ; # BOX DRAWINGS LIGHT DOWN AND LEFT
+ 84 E29494 ; # BOX DRAWINGS LIGHT UP AND RIGHT
+ 85 E29498 ; # BOX DRAWINGS LIGHT UP AND LEFT
+ 86 E2949C ; # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ 87 E294A4 ; # BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ 88 E294AC ; # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ 89 E294B4 ; # BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ 8A E294BC ; # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ 8B E29680 ; # UPPER HALF BLOCK
+ 8C E29684 ; # LOWER HALF BLOCK
+ 8D E29688 ; # FULL BLOCK
+ 8E E2968C ; # LEFT HALF BLOCK
+ 8F E29690 ; # RIGHT HALF BLOCK
+ 90 E29691 ; # LIGHT SHADE
+ 91 E29692 ; # MEDIUM SHADE
+ 92 E29693 ; # DARK SHADE
+ 93 E28CA0 ; # TOP HALF INTEGRAL
+ 94 E296A0 ; # BLACK SQUARE
+ 95 E28899 ; # BULLET OPERATOR
+ 96 E2889A ; # SQUARE ROOT
+ 97 E28988 ; # ALMOST EQUAL TO
+ 98 E289A4 ; # LESS-THAN OR EQUAL TO
+ 99 E289A5 ; # GREATER-THAN OR EQUAL TO
+ 9A C2A0 ; # NO-BREAK SPACE
+ 9B E28CA1 ; # BOTTOM HALF INTEGRAL
+ 9C C2B0 ; # DEGREE SIGN
+ 9D C2B2 ; # SUPERSCRIPT TWO
+ 9E C2B7 ; # MIDDLE DOT
+ 9F C3B7 ; # DIVISION SIGN
+ A0 E29590 ; # BOX DRAWINGS DOUBLE HORIZONTAL
+ A1 E29591 ; # BOX DRAWINGS DOUBLE VERTICAL
+ A2 E29592 ; # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ A3 D191 ; # CYRILLIC SMALL LETTER IO
+ A4 E29593 ; # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+ A5 E29594 ; # BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ A6 E29595 ; # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+ A7 E29596 ; # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+ A8 E29597 ; # BOX DRAWINGS DOUBLE DOWN AND LEFT
+ A9 E29598 ; # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ AA E29599 ; # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ AB E2959A ; # BOX DRAWINGS DOUBLE UP AND RIGHT
+ AC E2959B ; # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ AD E2959C ; # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+ AE E2959D ; # BOX DRAWINGS DOUBLE UP AND LEFT
+ AF E2959E ; # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ B0 E2959F ; # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ B1 E295A0 ; # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ B2 E295A1 ; # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ B3 D081 ; # CYRILLIC CAPITAL LETTER IO
+ B4 E295A2 ; # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+ B5 E295A3 ; # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ B6 E295A4 ; # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+ B7 E295A5 ; # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+ B8 E295A6 ; # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ B9 E295A7 ; # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ BA E295A8 ; # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ BB E295A9 ; # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ BC E295AA ; # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ BD E295AB ; # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+ BE E295AC ; # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ BF C2A9 ; # COPYRIGHT SIGN
+ C0 D18E ; # CYRILLIC SMALL LETTER YU
+ C1 D0B0 ; # CYRILLIC SMALL LETTER A
+ C2 D0B1 ; # CYRILLIC SMALL LETTER BE
+ C3 D186 ; # CYRILLIC SMALL LETTER TSE
+ C4 D0B4 ; # CYRILLIC SMALL LETTER DE
+ C5 D0B5 ; # CYRILLIC SMALL LETTER IE
+ C6 D184 ; # CYRILLIC SMALL LETTER EF
+ C7 D0B3 ; # CYRILLIC SMALL LETTER GHE
+ C8 D185 ; # CYRILLIC SMALL LETTER HA
+ C9 D0B8 ; # CYRILLIC SMALL LETTER I
+ CA D0B9 ; # CYRILLIC SMALL LETTER SHORT I
+ CB D0BA ; # CYRILLIC SMALL LETTER KA
+ CC D0BB ; # CYRILLIC SMALL LETTER EL
+ CD D0BC ; # CYRILLIC SMALL LETTER EM
+ CE D0BD ; # CYRILLIC SMALL LETTER EN
+ CF D0BE ; # CYRILLIC SMALL LETTER O
+ D0 D0BF ; # CYRILLIC SMALL LETTER PE
+ D1 D18F ; # CYRILLIC SMALL LETTER YA
+ D2 D180 ; # CYRILLIC SMALL LETTER ER
+ D3 D181 ; # CYRILLIC SMALL LETTER ES
+ D4 D182 ; # CYRILLIC SMALL LETTER TE
+ D5 D183 ; # CYRILLIC SMALL LETTER U
+ D6 D0B6 ; # CYRILLIC SMALL LETTER ZHE
+ D7 D0B2 ; # CYRILLIC SMALL LETTER VE
+ D8 D18C ; # CYRILLIC SMALL LETTER SOFT SIGN
+ D9 D18B ; # CYRILLIC SMALL LETTER YERU
+ DA D0B7 ; # CYRILLIC SMALL LETTER ZE
+ DB D188 ; # CYRILLIC SMALL LETTER SHA
+ DC D18D ; # CYRILLIC SMALL LETTER E
+ DD D189 ; # CYRILLIC SMALL LETTER SHCHA
+ DE D187 ; # CYRILLIC SMALL LETTER CHE
+ DF D18A ; # CYRILLIC SMALL LETTER HARD SIGN
+ E0 D0AE ; # CYRILLIC CAPITAL LETTER YU
+ E1 D090 ; # CYRILLIC CAPITAL LETTER A
+ E2 D091 ; # CYRILLIC CAPITAL LETTER BE
+ E3 D0A6 ; # CYRILLIC CAPITAL LETTER TSE
+ E4 D094 ; # CYRILLIC CAPITAL LETTER DE
+ E5 D095 ; # CYRILLIC CAPITAL LETTER IE
+ E6 D0A4 ; # CYRILLIC CAPITAL LETTER EF
+ E7 D093 ; # CYRILLIC CAPITAL LETTER GHE
+ E8 D0A5 ; # CYRILLIC CAPITAL LETTER HA
+ E9 D098 ; # CYRILLIC CAPITAL LETTER I
+ EA D099 ; # CYRILLIC CAPITAL LETTER SHORT I
+ EB D09A ; # CYRILLIC CAPITAL LETTER KA
+ EC D09B ; # CYRILLIC CAPITAL LETTER EL
+ ED D09C ; # CYRILLIC CAPITAL LETTER EM
+ EE D09D ; # CYRILLIC CAPITAL LETTER EN
+ EF D09E ; # CYRILLIC CAPITAL LETTER O
+ F0 D09F ; # CYRILLIC CAPITAL LETTER PE
+ F1 D0AF ; # CYRILLIC CAPITAL LETTER YA
+ F2 D0A0 ; # CYRILLIC CAPITAL LETTER ER
+ F3 D0A1 ; # CYRILLIC CAPITAL LETTER ES
+ F4 D0A2 ; # CYRILLIC CAPITAL LETTER TE
+ F5 D0A3 ; # CYRILLIC CAPITAL LETTER U
+ F6 D096 ; # CYRILLIC CAPITAL LETTER ZHE
+ F7 D092 ; # CYRILLIC CAPITAL LETTER VE
+ F8 D0AC ; # CYRILLIC CAPITAL LETTER SOFT SIGN
+ F9 D0AB ; # CYRILLIC CAPITAL LETTER YERU
+ FA D097 ; # CYRILLIC CAPITAL LETTER ZE
+ FB D0A8 ; # CYRILLIC CAPITAL LETTER SHA
+ FC D0AD ; # CYRILLIC CAPITAL LETTER E
+ FD D0A9 ; # CYRILLIC CAPITAL LETTER SHCHA
+ FE D0A7 ; # CYRILLIC CAPITAL LETTER CHE
+ FF D0AA ; # CYRILLIC CAPITAL LETTER HARD SIGN
+}
diff --git a/contrib/unicode2nginx/unicode-to-nginx.pl b/contrib/unicode2nginx/unicode-to-nginx.pl
new file mode 100644
index 0000000..d113fed
--- /dev/null
+++ b/contrib/unicode2nginx/unicode-to-nginx.pl
@@ -0,0 +1,48 @@
+#!/usr/bin/perl -w
+
+# Convert unicode mappings to nginx configuration file format.
+
+# You may find useful mappings in various places, including
+# unicode.org official site:
+#
+# http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT
+# http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT
+
+# Needs perl 5.6 or later.
+
+# Written by Maxim Dounin, mdounin@mdounin.ru
+
+###############################################################################
+
+require 5.006;
+
+while (<>) {
+ # Skip comments and empty lines
+
+ next if /^#/;
+ next if /^\s*$/;
+ chomp;
+
+ # Convert mappings
+
+ if (/^\s*0x(..)\s*0x(....)\s*(#.*)/) {
+ # Mapping "#"
+ my $cs_code = $1;
+ my $un_code = $2;
+ my $un_name = $3;
+
+ # Produce UTF-8 sequence from character code;
+
+ my $un_utf8 = join('',
+ map { sprintf("%02X", $_) }
+ unpack("U0C*", pack("U", hex($un_code)))
+ );
+
+ print " $cs_code $un_utf8 ; $un_name\n";
+
+ } else {
+ warn "Unrecognized line: '$_'";
+ }
+}
+
+###############################################################################
diff --git a/contrib/unicode2nginx/win-utf b/contrib/unicode2nginx/win-utf
new file mode 100644
index 0000000..af9f9aa
--- /dev/null
+++ b/contrib/unicode2nginx/win-utf
@@ -0,0 +1,130 @@
+charset_map windows-1251 utf-8 {
+
+ 80 D082 ; #CYRILLIC CAPITAL LETTER DJE
+ 81 D083 ; #CYRILLIC CAPITAL LETTER GJE
+ 82 E2809A ; #SINGLE LOW-9 QUOTATION MARK
+ 83 D193 ; #CYRILLIC SMALL LETTER GJE
+ 84 E2809E ; #DOUBLE LOW-9 QUOTATION MARK
+ 85 E280A6 ; #HORIZONTAL ELLIPSIS
+ 86 E280A0 ; #DAGGER
+ 87 E280A1 ; #DOUBLE DAGGER
+ 88 E282AC ; #EURO SIGN
+ 89 E280B0 ; #PER MILLE SIGN
+ 8A D089 ; #CYRILLIC CAPITAL LETTER LJE
+ 8B E280B9 ; #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ 8C D08A ; #CYRILLIC CAPITAL LETTER NJE
+ 8D D08C ; #CYRILLIC CAPITAL LETTER KJE
+ 8E D08B ; #CYRILLIC CAPITAL LETTER TSHE
+ 8F D08F ; #CYRILLIC CAPITAL LETTER DZHE
+ 90 D192 ; #CYRILLIC SMALL LETTER DJE
+ 91 E28098 ; #LEFT SINGLE QUOTATION MARK
+ 92 E28099 ; #RIGHT SINGLE QUOTATION MARK
+ 93 E2809C ; #LEFT DOUBLE QUOTATION MARK
+ 94 E2809D ; #RIGHT DOUBLE QUOTATION MARK
+ 95 E280A2 ; #BULLET
+ 96 E28093 ; #EN DASH
+ 97 E28094 ; #EM DASH
+ 99 E284A2 ; #TRADE MARK SIGN
+ 9A D199 ; #CYRILLIC SMALL LETTER LJE
+ 9B E280BA ; #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ 9C D19A ; #CYRILLIC SMALL LETTER NJE
+ 9D D19C ; #CYRILLIC SMALL LETTER KJE
+ 9E D19B ; #CYRILLIC SMALL LETTER TSHE
+ 9F D19F ; #CYRILLIC SMALL LETTER DZHE
+ A0 C2A0 ; #NO-BREAK SPACE
+ A1 D08E ; #CYRILLIC CAPITAL LETTER SHORT U
+ A2 D19E ; #CYRILLIC SMALL LETTER SHORT U
+ A3 D088 ; #CYRILLIC CAPITAL LETTER JE
+ A4 C2A4 ; #CURRENCY SIGN
+ A5 D290 ; #CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ A6 C2A6 ; #BROKEN BAR
+ A7 C2A7 ; #SECTION SIGN
+ A8 D081 ; #CYRILLIC CAPITAL LETTER IO
+ A9 C2A9 ; #COPYRIGHT SIGN
+ AA D084 ; #CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ AB C2AB ; #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ AC C2AC ; #NOT SIGN
+ AD C2AD ; #SOFT HYPHEN
+ AE C2AE ; #REGISTERED SIGN
+ AF D087 ; #CYRILLIC CAPITAL LETTER YI
+ B0 C2B0 ; #DEGREE SIGN
+ B1 C2B1 ; #PLUS-MINUS SIGN
+ B2 D086 ; #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ B3 D196 ; #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ B4 D291 ; #CYRILLIC SMALL LETTER GHE WITH UPTURN
+ B5 C2B5 ; #MICRO SIGN
+ B6 C2B6 ; #PILCROW SIGN
+ B7 C2B7 ; #MIDDLE DOT
+ B8 D191 ; #CYRILLIC SMALL LETTER IO
+ B9 E28496 ; #NUMERO SIGN
+ BA D194 ; #CYRILLIC SMALL LETTER UKRAINIAN IE
+ BB C2BB ; #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ BC D198 ; #CYRILLIC SMALL LETTER JE
+ BD D085 ; #CYRILLIC CAPITAL LETTER DZE
+ BE D195 ; #CYRILLIC SMALL LETTER DZE
+ BF D197 ; #CYRILLIC SMALL LETTER YI
+ C0 D090 ; #CYRILLIC CAPITAL LETTER A
+ C1 D091 ; #CYRILLIC CAPITAL LETTER BE
+ C2 D092 ; #CYRILLIC CAPITAL LETTER VE
+ C3 D093 ; #CYRILLIC CAPITAL LETTER GHE
+ C4 D094 ; #CYRILLIC CAPITAL LETTER DE
+ C5 D095 ; #CYRILLIC CAPITAL LETTER IE
+ C6 D096 ; #CYRILLIC CAPITAL LETTER ZHE
+ C7 D097 ; #CYRILLIC CAPITAL LETTER ZE
+ C8 D098 ; #CYRILLIC CAPITAL LETTER I
+ C9 D099 ; #CYRILLIC CAPITAL LETTER SHORT I
+ CA D09A ; #CYRILLIC CAPITAL LETTER KA
+ CB D09B ; #CYRILLIC CAPITAL LETTER EL
+ CC D09C ; #CYRILLIC CAPITAL LETTER EM
+ CD D09D ; #CYRILLIC CAPITAL LETTER EN
+ CE D09E ; #CYRILLIC CAPITAL LETTER O
+ CF D09F ; #CYRILLIC CAPITAL LETTER PE
+ D0 D0A0 ; #CYRILLIC CAPITAL LETTER ER
+ D1 D0A1 ; #CYRILLIC CAPITAL LETTER ES
+ D2 D0A2 ; #CYRILLIC CAPITAL LETTER TE
+ D3 D0A3 ; #CYRILLIC CAPITAL LETTER U
+ D4 D0A4 ; #CYRILLIC CAPITAL LETTER EF
+ D5 D0A5 ; #CYRILLIC CAPITAL LETTER HA
+ D6 D0A6 ; #CYRILLIC CAPITAL LETTER TSE
+ D7 D0A7 ; #CYRILLIC CAPITAL LETTER CHE
+ D8 D0A8 ; #CYRILLIC CAPITAL LETTER SHA
+ D9 D0A9 ; #CYRILLIC CAPITAL LETTER SHCHA
+ DA D0AA ; #CYRILLIC CAPITAL LETTER HARD SIGN
+ DB D0AB ; #CYRILLIC CAPITAL LETTER YERU
+ DC D0AC ; #CYRILLIC CAPITAL LETTER SOFT SIGN
+ DD D0AD ; #CYRILLIC CAPITAL LETTER E
+ DE D0AE ; #CYRILLIC CAPITAL LETTER YU
+ DF D0AF ; #CYRILLIC CAPITAL LETTER YA
+ E0 D0B0 ; #CYRILLIC SMALL LETTER A
+ E1 D0B1 ; #CYRILLIC SMALL LETTER BE
+ E2 D0B2 ; #CYRILLIC SMALL LETTER VE
+ E3 D0B3 ; #CYRILLIC SMALL LETTER GHE
+ E4 D0B4 ; #CYRILLIC SMALL LETTER DE
+ E5 D0B5 ; #CYRILLIC SMALL LETTER IE
+ E6 D0B6 ; #CYRILLIC SMALL LETTER ZHE
+ E7 D0B7 ; #CYRILLIC SMALL LETTER ZE
+ E8 D0B8 ; #CYRILLIC SMALL LETTER I
+ E9 D0B9 ; #CYRILLIC SMALL LETTER SHORT I
+ EA D0BA ; #CYRILLIC SMALL LETTER KA
+ EB D0BB ; #CYRILLIC SMALL LETTER EL
+ EC D0BC ; #CYRILLIC SMALL LETTER EM
+ ED D0BD ; #CYRILLIC SMALL LETTER EN
+ EE D0BE ; #CYRILLIC SMALL LETTER O
+ EF D0BF ; #CYRILLIC SMALL LETTER PE
+ F0 D180 ; #CYRILLIC SMALL LETTER ER
+ F1 D181 ; #CYRILLIC SMALL LETTER ES
+ F2 D182 ; #CYRILLIC SMALL LETTER TE
+ F3 D183 ; #CYRILLIC SMALL LETTER U
+ F4 D184 ; #CYRILLIC SMALL LETTER EF
+ F5 D185 ; #CYRILLIC SMALL LETTER HA
+ F6 D186 ; #CYRILLIC SMALL LETTER TSE
+ F7 D187 ; #CYRILLIC SMALL LETTER CHE
+ F8 D188 ; #CYRILLIC SMALL LETTER SHA
+ F9 D189 ; #CYRILLIC SMALL LETTER SHCHA
+ FA D18A ; #CYRILLIC SMALL LETTER HARD SIGN
+ FB D18B ; #CYRILLIC SMALL LETTER YERU
+ FC D18C ; #CYRILLIC SMALL LETTER SOFT SIGN
+ FD D18D ; #CYRILLIC SMALL LETTER E
+ FE D18E ; #CYRILLIC SMALL LETTER YU
+ FF D18F ; #CYRILLIC SMALL LETTER YA
+}
diff --git a/contrib/vim/ftdetect/nginx.vim b/contrib/vim/ftdetect/nginx.vim
new file mode 100644
index 0000000..3ae470d
--- /dev/null
+++ b/contrib/vim/ftdetect/nginx.vim
@@ -0,0 +1,4 @@
+au BufRead,BufNewFile *.nginx set ft=nginx
+au BufRead,BufNewFile */etc/nginx/* set ft=nginx
+au BufRead,BufNewFile */usr/local/nginx/conf/* set ft=nginx
+au BufRead,BufNewFile nginx.conf set ft=nginx
diff --git a/contrib/vim/ftplugin/nginx.vim b/contrib/vim/ftplugin/nginx.vim
new file mode 100644
index 0000000..463eea9
--- /dev/null
+++ b/contrib/vim/ftplugin/nginx.vim
@@ -0,0 +1 @@
+setlocal commentstring=#\ %s
diff --git a/contrib/vim/indent/nginx.vim b/contrib/vim/indent/nginx.vim
new file mode 100644
index 0000000..8601366
--- /dev/null
+++ b/contrib/vim/indent/nginx.vim
@@ -0,0 +1,11 @@
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=
+
+" cindent actually works for nginx' simple file structure
+setlocal cindent
+" Just make sure that the comments are not reset as defs would be.
+setlocal cinkeys-=0#
diff --git a/contrib/vim/syntax/nginx.vim b/contrib/vim/syntax/nginx.vim
new file mode 100644
index 0000000..075b19a
--- /dev/null
+++ b/contrib/vim/syntax/nginx.vim
@@ -0,0 +1,2268 @@
+" Vim syntax file
+" Language: nginx.conf
+
+if exists("b:current_syntax")
+ finish
+end
+
+" general syntax
+
+if has("patch-7.4.1142")
+ " except control characters, ";", "{", and "}"
+ syn iskeyword 33-58,60-122,124,126-255
+endif
+
+syn match ngxName '\([^;{} \t\\]\|\\.\)\+'
+ \ contains=@ngxDirectives
+ \ nextgroup=@ngxParams skipwhite skipempty
+syn match ngxParam '\(\${\|[^;{ \t\\]\|\\.\)\+'
+ \ contained
+ \ contains=ngxVariable
+ \ nextgroup=@ngxParams skipwhite skipempty
+syn region ngxString start=+\z(["']\)+ end=+\z1+ skip=+\\\\\|\\\z1+
+ \ contains=ngxVariableString
+ \ nextgroup=@ngxParams skipwhite skipempty
+syn match ngxParamComment '#.*$'
+ \ nextgroup=@ngxParams skipwhite skipempty
+syn match ngxSemicolon ';' contained
+syn region ngxBlock start=+{+ end=+}+ contained
+ \ contains=@ngxTopLevel
+syn match ngxComment '#.*$'
+
+syn match ngxVariable '\$\(\w\+\|{\w\+}\)' contained
+syn match ngxVariableString '\$\(\w\+\|{\w\+}\)' contained
+
+syn cluster ngxTopLevel
+ \ contains=ngxName,ngxString,ngxComment
+syn cluster ngxDirectives
+ \ contains=ngxDirective,ngxDirectiveBlock,ngxDirectiveImportant
+ \ add=ngxDirectiveControl,ngxDirectiveError,ngxDirectiveDeprecated
+ \ add=ngxDirectiveThirdParty,ngxDirectiveThirdPartyDeprecated
+syn cluster ngxParams
+ \ contains=ngxParam,ngxString,ngxParamComment,ngxSemicolon,ngxBlock
+
+" boolean parameters
+
+syn keyword ngxBoolean contained on off
+ \ nextgroup=@ngxParams skipwhite skipempty
+syn cluster ngxParams add=ngxBoolean
+
+" listen directive
+
+syn cluster ngxTopLevel add=ngxDirectiveListen
+syn keyword ngxDirectiveListen listen
+ \ nextgroup=@ngxListenParams skipwhite skipempty
+syn match ngxListenParam '\(\${\|[^;{ \t\\]\|\\.\)\+'
+ \ contained
+ \ nextgroup=@ngxListenParams skipwhite skipempty
+syn region ngxListenString start=+\z(["']\)+ end=+\z1+ skip=+\\\\\|\\\z1+
+ \ contained
+ \ nextgroup=@ngxListenParams skipwhite skipempty
+syn match ngxListenComment '#.*$'
+ \ contained
+ \ nextgroup=@ngxListenParams skipwhite skipempty
+syn keyword ngxListenOptions contained
+ \ default_server ssl http2 proxy_protocol
+ \ setfib fastopen backlog rcvbuf sndbuf accept_filter deferred bind
+ \ ipv6only reuseport so_keepalive
+ \ nextgroup=@ngxListenParams skipwhite skipempty
+syn keyword ngxListenOptionsDeprecated contained
+ \ spdy
+ \ nextgroup=@ngxListenParams skipwhite skipempty
+syn cluster ngxListenParams
+ \ contains=ngxListenParam,ngxListenString,ngxListenComment
+ \ add=ngxListenOptions,ngxListenOptionsDeprecated
+
+syn keyword ngxDirectiveBlock contained http
+syn keyword ngxDirectiveBlock contained stream
+syn keyword ngxDirectiveBlock contained mail
+syn keyword ngxDirectiveBlock contained events
+syn keyword ngxDirectiveBlock contained server
+syn keyword ngxDirectiveBlock contained types
+syn keyword ngxDirectiveBlock contained location
+syn keyword ngxDirectiveBlock contained upstream
+syn keyword ngxDirectiveBlock contained charset_map
+syn keyword ngxDirectiveBlock contained limit_except
+syn keyword ngxDirectiveBlock contained if
+syn keyword ngxDirectiveBlock contained geo
+syn keyword ngxDirectiveBlock contained map
+syn keyword ngxDirectiveBlock contained split_clients
+syn keyword ngxDirectiveBlock contained match
+
+syn keyword ngxDirectiveImportant contained include
+syn keyword ngxDirectiveImportant contained root
+syn keyword ngxDirectiveImportant contained server_name
+syn keyword ngxDirectiveImportant contained internal
+syn keyword ngxDirectiveImportant contained proxy_pass
+syn keyword ngxDirectiveImportant contained memcached_pass
+syn keyword ngxDirectiveImportant contained fastcgi_pass
+syn keyword ngxDirectiveImportant contained scgi_pass
+syn keyword ngxDirectiveImportant contained uwsgi_pass
+syn keyword ngxDirectiveImportant contained try_files
+
+syn keyword ngxDirectiveControl contained break
+syn keyword ngxDirectiveControl contained return
+syn keyword ngxDirectiveControl contained rewrite
+syn keyword ngxDirectiveControl contained set
+
+syn keyword ngxDirectiveError contained error_page
+syn keyword ngxDirectiveError contained post_action
+
+syn keyword ngxDirectiveDeprecated contained proxy_downstream_buffer
+syn keyword ngxDirectiveDeprecated contained proxy_upstream_buffer
+syn keyword ngxDirectiveDeprecated contained spdy_chunk_size
+syn keyword ngxDirectiveDeprecated contained spdy_headers_comp
+syn keyword ngxDirectiveDeprecated contained spdy_keepalive_timeout
+syn keyword ngxDirectiveDeprecated contained spdy_max_concurrent_streams
+syn keyword ngxDirectiveDeprecated contained spdy_pool_size
+syn keyword ngxDirectiveDeprecated contained spdy_recv_buffer_size
+syn keyword ngxDirectiveDeprecated contained spdy_recv_timeout
+syn keyword ngxDirectiveDeprecated contained spdy_streams_index_size
+syn keyword ngxDirectiveDeprecated contained upstream_conf
+
+syn keyword ngxDirective contained absolute_redirect
+syn keyword ngxDirective contained accept_mutex
+syn keyword ngxDirective contained accept_mutex_delay
+syn keyword ngxDirective contained acceptex_read
+syn keyword ngxDirective contained access_log
+syn keyword ngxDirective contained add_after_body
+syn keyword ngxDirective contained add_before_body
+syn keyword ngxDirective contained add_header
+syn keyword ngxDirective contained add_trailer
+syn keyword ngxDirective contained addition_types
+syn keyword ngxDirective contained aio
+syn keyword ngxDirective contained aio_write
+syn keyword ngxDirective contained alias
+syn keyword ngxDirective contained allow
+syn keyword ngxDirective contained ancient_browser
+syn keyword ngxDirective contained ancient_browser_value
+syn keyword ngxDirective contained auth_basic
+syn keyword ngxDirective contained auth_basic_user_file
+syn keyword ngxDirective contained auth_http
+syn keyword ngxDirective contained auth_http_header
+syn keyword ngxDirective contained auth_http_pass_client_cert
+syn keyword ngxDirective contained auth_http_timeout
+syn keyword ngxDirective contained auth_jwt
+syn keyword ngxDirective contained auth_jwt_key_file
+syn keyword ngxDirective contained auth_request
+syn keyword ngxDirective contained auth_request_set
+syn keyword ngxDirective contained autoindex
+syn keyword ngxDirective contained autoindex_exact_size
+syn keyword ngxDirective contained autoindex_format
+syn keyword ngxDirective contained autoindex_localtime
+syn keyword ngxDirective contained charset
+syn keyword ngxDirective contained charset_types
+syn keyword ngxDirective contained chunked_transfer_encoding
+syn keyword ngxDirective contained client_body_buffer_size
+syn keyword ngxDirective contained client_body_in_file_only
+syn keyword ngxDirective contained client_body_in_single_buffer
+syn keyword ngxDirective contained client_body_temp_path
+syn keyword ngxDirective contained client_body_timeout
+syn keyword ngxDirective contained client_header_buffer_size
+syn keyword ngxDirective contained client_header_timeout
+syn keyword ngxDirective contained client_max_body_size
+syn keyword ngxDirective contained connection_pool_size
+syn keyword ngxDirective contained create_full_put_path
+syn keyword ngxDirective contained daemon
+syn keyword ngxDirective contained dav_access
+syn keyword ngxDirective contained dav_methods
+syn keyword ngxDirective contained debug_connection
+syn keyword ngxDirective contained debug_points
+syn keyword ngxDirective contained default_type
+syn keyword ngxDirective contained degradation
+syn keyword ngxDirective contained degrade
+syn keyword ngxDirective contained deny
+syn keyword ngxDirective contained devpoll_changes
+syn keyword ngxDirective contained devpoll_events
+syn keyword ngxDirective contained directio
+syn keyword ngxDirective contained directio_alignment
+syn keyword ngxDirective contained disable_symlinks
+syn keyword ngxDirective contained empty_gif
+syn keyword ngxDirective contained env
+syn keyword ngxDirective contained epoll_events
+syn keyword ngxDirective contained error_log
+syn keyword ngxDirective contained etag
+syn keyword ngxDirective contained eventport_events
+syn keyword ngxDirective contained expires
+syn keyword ngxDirective contained f4f
+syn keyword ngxDirective contained f4f_buffer_size
+syn keyword ngxDirective contained fastcgi_bind
+syn keyword ngxDirective contained fastcgi_buffer_size
+syn keyword ngxDirective contained fastcgi_buffering
+syn keyword ngxDirective contained fastcgi_buffers
+syn keyword ngxDirective contained fastcgi_busy_buffers_size
+syn keyword ngxDirective contained fastcgi_cache
+syn keyword ngxDirective contained fastcgi_cache_background_update
+syn keyword ngxDirective contained fastcgi_cache_bypass
+syn keyword ngxDirective contained fastcgi_cache_key
+syn keyword ngxDirective contained fastcgi_cache_lock
+syn keyword ngxDirective contained fastcgi_cache_lock_age
+syn keyword ngxDirective contained fastcgi_cache_lock_timeout
+syn keyword ngxDirective contained fastcgi_cache_max_range_offset
+syn keyword ngxDirective contained fastcgi_cache_methods
+syn keyword ngxDirective contained fastcgi_cache_min_uses
+syn keyword ngxDirective contained fastcgi_cache_path
+syn keyword ngxDirective contained fastcgi_cache_purge
+syn keyword ngxDirective contained fastcgi_cache_revalidate
+syn keyword ngxDirective contained fastcgi_cache_use_stale
+syn keyword ngxDirective contained fastcgi_cache_valid
+syn keyword ngxDirective contained fastcgi_catch_stderr
+syn keyword ngxDirective contained fastcgi_connect_timeout
+syn keyword ngxDirective contained fastcgi_force_ranges
+syn keyword ngxDirective contained fastcgi_hide_header
+syn keyword ngxDirective contained fastcgi_ignore_client_abort
+syn keyword ngxDirective contained fastcgi_ignore_headers
+syn keyword ngxDirective contained fastcgi_index
+syn keyword ngxDirective contained fastcgi_intercept_errors
+syn keyword ngxDirective contained fastcgi_keep_conn
+syn keyword ngxDirective contained fastcgi_limit_rate
+syn keyword ngxDirective contained fastcgi_max_temp_file_size
+syn keyword ngxDirective contained fastcgi_next_upstream
+syn keyword ngxDirective contained fastcgi_next_upstream_timeout
+syn keyword ngxDirective contained fastcgi_next_upstream_tries
+syn keyword ngxDirective contained fastcgi_no_cache
+syn keyword ngxDirective contained fastcgi_param
+syn keyword ngxDirective contained fastcgi_pass_header
+syn keyword ngxDirective contained fastcgi_pass_request_body
+syn keyword ngxDirective contained fastcgi_pass_request_headers
+syn keyword ngxDirective contained fastcgi_read_timeout
+syn keyword ngxDirective contained fastcgi_request_buffering
+syn keyword ngxDirective contained fastcgi_send_lowat
+syn keyword ngxDirective contained fastcgi_send_timeout
+syn keyword ngxDirective contained fastcgi_split_path_info
+syn keyword ngxDirective contained fastcgi_store
+syn keyword ngxDirective contained fastcgi_store_access
+syn keyword ngxDirective contained fastcgi_temp_file_write_size
+syn keyword ngxDirective contained fastcgi_temp_path
+syn keyword ngxDirective contained flv
+syn keyword ngxDirective contained geoip_city
+syn keyword ngxDirective contained geoip_country
+syn keyword ngxDirective contained geoip_org
+syn keyword ngxDirective contained geoip_proxy
+syn keyword ngxDirective contained geoip_proxy_recursive
+syn keyword ngxDirective contained google_perftools_profiles
+syn keyword ngxDirective contained grpc_bind
+syn keyword ngxDirective contained grpc_buffer_size
+syn keyword ngxDirective contained grpc_connect_timeout
+syn keyword ngxDirective contained grpc_hide_header
+syn keyword ngxDirective contained grpc_ignore_headers
+syn keyword ngxDirective contained grpc_intercept_errors
+syn keyword ngxDirective contained grpc_next_upstream
+syn keyword ngxDirective contained grpc_next_upstream_timeout
+syn keyword ngxDirective contained grpc_next_upstream_tries
+syn keyword ngxDirective contained grpc_pass
+syn keyword ngxDirective contained grpc_pass_header
+syn keyword ngxDirective contained grpc_read_timeout
+syn keyword ngxDirective contained grpc_send_timeout
+syn keyword ngxDirective contained grpc_set_header
+syn keyword ngxDirective contained grpc_ssl_certificate
+syn keyword ngxDirective contained grpc_ssl_certificate_key
+syn keyword ngxDirective contained grpc_ssl_ciphers
+syn keyword ngxDirective contained grpc_ssl_crl
+syn keyword ngxDirective contained grpc_ssl_name
+syn keyword ngxDirective contained grpc_ssl_password_file
+syn keyword ngxDirective contained grpc_ssl_protocols
+syn keyword ngxDirective contained grpc_ssl_server_name
+syn keyword ngxDirective contained grpc_ssl_session_reuse
+syn keyword ngxDirective contained grpc_ssl_trusted_certificate
+syn keyword ngxDirective contained grpc_ssl_verify
+syn keyword ngxDirective contained grpc_ssl_verify_depth
+syn keyword ngxDirective contained gunzip
+syn keyword ngxDirective contained gunzip_buffers
+syn keyword ngxDirective contained gzip
+syn keyword ngxDirective contained gzip_buffers
+syn keyword ngxDirective contained gzip_comp_level
+syn keyword ngxDirective contained gzip_disable
+syn keyword ngxDirective contained gzip_hash
+syn keyword ngxDirective contained gzip_http_version
+syn keyword ngxDirective contained gzip_min_length
+syn keyword ngxDirective contained gzip_no_buffer
+syn keyword ngxDirective contained gzip_proxied
+syn keyword ngxDirective contained gzip_static
+syn keyword ngxDirective contained gzip_types
+syn keyword ngxDirective contained gzip_vary
+syn keyword ngxDirective contained gzip_window
+syn keyword ngxDirective contained hash
+syn keyword ngxDirective contained health_check
+syn keyword ngxDirective contained health_check_timeout
+syn keyword ngxDirective contained hls
+syn keyword ngxDirective contained hls_buffers
+syn keyword ngxDirective contained hls_forward_args
+syn keyword ngxDirective contained hls_fragment
+syn keyword ngxDirective contained hls_mp4_buffer_size
+syn keyword ngxDirective contained hls_mp4_max_buffer_size
+syn keyword ngxDirective contained http2_body_preread_size
+syn keyword ngxDirective contained http2_chunk_size
+syn keyword ngxDirective contained http2_idle_timeout
+syn keyword ngxDirective contained http2_max_concurrent_pushes
+syn keyword ngxDirective contained http2_max_concurrent_streams
+syn keyword ngxDirective contained http2_max_field_size
+syn keyword ngxDirective contained http2_max_header_size
+syn keyword ngxDirective contained http2_max_requests
+syn keyword ngxDirective contained http2_pool_size
+syn keyword ngxDirective contained http2_push
+syn keyword ngxDirective contained http2_push_preload
+syn keyword ngxDirective contained http2_recv_buffer_size
+syn keyword ngxDirective contained http2_recv_timeout
+syn keyword ngxDirective contained http2_streams_index_size
+syn keyword ngxDirective contained if_modified_since
+syn keyword ngxDirective contained ignore_invalid_headers
+syn keyword ngxDirective contained image_filter
+syn keyword ngxDirective contained image_filter_buffer
+syn keyword ngxDirective contained image_filter_interlace
+syn keyword ngxDirective contained image_filter_jpeg_quality
+syn keyword ngxDirective contained image_filter_sharpen
+syn keyword ngxDirective contained image_filter_transparency
+syn keyword ngxDirective contained image_filter_webp_quality
+syn keyword ngxDirective contained imap_auth
+syn keyword ngxDirective contained imap_capabilities
+syn keyword ngxDirective contained imap_client_buffer
+syn keyword ngxDirective contained index
+syn keyword ngxDirective contained iocp_threads
+syn keyword ngxDirective contained ip_hash
+syn keyword ngxDirective contained js_access
+syn keyword ngxDirective contained js_content
+syn keyword ngxDirective contained js_filter
+syn keyword ngxDirective contained js_include
+syn keyword ngxDirective contained js_preread
+syn keyword ngxDirective contained js_set
+syn keyword ngxDirective contained keepalive
+syn keyword ngxDirective contained keepalive_disable
+syn keyword ngxDirective contained keepalive_requests
+syn keyword ngxDirective contained keepalive_timeout
+syn keyword ngxDirective contained kqueue_changes
+syn keyword ngxDirective contained kqueue_events
+syn keyword ngxDirective contained large_client_header_buffers
+syn keyword ngxDirective contained least_conn
+syn keyword ngxDirective contained least_time
+syn keyword ngxDirective contained limit_conn
+syn keyword ngxDirective contained limit_conn_log_level
+syn keyword ngxDirective contained limit_conn_status
+syn keyword ngxDirective contained limit_conn_zone
+syn keyword ngxDirective contained limit_rate
+syn keyword ngxDirective contained limit_rate_after
+syn keyword ngxDirective contained limit_req
+syn keyword ngxDirective contained limit_req_log_level
+syn keyword ngxDirective contained limit_req_status
+syn keyword ngxDirective contained limit_req_zone
+syn keyword ngxDirective contained lingering_close
+syn keyword ngxDirective contained lingering_time
+syn keyword ngxDirective contained lingering_timeout
+syn keyword ngxDirective contained load_module
+syn keyword ngxDirective contained lock_file
+syn keyword ngxDirective contained log_format
+syn keyword ngxDirective contained log_not_found
+syn keyword ngxDirective contained log_subrequest
+syn keyword ngxDirective contained map_hash_bucket_size
+syn keyword ngxDirective contained map_hash_max_size
+syn keyword ngxDirective contained master_process
+syn keyword ngxDirective contained max_ranges
+syn keyword ngxDirective contained memcached_bind
+syn keyword ngxDirective contained memcached_buffer_size
+syn keyword ngxDirective contained memcached_connect_timeout
+syn keyword ngxDirective contained memcached_force_ranges
+syn keyword ngxDirective contained memcached_gzip_flag
+syn keyword ngxDirective contained memcached_next_upstream
+syn keyword ngxDirective contained memcached_next_upstream_timeout
+syn keyword ngxDirective contained memcached_next_upstream_tries
+syn keyword ngxDirective contained memcached_read_timeout
+syn keyword ngxDirective contained memcached_send_timeout
+syn keyword ngxDirective contained merge_slashes
+syn keyword ngxDirective contained min_delete_depth
+syn keyword ngxDirective contained mirror
+syn keyword ngxDirective contained mirror_request_body
+syn keyword ngxDirective contained modern_browser
+syn keyword ngxDirective contained modern_browser_value
+syn keyword ngxDirective contained mp4
+syn keyword ngxDirective contained mp4_buffer_size
+syn keyword ngxDirective contained mp4_max_buffer_size
+syn keyword ngxDirective contained mp4_limit_rate
+syn keyword ngxDirective contained mp4_limit_rate_after
+syn keyword ngxDirective contained msie_padding
+syn keyword ngxDirective contained msie_refresh
+syn keyword ngxDirective contained multi_accept
+syn keyword ngxDirective contained ntlm
+syn keyword ngxDirective contained open_file_cache
+syn keyword ngxDirective contained open_file_cache_errors
+syn keyword ngxDirective contained open_file_cache_events
+syn keyword ngxDirective contained open_file_cache_min_uses
+syn keyword ngxDirective contained open_file_cache_valid
+syn keyword ngxDirective contained open_log_file_cache
+syn keyword ngxDirective contained output_buffers
+syn keyword ngxDirective contained override_charset
+syn keyword ngxDirective contained pcre_jit
+syn keyword ngxDirective contained perl
+syn keyword ngxDirective contained perl_modules
+syn keyword ngxDirective contained perl_require
+syn keyword ngxDirective contained perl_set
+syn keyword ngxDirective contained pid
+syn keyword ngxDirective contained pop3_auth
+syn keyword ngxDirective contained pop3_capabilities
+syn keyword ngxDirective contained port_in_redirect
+syn keyword ngxDirective contained post_acceptex
+syn keyword ngxDirective contained postpone_gzipping
+syn keyword ngxDirective contained postpone_output
+syn keyword ngxDirective contained preread_buffer_size
+syn keyword ngxDirective contained preread_timeout
+syn keyword ngxDirective contained protocol
+syn keyword ngxDirective contained proxy
+syn keyword ngxDirective contained proxy_bind
+syn keyword ngxDirective contained proxy_buffer
+syn keyword ngxDirective contained proxy_buffer_size
+syn keyword ngxDirective contained proxy_buffering
+syn keyword ngxDirective contained proxy_buffers
+syn keyword ngxDirective contained proxy_busy_buffers_size
+syn keyword ngxDirective contained proxy_cache
+syn keyword ngxDirective contained proxy_cache_background_update
+syn keyword ngxDirective contained proxy_cache_bypass
+syn keyword ngxDirective contained proxy_cache_convert_head
+syn keyword ngxDirective contained proxy_cache_key
+syn keyword ngxDirective contained proxy_cache_lock
+syn keyword ngxDirective contained proxy_cache_lock_age
+syn keyword ngxDirective contained proxy_cache_lock_timeout
+syn keyword ngxDirective contained proxy_cache_max_range_offset
+syn keyword ngxDirective contained proxy_cache_methods
+syn keyword ngxDirective contained proxy_cache_min_uses
+syn keyword ngxDirective contained proxy_cache_path
+syn keyword ngxDirective contained proxy_cache_purge
+syn keyword ngxDirective contained proxy_cache_revalidate
+syn keyword ngxDirective contained proxy_cache_use_stale
+syn keyword ngxDirective contained proxy_cache_valid
+syn keyword ngxDirective contained proxy_connect_timeout
+syn keyword ngxDirective contained proxy_cookie_domain
+syn keyword ngxDirective contained proxy_cookie_path
+syn keyword ngxDirective contained proxy_download_rate
+syn keyword ngxDirective contained proxy_force_ranges
+syn keyword ngxDirective contained proxy_headers_hash_bucket_size
+syn keyword ngxDirective contained proxy_headers_hash_max_size
+syn keyword ngxDirective contained proxy_hide_header
+syn keyword ngxDirective contained proxy_http_version
+syn keyword ngxDirective contained proxy_ignore_client_abort
+syn keyword ngxDirective contained proxy_ignore_headers
+syn keyword ngxDirective contained proxy_intercept_errors
+syn keyword ngxDirective contained proxy_limit_rate
+syn keyword ngxDirective contained proxy_max_temp_file_size
+syn keyword ngxDirective contained proxy_method
+syn keyword ngxDirective contained proxy_next_upstream
+syn keyword ngxDirective contained proxy_next_upstream_timeout
+syn keyword ngxDirective contained proxy_next_upstream_tries
+syn keyword ngxDirective contained proxy_no_cache
+syn keyword ngxDirective contained proxy_pass_error_message
+syn keyword ngxDirective contained proxy_pass_header
+syn keyword ngxDirective contained proxy_pass_request_body
+syn keyword ngxDirective contained proxy_pass_request_headers
+syn keyword ngxDirective contained proxy_protocol
+syn keyword ngxDirective contained proxy_protocol_timeout
+syn keyword ngxDirective contained proxy_read_timeout
+syn keyword ngxDirective contained proxy_redirect
+syn keyword ngxDirective contained proxy_request_buffering
+syn keyword ngxDirective contained proxy_responses
+syn keyword ngxDirective contained proxy_send_lowat
+syn keyword ngxDirective contained proxy_send_timeout
+syn keyword ngxDirective contained proxy_set_body
+syn keyword ngxDirective contained proxy_set_header
+syn keyword ngxDirective contained proxy_ssl
+syn keyword ngxDirective contained proxy_ssl_certificate
+syn keyword ngxDirective contained proxy_ssl_certificate_key
+syn keyword ngxDirective contained proxy_ssl_ciphers
+syn keyword ngxDirective contained proxy_ssl_crl
+syn keyword ngxDirective contained proxy_ssl_name
+syn keyword ngxDirective contained proxy_ssl_password_file
+syn keyword ngxDirective contained proxy_ssl_protocols
+syn keyword ngxDirective contained proxy_ssl_server_name
+syn keyword ngxDirective contained proxy_ssl_session_reuse
+syn keyword ngxDirective contained proxy_ssl_trusted_certificate
+syn keyword ngxDirective contained proxy_ssl_verify
+syn keyword ngxDirective contained proxy_ssl_verify_depth
+syn keyword ngxDirective contained proxy_store
+syn keyword ngxDirective contained proxy_store_access
+syn keyword ngxDirective contained proxy_temp_file_write_size
+syn keyword ngxDirective contained proxy_temp_path
+syn keyword ngxDirective contained proxy_timeout
+syn keyword ngxDirective contained proxy_upload_rate
+syn keyword ngxDirective contained queue
+syn keyword ngxDirective contained random_index
+syn keyword ngxDirective contained read_ahead
+syn keyword ngxDirective contained real_ip_header
+syn keyword ngxDirective contained real_ip_recursive
+syn keyword ngxDirective contained recursive_error_pages
+syn keyword ngxDirective contained referer_hash_bucket_size
+syn keyword ngxDirective contained referer_hash_max_size
+syn keyword ngxDirective contained request_pool_size
+syn keyword ngxDirective contained reset_timedout_connection
+syn keyword ngxDirective contained resolver
+syn keyword ngxDirective contained resolver_timeout
+syn keyword ngxDirective contained rewrite_log
+syn keyword ngxDirective contained satisfy
+syn keyword ngxDirective contained scgi_bind
+syn keyword ngxDirective contained scgi_buffer_size
+syn keyword ngxDirective contained scgi_buffering
+syn keyword ngxDirective contained scgi_buffers
+syn keyword ngxDirective contained scgi_busy_buffers_size
+syn keyword ngxDirective contained scgi_cache
+syn keyword ngxDirective contained scgi_cache_background_update
+syn keyword ngxDirective contained scgi_cache_bypass
+syn keyword ngxDirective contained scgi_cache_key
+syn keyword ngxDirective contained scgi_cache_lock
+syn keyword ngxDirective contained scgi_cache_lock_age
+syn keyword ngxDirective contained scgi_cache_lock_timeout
+syn keyword ngxDirective contained scgi_cache_max_range_offset
+syn keyword ngxDirective contained scgi_cache_methods
+syn keyword ngxDirective contained scgi_cache_min_uses
+syn keyword ngxDirective contained scgi_cache_path
+syn keyword ngxDirective contained scgi_cache_purge
+syn keyword ngxDirective contained scgi_cache_revalidate
+syn keyword ngxDirective contained scgi_cache_use_stale
+syn keyword ngxDirective contained scgi_cache_valid
+syn keyword ngxDirective contained scgi_connect_timeout
+syn keyword ngxDirective contained scgi_force_ranges
+syn keyword ngxDirective contained scgi_hide_header
+syn keyword ngxDirective contained scgi_ignore_client_abort
+syn keyword ngxDirective contained scgi_ignore_headers
+syn keyword ngxDirective contained scgi_intercept_errors
+syn keyword ngxDirective contained scgi_limit_rate
+syn keyword ngxDirective contained scgi_max_temp_file_size
+syn keyword ngxDirective contained scgi_next_upstream
+syn keyword ngxDirective contained scgi_next_upstream_timeout
+syn keyword ngxDirective contained scgi_next_upstream_tries
+syn keyword ngxDirective contained scgi_no_cache
+syn keyword ngxDirective contained scgi_param
+syn keyword ngxDirective contained scgi_pass_header
+syn keyword ngxDirective contained scgi_pass_request_body
+syn keyword ngxDirective contained scgi_pass_request_headers
+syn keyword ngxDirective contained scgi_read_timeout
+syn keyword ngxDirective contained scgi_request_buffering
+syn keyword ngxDirective contained scgi_send_timeout
+syn keyword ngxDirective contained scgi_store
+syn keyword ngxDirective contained scgi_store_access
+syn keyword ngxDirective contained scgi_temp_file_write_size
+syn keyword ngxDirective contained scgi_temp_path
+syn keyword ngxDirective contained secure_link
+syn keyword ngxDirective contained secure_link_md5
+syn keyword ngxDirective contained secure_link_secret
+syn keyword ngxDirective contained send_lowat
+syn keyword ngxDirective contained send_timeout
+syn keyword ngxDirective contained sendfile
+syn keyword ngxDirective contained sendfile_max_chunk
+syn keyword ngxDirective contained server_name_in_redirect
+syn keyword ngxDirective contained server_names_hash_bucket_size
+syn keyword ngxDirective contained server_names_hash_max_size
+syn keyword ngxDirective contained server_tokens
+syn keyword ngxDirective contained session_log
+syn keyword ngxDirective contained session_log_format
+syn keyword ngxDirective contained session_log_zone
+syn keyword ngxDirective contained set_real_ip_from
+syn keyword ngxDirective contained slice
+syn keyword ngxDirective contained smtp_auth
+syn keyword ngxDirective contained smtp_capabilities
+syn keyword ngxDirective contained smtp_client_buffer
+syn keyword ngxDirective contained smtp_greeting_delay
+syn keyword ngxDirective contained source_charset
+syn keyword ngxDirective contained ssi
+syn keyword ngxDirective contained ssi_ignore_recycled_buffers
+syn keyword ngxDirective contained ssi_last_modified
+syn keyword ngxDirective contained ssi_min_file_chunk
+syn keyword ngxDirective contained ssi_silent_errors
+syn keyword ngxDirective contained ssi_types
+syn keyword ngxDirective contained ssi_value_length
+syn keyword ngxDirective contained ssl
+syn keyword ngxDirective contained ssl_buffer_size
+syn keyword ngxDirective contained ssl_certificate
+syn keyword ngxDirective contained ssl_certificate_key
+syn keyword ngxDirective contained ssl_ciphers
+syn keyword ngxDirective contained ssl_client_certificate
+syn keyword ngxDirective contained ssl_crl
+syn keyword ngxDirective contained ssl_dhparam
+syn keyword ngxDirective contained ssl_ecdh_curve
+syn keyword ngxDirective contained ssl_engine
+syn keyword ngxDirective contained ssl_handshake_timeout
+syn keyword ngxDirective contained ssl_password_file
+syn keyword ngxDirective contained ssl_prefer_server_ciphers
+syn keyword ngxDirective contained ssl_preread
+syn keyword ngxDirective contained ssl_protocols
+syn keyword ngxDirective contained ssl_session_cache
+syn keyword ngxDirective contained ssl_session_ticket_key
+syn keyword ngxDirective contained ssl_session_tickets
+syn keyword ngxDirective contained ssl_session_timeout
+syn keyword ngxDirective contained ssl_stapling
+syn keyword ngxDirective contained ssl_stapling_file
+syn keyword ngxDirective contained ssl_stapling_responder
+syn keyword ngxDirective contained ssl_stapling_verify
+syn keyword ngxDirective contained ssl_trusted_certificate
+syn keyword ngxDirective contained ssl_verify_client
+syn keyword ngxDirective contained ssl_verify_depth
+syn keyword ngxDirective contained starttls
+syn keyword ngxDirective contained state
+syn keyword ngxDirective contained status
+syn keyword ngxDirective contained status_format
+syn keyword ngxDirective contained status_zone
+syn keyword ngxDirective contained sticky
+syn keyword ngxDirective contained sticky_cookie_insert
+syn keyword ngxDirective contained stub_status
+syn keyword ngxDirective contained sub_filter
+syn keyword ngxDirective contained sub_filter_last_modified
+syn keyword ngxDirective contained sub_filter_once
+syn keyword ngxDirective contained sub_filter_types
+syn keyword ngxDirective contained subrequest_output_buffer_size
+syn keyword ngxDirective contained tcp_nodelay
+syn keyword ngxDirective contained tcp_nopush
+syn keyword ngxDirective contained thread_pool
+syn keyword ngxDirective contained timeout
+syn keyword ngxDirective contained timer_resolution
+syn keyword ngxDirective contained types_hash_bucket_size
+syn keyword ngxDirective contained types_hash_max_size
+syn keyword ngxDirective contained underscores_in_headers
+syn keyword ngxDirective contained uninitialized_variable_warn
+syn keyword ngxDirective contained use
+syn keyword ngxDirective contained user
+syn keyword ngxDirective contained userid
+syn keyword ngxDirective contained userid_domain
+syn keyword ngxDirective contained userid_expires
+syn keyword ngxDirective contained userid_mark
+syn keyword ngxDirective contained userid_name
+syn keyword ngxDirective contained userid_p3p
+syn keyword ngxDirective contained userid_path
+syn keyword ngxDirective contained userid_service
+syn keyword ngxDirective contained uwsgi_bind
+syn keyword ngxDirective contained uwsgi_buffer_size
+syn keyword ngxDirective contained uwsgi_buffering
+syn keyword ngxDirective contained uwsgi_buffers
+syn keyword ngxDirective contained uwsgi_busy_buffers_size
+syn keyword ngxDirective contained uwsgi_cache
+syn keyword ngxDirective contained uwsgi_cache_background_update
+syn keyword ngxDirective contained uwsgi_cache_bypass
+syn keyword ngxDirective contained uwsgi_cache_key
+syn keyword ngxDirective contained uwsgi_cache_lock
+syn keyword ngxDirective contained uwsgi_cache_lock_age
+syn keyword ngxDirective contained uwsgi_cache_lock_timeout
+syn keyword ngxDirective contained uwsgi_cache_max_range_offset
+syn keyword ngxDirective contained uwsgi_cache_methods
+syn keyword ngxDirective contained uwsgi_cache_min_uses
+syn keyword ngxDirective contained uwsgi_cache_path
+syn keyword ngxDirective contained uwsgi_cache_purge
+syn keyword ngxDirective contained uwsgi_cache_revalidate
+syn keyword ngxDirective contained uwsgi_cache_use_stale
+syn keyword ngxDirective contained uwsgi_cache_valid
+syn keyword ngxDirective contained uwsgi_connect_timeout
+syn keyword ngxDirective contained uwsgi_force_ranges
+syn keyword ngxDirective contained uwsgi_hide_header
+syn keyword ngxDirective contained uwsgi_ignore_client_abort
+syn keyword ngxDirective contained uwsgi_ignore_headers
+syn keyword ngxDirective contained uwsgi_intercept_errors
+syn keyword ngxDirective contained uwsgi_limit_rate
+syn keyword ngxDirective contained uwsgi_max_temp_file_size
+syn keyword ngxDirective contained uwsgi_modifier1
+syn keyword ngxDirective contained uwsgi_modifier2
+syn keyword ngxDirective contained uwsgi_next_upstream
+syn keyword ngxDirective contained uwsgi_next_upstream_timeout
+syn keyword ngxDirective contained uwsgi_next_upstream_tries
+syn keyword ngxDirective contained uwsgi_no_cache
+syn keyword ngxDirective contained uwsgi_param
+syn keyword ngxDirective contained uwsgi_pass_header
+syn keyword ngxDirective contained uwsgi_pass_request_body
+syn keyword ngxDirective contained uwsgi_pass_request_headers
+syn keyword ngxDirective contained uwsgi_read_timeout
+syn keyword ngxDirective contained uwsgi_request_buffering
+syn keyword ngxDirective contained uwsgi_send_timeout
+syn keyword ngxDirective contained uwsgi_ssl_certificate
+syn keyword ngxDirective contained uwsgi_ssl_certificate_key
+syn keyword ngxDirective contained uwsgi_ssl_ciphers
+syn keyword ngxDirective contained uwsgi_ssl_crl
+syn keyword ngxDirective contained uwsgi_ssl_name
+syn keyword ngxDirective contained uwsgi_ssl_password_file
+syn keyword ngxDirective contained uwsgi_ssl_protocols
+syn keyword ngxDirective contained uwsgi_ssl_server_name
+syn keyword ngxDirective contained uwsgi_ssl_session_reuse
+syn keyword ngxDirective contained uwsgi_ssl_trusted_certificate
+syn keyword ngxDirective contained uwsgi_ssl_verify
+syn keyword ngxDirective contained uwsgi_ssl_verify_depth
+syn keyword ngxDirective contained uwsgi_store
+syn keyword ngxDirective contained uwsgi_store_access
+syn keyword ngxDirective contained uwsgi_string
+syn keyword ngxDirective contained uwsgi_temp_file_write_size
+syn keyword ngxDirective contained uwsgi_temp_path
+syn keyword ngxDirective contained valid_referers
+syn keyword ngxDirective contained variables_hash_bucket_size
+syn keyword ngxDirective contained variables_hash_max_size
+syn keyword ngxDirective contained worker_aio_requests
+syn keyword ngxDirective contained worker_connections
+syn keyword ngxDirective contained worker_cpu_affinity
+syn keyword ngxDirective contained worker_priority
+syn keyword ngxDirective contained worker_processes
+syn keyword ngxDirective contained worker_rlimit_core
+syn keyword ngxDirective contained worker_rlimit_nofile
+syn keyword ngxDirective contained worker_shutdown_timeout
+syn keyword ngxDirective contained working_directory
+syn keyword ngxDirective contained xclient
+syn keyword ngxDirective contained xml_entities
+syn keyword ngxDirective contained xslt_last_modified
+syn keyword ngxDirective contained xslt_param
+syn keyword ngxDirective contained xslt_string_param
+syn keyword ngxDirective contained xslt_stylesheet
+syn keyword ngxDirective contained xslt_types
+syn keyword ngxDirective contained zone
+
+" 3rd party modules list taken from
+" https://github.com/freebsd/freebsd-ports/blob/master/www/nginx-devel/Makefile
+" -----------------------------------------------------------------------------
+
+" Accept Language
+" https://github.com/giom/nginx_accept_language_module
+syn keyword ngxDirectiveThirdParty contained set_from_accept_language
+
+" Digest Authentication
+" https://github.com/atomx/nginx-http-auth-digest
+syn keyword ngxDirectiveThirdParty contained auth_digest
+syn keyword ngxDirectiveThirdParty contained auth_digest_drop_time
+syn keyword ngxDirectiveThirdParty contained auth_digest_evasion_time
+syn keyword ngxDirectiveThirdParty contained auth_digest_expires
+syn keyword ngxDirectiveThirdParty contained auth_digest_maxtries
+syn keyword ngxDirectiveThirdParty contained auth_digest_replays
+syn keyword ngxDirectiveThirdParty contained auth_digest_shm_size
+syn keyword ngxDirectiveThirdParty contained auth_digest_timeout
+syn keyword ngxDirectiveThirdParty contained auth_digest_user_file
+
+" SPNEGO Authentication
+" https://github.com/stnoonan/spnego-http-auth-nginx-module
+syn keyword ngxDirectiveThirdParty contained auth_gss
+syn keyword ngxDirectiveThirdParty contained auth_gss_allow_basic_fallback
+syn keyword ngxDirectiveThirdParty contained auth_gss_authorized_principal
+syn keyword ngxDirectiveThirdParty contained auth_gss_force_realm
+syn keyword ngxDirectiveThirdParty contained auth_gss_format_full
+syn keyword ngxDirectiveThirdParty contained auth_gss_keytab
+syn keyword ngxDirectiveThirdParty contained auth_gss_realm
+syn keyword ngxDirectiveThirdParty contained auth_gss_service_name
+
+" LDAP Authentication
+" https://github.com/kvspb/nginx-auth-ldap
+syn keyword ngxDirectiveThirdParty contained auth_ldap
+syn keyword ngxDirectiveThirdParty contained auth_ldap_cache_enabled
+syn keyword ngxDirectiveThirdParty contained auth_ldap_cache_expiration_time
+syn keyword ngxDirectiveThirdParty contained auth_ldap_cache_size
+syn keyword ngxDirectiveThirdParty contained auth_ldap_servers
+syn keyword ngxDirectiveThirdParty contained auth_ldap_servers_size
+syn keyword ngxDirectiveThirdParty contained ldap_server
+
+" PAM Authentication
+" https://github.com/sto/ngx_http_auth_pam_module
+syn keyword ngxDirectiveThirdParty contained auth_pam
+syn keyword ngxDirectiveThirdParty contained auth_pam_service_name
+syn keyword ngxDirectiveThirdParty contained auth_pam_set_pam_env
+
+" AJP protocol proxy
+" https://github.com/yaoweibin/nginx_ajp_module
+syn keyword ngxDirectiveThirdParty contained ajp_buffer_size
+syn keyword ngxDirectiveThirdParty contained ajp_buffers
+syn keyword ngxDirectiveThirdParty contained ajp_busy_buffers_size
+syn keyword ngxDirectiveThirdParty contained ajp_cache
+syn keyword ngxDirectiveThirdParty contained ajp_cache_key
+syn keyword ngxDirectiveThirdParty contained ajp_cache_lock
+syn keyword ngxDirectiveThirdParty contained ajp_cache_lock_timeout
+syn keyword ngxDirectiveThirdParty contained ajp_cache_methods
+syn keyword ngxDirectiveThirdParty contained ajp_cache_min_uses
+syn keyword ngxDirectiveThirdParty contained ajp_cache_path
+syn keyword ngxDirectiveThirdParty contained ajp_cache_use_stale
+syn keyword ngxDirectiveThirdParty contained ajp_cache_valid
+syn keyword ngxDirectiveThirdParty contained ajp_connect_timeout
+syn keyword ngxDirectiveThirdParty contained ajp_header_packet_buffer_size
+syn keyword ngxDirectiveThirdParty contained ajp_hide_header
+syn keyword ngxDirectiveThirdParty contained ajp_ignore_client_abort
+syn keyword ngxDirectiveThirdParty contained ajp_ignore_headers
+syn keyword ngxDirectiveThirdParty contained ajp_intercept_errors
+syn keyword ngxDirectiveThirdParty contained ajp_keep_conn
+syn keyword ngxDirectiveThirdParty contained ajp_max_data_packet_size
+syn keyword ngxDirectiveThirdParty contained ajp_max_temp_file_size
+syn keyword ngxDirectiveThirdParty contained ajp_next_upstream
+syn keyword ngxDirectiveThirdParty contained ajp_pass
+syn keyword ngxDirectiveThirdParty contained ajp_pass_header
+syn keyword ngxDirectiveThirdParty contained ajp_pass_request_body
+syn keyword ngxDirectiveThirdParty contained ajp_pass_request_headers
+syn keyword ngxDirectiveThirdParty contained ajp_read_timeout
+syn keyword ngxDirectiveThirdParty contained ajp_send_lowat
+syn keyword ngxDirectiveThirdParty contained ajp_send_timeout
+syn keyword ngxDirectiveThirdParty contained ajp_store
+syn keyword ngxDirectiveThirdParty contained ajp_store_access
+syn keyword ngxDirectiveThirdParty contained ajp_temp_file_write_size
+syn keyword ngxDirectiveThirdParty contained ajp_temp_path
+syn keyword ngxDirectiveThirdParty contained ajp_upstream_fail_timeout
+syn keyword ngxDirectiveThirdParty contained ajp_upstream_max_fails
+
+" AWS proxy
+" https://github.com/anomalizer/ngx_aws_auth
+syn keyword ngxDirectiveThirdParty contained aws_access_key
+syn keyword ngxDirectiveThirdParty contained aws_endpoint
+syn keyword ngxDirectiveThirdParty contained aws_key_scope
+syn keyword ngxDirectiveThirdParty contained aws_s3_bucket
+syn keyword ngxDirectiveThirdParty contained aws_sign
+syn keyword ngxDirectiveThirdParty contained aws_signing_key
+
+" embedding Clojure or Java or Groovy programs
+" https://github.com/nginx-clojure/nginx-clojure
+syn keyword ngxDirectiveThirdParty contained access_handler_code
+syn keyword ngxDirectiveThirdParty contained access_handler_name
+syn keyword ngxDirectiveThirdParty contained access_handler_property
+syn keyword ngxDirectiveThirdParty contained access_handler_type
+syn keyword ngxDirectiveThirdParty contained always_read_body
+syn keyword ngxDirectiveThirdParty contained auto_upgrade_ws
+syn keyword ngxDirectiveThirdParty contained body_filter_code
+syn keyword ngxDirectiveThirdParty contained body_filter_name
+syn keyword ngxDirectiveThirdParty contained body_filter_property
+syn keyword ngxDirectiveThirdParty contained body_filter_type
+syn keyword ngxDirectiveThirdParty contained content_handler_code
+syn keyword ngxDirectiveThirdParty contained content_handler_name
+syn keyword ngxDirectiveThirdParty contained content_handler_property
+syn keyword ngxDirectiveThirdParty contained content_handler_type
+syn keyword ngxDirectiveThirdParty contained handler_code
+syn keyword ngxDirectiveThirdParty contained handler_name
+syn keyword ngxDirectiveThirdParty contained handler_type
+syn keyword ngxDirectiveThirdParty contained handlers_lazy_init
+syn keyword ngxDirectiveThirdParty contained header_filter_code
+syn keyword ngxDirectiveThirdParty contained header_filter_name
+syn keyword ngxDirectiveThirdParty contained header_filter_property
+syn keyword ngxDirectiveThirdParty contained header_filter_type
+syn keyword ngxDirectiveThirdParty contained jvm_classpath
+syn keyword ngxDirectiveThirdParty contained jvm_classpath_check
+syn keyword ngxDirectiveThirdParty contained jvm_exit_handler_code
+syn keyword ngxDirectiveThirdParty contained jvm_exit_handler_name
+syn keyword ngxDirectiveThirdParty contained jvm_handler_type
+syn keyword ngxDirectiveThirdParty contained jvm_init_handler_code
+syn keyword ngxDirectiveThirdParty contained jvm_init_handler_name
+syn keyword ngxDirectiveThirdParty contained jvm_options
+syn keyword ngxDirectiveThirdParty contained jvm_path
+syn keyword ngxDirectiveThirdParty contained jvm_var
+syn keyword ngxDirectiveThirdParty contained jvm_workers
+syn keyword ngxDirectiveThirdParty contained max_balanced_tcp_connections
+syn keyword ngxDirectiveThirdParty contained rewrite_handler_code
+syn keyword ngxDirectiveThirdParty contained rewrite_handler_name
+syn keyword ngxDirectiveThirdParty contained rewrite_handler_property
+syn keyword ngxDirectiveThirdParty contained rewrite_handler_type
+syn keyword ngxDirectiveThirdParty contained shared_map
+syn keyword ngxDirectiveThirdParty contained write_page_size
+
+" Certificate Transparency
+" https://github.com/grahamedgecombe/nginx-ct
+syn keyword ngxDirectiveThirdParty contained ssl_ct
+syn keyword ngxDirectiveThirdParty contained ssl_ct_static_scts
+
+" ngx_echo
+" https://github.com/openresty/echo-nginx-module
+syn keyword ngxDirectiveThirdParty contained echo_abort_parent
+syn keyword ngxDirectiveThirdParty contained echo_after_body
+syn keyword ngxDirectiveThirdParty contained echo_before_body
+syn keyword ngxDirectiveThirdParty contained echo_blocking_sleep
+syn keyword ngxDirectiveThirdParty contained echo_end
+syn keyword ngxDirectiveThirdParty contained echo_exec
+syn keyword ngxDirectiveThirdParty contained echo_flush
+syn keyword ngxDirectiveThirdParty contained echo_foreach_split
+syn keyword ngxDirectiveThirdParty contained echo_location
+syn keyword ngxDirectiveThirdParty contained echo_location_async
+syn keyword ngxDirectiveThirdParty contained echo_read_request_body
+syn keyword ngxDirectiveThirdParty contained echo_request_body
+syn keyword ngxDirectiveThirdParty contained echo_reset_timer
+syn keyword ngxDirectiveThirdParty contained echo_status
+syn keyword ngxDirectiveThirdParty contained echo_subrequest
+syn keyword ngxDirectiveThirdParty contained echo_subrequest_async
+
+" FastDFS
+" https://github.com/happyfish100/fastdfs-nginx-module
+syn keyword ngxDirectiveThirdParty contained ngx_fastdfs_module
+
+" ngx_headers_more
+" https://github.com/openresty/headers-more-nginx-module
+syn keyword ngxDirectiveThirdParty contained more_clear_headers
+syn keyword ngxDirectiveThirdParty contained more_clear_input_headers
+syn keyword ngxDirectiveThirdParty contained more_set_headers
+syn keyword ngxDirectiveThirdParty contained more_set_input_headers
+
+" NGINX WebDAV missing commands support (PROPFIND & OPTIONS)
+" https://github.com/arut/nginx-dav-ext-module
+syn keyword ngxDirectiveThirdParty contained dav_ext_methods
+
+" ngx_eval
+" https://github.com/openresty/nginx-eval-module
+syn keyword ngxDirectiveThirdParty contained eval
+syn keyword ngxDirectiveThirdParty contained eval_buffer_size
+syn keyword ngxDirectiveThirdParty contained eval_escalate
+syn keyword ngxDirectiveThirdParty contained eval_override_content_type
+syn keyword ngxDirectiveThirdParty contained eval_subrequest_in_memory
+
+" Fancy Index
+" https://github.com/aperezdc/ngx-fancyindex
+syn keyword ngxDirectiveThirdParty contained fancyindex
+syn keyword ngxDirectiveThirdParty contained fancyindex_css_href
+syn keyword ngxDirectiveThirdParty contained fancyindex_default_sort
+syn keyword ngxDirectiveThirdParty contained fancyindex_directories_first
+syn keyword ngxDirectiveThirdParty contained fancyindex_exact_size
+syn keyword ngxDirectiveThirdParty contained fancyindex_footer
+syn keyword ngxDirectiveThirdParty contained fancyindex_header
+syn keyword ngxDirectiveThirdParty contained fancyindex_hide_symlinks
+syn keyword ngxDirectiveThirdParty contained fancyindex_ignore
+syn keyword ngxDirectiveThirdParty contained fancyindex_localtime
+syn keyword ngxDirectiveThirdParty contained fancyindex_name_length
+syn keyword ngxDirectiveThirdParty contained fancyindex_show_path
+syn keyword ngxDirectiveThirdParty contained fancyindex_time_format
+
+" Footer filter
+" https://github.com/alibaba/nginx-http-footer-filter
+syn keyword ngxDirectiveThirdParty contained footer
+syn keyword ngxDirectiveThirdParty contained footer_types
+
+" ngx_http_geoip2_module
+" https://github.com/leev/ngx_http_geoip2_module
+syn keyword ngxDirectiveThirdParty contained geoip2
+syn keyword ngxDirectiveThirdParty contained geoip2_proxy
+syn keyword ngxDirectiveThirdParty contained geoip2_proxy_recursive
+
+" A version of the Nginx HTTP stub status module that outputs in JSON format
+" https://github.com/nginx-modules/nginx-json-status-module
+syn keyword ngxDirectiveThirdParty contained json_status
+syn keyword ngxDirectiveThirdParty contained json_status_type
+
+" MogileFS client for nginx
+" https://github.com/vkholodkov/nginx-mogilefs-module
+syn keyword ngxDirectiveThirdParty contained mogilefs_class
+syn keyword ngxDirectiveThirdParty contained mogilefs_connect_timeout
+syn keyword ngxDirectiveThirdParty contained mogilefs_domain
+syn keyword ngxDirectiveThirdParty contained mogilefs_methods
+syn keyword ngxDirectiveThirdParty contained mogilefs_noverify
+syn keyword ngxDirectiveThirdParty contained mogilefs_pass
+syn keyword ngxDirectiveThirdParty contained mogilefs_read_timeout
+syn keyword ngxDirectiveThirdParty contained mogilefs_send_timeout
+syn keyword ngxDirectiveThirdParty contained mogilefs_tracker
+
+" Ancient nginx plugin; probably not useful to anyone
+" https://github.com/kr/nginx-notice
+syn keyword ngxDirectiveThirdParty contained notice
+syn keyword ngxDirectiveThirdParty contained notice_type
+
+" nchan
+" https://github.com/slact/nchan
+syn keyword ngxDirectiveThirdParty contained nchan_access_control_allow_origin
+syn keyword ngxDirectiveThirdParty contained nchan_authorize_request
+syn keyword ngxDirectiveThirdParty contained nchan_channel_event_string
+syn keyword ngxDirectiveThirdParty contained nchan_channel_events_channel_id
+syn keyword ngxDirectiveThirdParty contained nchan_channel_group
+syn keyword ngxDirectiveThirdParty contained nchan_channel_group_accounting
+syn keyword ngxDirectiveThirdParty contained nchan_channel_id
+syn keyword ngxDirectiveThirdParty contained nchan_channel_id_split_delimiter
+syn keyword ngxDirectiveThirdParty contained nchan_channel_timeout
+syn keyword ngxDirectiveThirdParty contained nchan_deflate_message_for_websocket
+syn keyword ngxDirectiveThirdParty contained nchan_eventsource_event
+syn keyword ngxDirectiveThirdParty contained nchan_group_location
+syn keyword ngxDirectiveThirdParty contained nchan_group_max_channels
+syn keyword ngxDirectiveThirdParty contained nchan_group_max_messages
+syn keyword ngxDirectiveThirdParty contained nchan_group_max_messages_disk
+syn keyword ngxDirectiveThirdParty contained nchan_group_max_messages_memory
+syn keyword ngxDirectiveThirdParty contained nchan_group_max_subscribers
+syn keyword ngxDirectiveThirdParty contained nchan_longpoll_multipart_response
+syn keyword ngxDirectiveThirdParty contained nchan_max_channel_id_length
+syn keyword ngxDirectiveThirdParty contained nchan_max_channel_subscribers
+syn keyword ngxDirectiveThirdParty contained nchan_max_reserved_memory
+syn keyword ngxDirectiveThirdParty contained nchan_message_buffer_length
+syn keyword ngxDirectiveThirdParty contained nchan_message_max_buffer_length
+syn keyword ngxDirectiveThirdParty contained nchan_message_temp_path
+syn keyword ngxDirectiveThirdParty contained nchan_message_timeout
+syn keyword ngxDirectiveThirdParty contained nchan_permessage_deflate_compression_level
+syn keyword ngxDirectiveThirdParty contained nchan_permessage_deflate_compression_memlevel
+syn keyword ngxDirectiveThirdParty contained nchan_permessage_deflate_compression_strategy
+syn keyword ngxDirectiveThirdParty contained nchan_permessage_deflate_compression_window
+syn keyword ngxDirectiveThirdParty contained nchan_pub_channel_id
+syn keyword ngxDirectiveThirdParty contained nchan_publisher
+syn keyword ngxDirectiveThirdParty contained nchan_publisher_channel_id
+syn keyword ngxDirectiveThirdParty contained nchan_publisher_location
+syn keyword ngxDirectiveThirdParty contained nchan_publisher_upstream_request
+syn keyword ngxDirectiveThirdParty contained nchan_pubsub
+syn keyword ngxDirectiveThirdParty contained nchan_pubsub_channel_id
+syn keyword ngxDirectiveThirdParty contained nchan_pubsub_location
+syn keyword ngxDirectiveThirdParty contained nchan_redis_fakesub_timer_interval
+syn keyword ngxDirectiveThirdParty contained nchan_redis_idle_channel_cache_timeout
+syn keyword ngxDirectiveThirdParty contained nchan_redis_namespace
+syn keyword ngxDirectiveThirdParty contained nchan_redis_pass
+syn keyword ngxDirectiveThirdParty contained nchan_redis_pass_inheritable
+syn keyword ngxDirectiveThirdParty contained nchan_redis_ping_interval
+syn keyword ngxDirectiveThirdParty contained nchan_redis_publish_msgpacked_max_size
+syn keyword ngxDirectiveThirdParty contained nchan_redis_server
+syn keyword ngxDirectiveThirdParty contained nchan_redis_storage_mode
+syn keyword ngxDirectiveThirdParty contained nchan_redis_url
+syn keyword ngxDirectiveThirdParty contained nchan_redis_wait_after_connecting
+syn keyword ngxDirectiveThirdParty contained nchan_shared_memory_size
+syn keyword ngxDirectiveThirdParty contained nchan_storage_engine
+syn keyword ngxDirectiveThirdParty contained nchan_store_messages
+syn keyword ngxDirectiveThirdParty contained nchan_stub_status
+syn keyword ngxDirectiveThirdParty contained nchan_sub_channel_id
+syn keyword ngxDirectiveThirdParty contained nchan_subscribe_existing_channels_only
+syn keyword ngxDirectiveThirdParty contained nchan_subscribe_request
+syn keyword ngxDirectiveThirdParty contained nchan_subscriber
+syn keyword ngxDirectiveThirdParty contained nchan_subscriber_channel_id
+syn keyword ngxDirectiveThirdParty contained nchan_subscriber_compound_etag_message_id
+syn keyword ngxDirectiveThirdParty contained nchan_subscriber_first_message
+syn keyword ngxDirectiveThirdParty contained nchan_subscriber_http_raw_stream_separator
+syn keyword ngxDirectiveThirdParty contained nchan_subscriber_last_message_id
+syn keyword ngxDirectiveThirdParty contained nchan_subscriber_location
+syn keyword ngxDirectiveThirdParty contained nchan_subscriber_message_id_custom_etag_header
+syn keyword ngxDirectiveThirdParty contained nchan_subscriber_timeout
+syn keyword ngxDirectiveThirdParty contained nchan_unsubscribe_request
+syn keyword ngxDirectiveThirdParty contained nchan_use_redis
+syn keyword ngxDirectiveThirdParty contained nchan_websocket_client_heartbeat
+syn keyword ngxDirectiveThirdParty contained nchan_websocket_ping_interval
+syn keyword ngxDirectiveThirdParty contained push_authorized_channels_only
+syn keyword ngxDirectiveThirdParty contained push_channel_group
+syn keyword ngxDirectiveThirdParty contained push_channel_timeout
+syn keyword ngxDirectiveThirdParty contained push_max_channel_id_length
+syn keyword ngxDirectiveThirdParty contained push_max_channel_subscribers
+syn keyword ngxDirectiveThirdParty contained push_max_message_buffer_length
+syn keyword ngxDirectiveThirdParty contained push_max_reserved_memory
+syn keyword ngxDirectiveThirdParty contained push_message_buffer_length
+syn keyword ngxDirectiveThirdParty contained push_message_timeout
+syn keyword ngxDirectiveThirdParty contained push_min_message_buffer_length
+syn keyword ngxDirectiveThirdParty contained push_publisher
+syn keyword ngxDirectiveThirdParty contained push_store_messages
+syn keyword ngxDirectiveThirdParty contained push_subscriber
+syn keyword ngxDirectiveThirdParty contained push_subscriber_concurrency
+syn keyword ngxDirectiveThirdParty contained push_subscriber_timeout
+
+" Push Stream
+" https://github.com/wandenberg/nginx-push-stream-module
+syn keyword ngxDirectiveThirdParty contained push_stream_allow_connections_to_events_channel
+syn keyword ngxDirectiveThirdParty contained push_stream_allowed_origins
+syn keyword ngxDirectiveThirdParty contained push_stream_authorized_channels_only
+syn keyword ngxDirectiveThirdParty contained push_stream_channel_deleted_message_text
+syn keyword ngxDirectiveThirdParty contained push_stream_channel_inactivity_time
+syn keyword ngxDirectiveThirdParty contained push_stream_channel_info_on_publish
+syn keyword ngxDirectiveThirdParty contained push_stream_channels_path
+syn keyword ngxDirectiveThirdParty contained push_stream_channels_statistics
+syn keyword ngxDirectiveThirdParty contained push_stream_events_channel_id
+syn keyword ngxDirectiveThirdParty contained push_stream_footer_template
+syn keyword ngxDirectiveThirdParty contained push_stream_header_template
+syn keyword ngxDirectiveThirdParty contained push_stream_header_template_file
+syn keyword ngxDirectiveThirdParty contained push_stream_last_event_id
+syn keyword ngxDirectiveThirdParty contained push_stream_last_received_message_tag
+syn keyword ngxDirectiveThirdParty contained push_stream_last_received_message_time
+syn keyword ngxDirectiveThirdParty contained push_stream_longpolling_connection_ttl
+syn keyword ngxDirectiveThirdParty contained push_stream_max_channel_id_length
+syn keyword ngxDirectiveThirdParty contained push_stream_max_messages_stored_per_channel
+syn keyword ngxDirectiveThirdParty contained push_stream_max_number_of_channels
+syn keyword ngxDirectiveThirdParty contained push_stream_max_number_of_wildcard_channels
+syn keyword ngxDirectiveThirdParty contained push_stream_max_subscribers_per_channel
+syn keyword ngxDirectiveThirdParty contained push_stream_message_template
+syn keyword ngxDirectiveThirdParty contained push_stream_message_ttl
+syn keyword ngxDirectiveThirdParty contained push_stream_padding_by_user_agent
+syn keyword ngxDirectiveThirdParty contained push_stream_ping_message_interval
+syn keyword ngxDirectiveThirdParty contained push_stream_ping_message_text
+syn keyword ngxDirectiveThirdParty contained push_stream_publisher
+syn keyword ngxDirectiveThirdParty contained push_stream_shared_memory_size
+syn keyword ngxDirectiveThirdParty contained push_stream_store_messages
+syn keyword ngxDirectiveThirdParty contained push_stream_subscriber
+syn keyword ngxDirectiveThirdParty contained push_stream_subscriber_connection_ttl
+syn keyword ngxDirectiveThirdParty contained push_stream_timeout_with_body
+syn keyword ngxDirectiveThirdParty contained push_stream_user_agent
+syn keyword ngxDirectiveThirdParty contained push_stream_websocket_allow_publish
+syn keyword ngxDirectiveThirdParty contained push_stream_wildcard_channel_max_qtd
+syn keyword ngxDirectiveThirdParty contained push_stream_wildcard_channel_prefix
+
+" redis module
+" https://www.nginx.com/resources/wiki/modules/redis/
+syn keyword ngxDirectiveThirdParty contained redis_bind
+syn keyword ngxDirectiveThirdParty contained redis_buffer_size
+syn keyword ngxDirectiveThirdParty contained redis_connect_timeout
+syn keyword ngxDirectiveThirdParty contained redis_gzip_flag
+syn keyword ngxDirectiveThirdParty contained redis_next_upstream
+syn keyword ngxDirectiveThirdParty contained redis_pass
+syn keyword ngxDirectiveThirdParty contained redis_read_timeout
+syn keyword ngxDirectiveThirdParty contained redis_send_timeout
+
+" ngx_http_response
+" http://catap.ru/downloads/nginx/
+syn keyword ngxDirectiveThirdParty contained response
+syn keyword ngxDirectiveThirdParty contained response_type
+
+" nginx_substitutions_filter
+" https://github.com/yaoweibin/ngx_http_substitutions_filter_module
+syn keyword ngxDirectiveThirdParty contained subs_buffers
+syn keyword ngxDirectiveThirdParty contained subs_filter
+syn keyword ngxDirectiveThirdParty contained subs_filter_bypass
+syn keyword ngxDirectiveThirdParty contained subs_filter_types
+syn keyword ngxDirectiveThirdParty contained subs_line_buffer_size
+
+" Tarantool nginx upstream module
+" https://github.com/tarantool/nginx_upstream_module
+syn keyword ngxDirectiveThirdParty contained tnt_allowed_indexes
+syn keyword ngxDirectiveThirdParty contained tnt_allowed_spaces
+syn keyword ngxDirectiveThirdParty contained tnt_buffer_size
+syn keyword ngxDirectiveThirdParty contained tnt_connect_timeout
+syn keyword ngxDirectiveThirdParty contained tnt_delete
+syn keyword ngxDirectiveThirdParty contained tnt_http_methods
+syn keyword ngxDirectiveThirdParty contained tnt_http_rest_methods
+syn keyword ngxDirectiveThirdParty contained tnt_in_multiplier
+syn keyword ngxDirectiveThirdParty contained tnt_insert
+syn keyword ngxDirectiveThirdParty contained tnt_method
+syn keyword ngxDirectiveThirdParty contained tnt_multireturn_skip_count
+syn keyword ngxDirectiveThirdParty contained tnt_next_upstream
+syn keyword ngxDirectiveThirdParty contained tnt_next_upstream_timeout
+syn keyword ngxDirectiveThirdParty contained tnt_next_upstream_tries
+syn keyword ngxDirectiveThirdParty contained tnt_out_multiplier
+syn keyword ngxDirectiveThirdParty contained tnt_pass
+syn keyword ngxDirectiveThirdParty contained tnt_pass_http_request
+syn keyword ngxDirectiveThirdParty contained tnt_pass_http_request_buffer_size
+syn keyword ngxDirectiveThirdParty contained tnt_pure_result
+syn keyword ngxDirectiveThirdParty contained tnt_read_timeout
+syn keyword ngxDirectiveThirdParty contained tnt_replace
+syn keyword ngxDirectiveThirdParty contained tnt_select
+syn keyword ngxDirectiveThirdParty contained tnt_select_limit_max
+syn keyword ngxDirectiveThirdParty contained tnt_send_timeout
+syn keyword ngxDirectiveThirdParty contained tnt_set_header
+syn keyword ngxDirectiveThirdParty contained tnt_update
+syn keyword ngxDirectiveThirdParty contained tnt_upsert
+
+" A module for nginx web server for handling file uploads using multipart/form-data encoding (RFC 1867)
+" https://github.com/Austinb/nginx-upload-module
+syn keyword ngxDirectiveThirdParty contained upload_aggregate_form_field
+syn keyword ngxDirectiveThirdParty contained upload_archive_elm
+syn keyword ngxDirectiveThirdParty contained upload_archive_elm_separator
+syn keyword ngxDirectiveThirdParty contained upload_archive_path
+syn keyword ngxDirectiveThirdParty contained upload_archive_path_separator
+syn keyword ngxDirectiveThirdParty contained upload_buffer_size
+syn keyword ngxDirectiveThirdParty contained upload_cleanup
+syn keyword ngxDirectiveThirdParty contained upload_content_type
+syn keyword ngxDirectiveThirdParty contained upload_discard
+syn keyword ngxDirectiveThirdParty contained upload_field_name
+syn keyword ngxDirectiveThirdParty contained upload_file_crc32
+syn keyword ngxDirectiveThirdParty contained upload_file_md5
+syn keyword ngxDirectiveThirdParty contained upload_file_md5_uc
+syn keyword ngxDirectiveThirdParty contained upload_file_name
+syn keyword ngxDirectiveThirdParty contained upload_file_sha1
+syn keyword ngxDirectiveThirdParty contained upload_file_sha1_uc
+syn keyword ngxDirectiveThirdParty contained upload_file_size
+syn keyword ngxDirectiveThirdParty contained upload_filter
+syn keyword ngxDirectiveThirdParty contained upload_max_file_size
+syn keyword ngxDirectiveThirdParty contained upload_max_output_body_len
+syn keyword ngxDirectiveThirdParty contained upload_max_part_header_len
+syn keyword ngxDirectiveThirdParty contained upload_pass
+syn keyword ngxDirectiveThirdParty contained upload_pass_args
+syn keyword ngxDirectiveThirdParty contained upload_pass_form_field
+syn keyword ngxDirectiveThirdParty contained upload_set_form_field
+syn keyword ngxDirectiveThirdParty contained upload_store
+syn keyword ngxDirectiveThirdParty contained upload_store_access
+syn keyword ngxDirectiveThirdParty contained upload_tmp_path
+syn keyword ngxDirectiveThirdParty contained upload_unzip
+syn keyword ngxDirectiveThirdParty contained upload_unzip_buffers
+syn keyword ngxDirectiveThirdParty contained upload_unzip_hash
+syn keyword ngxDirectiveThirdParty contained upload_unzip_max_file_name_len
+syn keyword ngxDirectiveThirdParty contained upload_unzip_window
+syn keyword ngxDirectiveThirdParty contained upload_void_content_type
+
+" nginx-upload-progress-module
+" https://github.com/masterzen/nginx-upload-progress-module
+syn keyword ngxDirectiveThirdParty contained report_uploads
+syn keyword ngxDirectiveThirdParty contained track_uploads
+syn keyword ngxDirectiveThirdParty contained upload_progress
+syn keyword ngxDirectiveThirdParty contained upload_progress_content_type
+syn keyword ngxDirectiveThirdParty contained upload_progress_header
+syn keyword ngxDirectiveThirdParty contained upload_progress_java_output
+syn keyword ngxDirectiveThirdParty contained upload_progress_json_output
+syn keyword ngxDirectiveThirdParty contained upload_progress_jsonp_output
+syn keyword ngxDirectiveThirdParty contained upload_progress_jsonp_parameter
+syn keyword ngxDirectiveThirdParty contained upload_progress_template
+
+" Health checks upstreams for nginx
+" https://github.com/yaoweibin/nginx_upstream_check_module
+syn keyword ngxDirectiveThirdParty contained check
+syn keyword ngxDirectiveThirdParty contained check_fastcgi_param
+syn keyword ngxDirectiveThirdParty contained check_http_expect_alive
+syn keyword ngxDirectiveThirdParty contained check_http_send
+syn keyword ngxDirectiveThirdParty contained check_keepalive_requests
+syn keyword ngxDirectiveThirdParty contained check_shm_size
+syn keyword ngxDirectiveThirdParty contained check_status
+
+" The fair load balancer module for nginx
+" https://github.com/cryptofuture/nginx-upstream-fair
+syn keyword ngxDirectiveThirdParty contained fair
+syn keyword ngxDirectiveThirdParty contained upstream_fair_shm_size
+
+" Nginx Video Thumb Extractor Module
+" https://github.com/wandenberg/nginx-video-thumbextractor-module
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_image_height
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_image_width
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_baseline
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_dpi
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_optimize
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_progressive_mode
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_quality
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_smooth
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_next_time
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_only_keyframe
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_processes_per_worker
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_threads
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_color
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_cols
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_margin
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_max_cols
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_max_rows
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_padding
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_rows
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_sample_interval
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_video_filename
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_video_second
+
+" drizzle-nginx-module - Upstream module for talking to MySQL and Drizzle directly
+" https://github.com/openresty/drizzle-nginx-module
+syn keyword ngxDirectiveThirdParty contained drizzle_buffer_size
+syn keyword ngxDirectiveThirdParty contained drizzle_connect_timeout
+syn keyword ngxDirectiveThirdParty contained drizzle_dbname
+syn keyword ngxDirectiveThirdParty contained drizzle_keepalive
+syn keyword ngxDirectiveThirdParty contained drizzle_module_header
+syn keyword ngxDirectiveThirdParty contained drizzle_pass
+syn keyword ngxDirectiveThirdParty contained drizzle_query
+syn keyword ngxDirectiveThirdParty contained drizzle_recv_cols_timeout
+syn keyword ngxDirectiveThirdParty contained drizzle_recv_rows_timeout
+syn keyword ngxDirectiveThirdParty contained drizzle_send_query_timeout
+syn keyword ngxDirectiveThirdParty contained drizzle_server
+syn keyword ngxDirectiveThirdParty contained drizzle_status
+
+" ngx_dynamic_upstream
+" https://github.com/cubicdaiya/ngx_dynamic_upstream
+syn keyword ngxDirectiveThirdParty contained dynamic_upstream
+
+" encrypt and decrypt nginx variable values
+" https://github.com/openresty/encrypted-session-nginx-module
+syn keyword ngxDirectiveThirdParty contained encrypted_session_expires
+syn keyword ngxDirectiveThirdParty contained encrypted_session_iv
+syn keyword ngxDirectiveThirdParty contained encrypted_session_key
+syn keyword ngxDirectiveThirdParty contained set_decrypt_session
+syn keyword ngxDirectiveThirdParty contained set_encrypt_session
+
+" serve content directly from MongoDB's GridFS
+" https://github.com/mdirolf/nginx-gridfs
+syn keyword ngxDirectiveThirdParty contained gridfs
+syn keyword ngxDirectiveThirdParty contained mongo
+
+" Adds support for arithmetic operations to NGINX config
+" https://github.com/arut/nginx-let-module
+syn keyword ngxDirectiveThirdParty contained let
+
+" ngx_http_lua_module - Embed the power of Lua into Nginx HTTP Servers
+" https://github.com/openresty/lua-nginx-module
+syn keyword ngxDirectiveThirdParty contained access_by_lua
+syn keyword ngxDirectiveThirdParty contained access_by_lua_block
+syn keyword ngxDirectiveThirdParty contained access_by_lua_file
+syn keyword ngxDirectiveThirdParty contained access_by_lua_no_postpone
+syn keyword ngxDirectiveThirdParty contained balancer_by_lua_block
+syn keyword ngxDirectiveThirdParty contained balancer_by_lua_file
+syn keyword ngxDirectiveThirdParty contained body_filter_by_lua
+syn keyword ngxDirectiveThirdParty contained body_filter_by_lua_block
+syn keyword ngxDirectiveThirdParty contained body_filter_by_lua_file
+syn keyword ngxDirectiveThirdParty contained content_by_lua
+syn keyword ngxDirectiveThirdParty contained content_by_lua_block
+syn keyword ngxDirectiveThirdParty contained content_by_lua_file
+syn keyword ngxDirectiveThirdParty contained header_filter_by_lua
+syn keyword ngxDirectiveThirdParty contained header_filter_by_lua_block
+syn keyword ngxDirectiveThirdParty contained header_filter_by_lua_file
+syn keyword ngxDirectiveThirdParty contained init_by_lua
+syn keyword ngxDirectiveThirdParty contained init_by_lua_block
+syn keyword ngxDirectiveThirdParty contained init_by_lua_file
+syn keyword ngxDirectiveThirdParty contained init_worker_by_lua
+syn keyword ngxDirectiveThirdParty contained init_worker_by_lua_block
+syn keyword ngxDirectiveThirdParty contained init_worker_by_lua_file
+syn keyword ngxDirectiveThirdParty contained log_by_lua
+syn keyword ngxDirectiveThirdParty contained log_by_lua_block
+syn keyword ngxDirectiveThirdParty contained log_by_lua_file
+syn keyword ngxDirectiveThirdParty contained lua_capture_error_log
+syn keyword ngxDirectiveThirdParty contained lua_check_client_abort
+syn keyword ngxDirectiveThirdParty contained lua_code_cache
+syn keyword ngxDirectiveThirdParty contained lua_fake_shm
+syn keyword ngxDirectiveThirdParty contained lua_http10_buffering
+syn keyword ngxDirectiveThirdParty contained lua_malloc_trim
+syn keyword ngxDirectiveThirdParty contained lua_max_pending_timers
+syn keyword ngxDirectiveThirdParty contained lua_max_running_timers
+syn keyword ngxDirectiveThirdParty contained lua_need_request_body
+syn keyword ngxDirectiveThirdParty contained lua_package_cpath
+syn keyword ngxDirectiveThirdParty contained lua_package_path
+syn keyword ngxDirectiveThirdParty contained lua_regex_cache_max_entries
+syn keyword ngxDirectiveThirdParty contained lua_regex_match_limit
+syn keyword ngxDirectiveThirdParty contained lua_shared_dict
+syn keyword ngxDirectiveThirdParty contained lua_socket_buffer_size
+syn keyword ngxDirectiveThirdParty contained lua_socket_connect_timeout
+syn keyword ngxDirectiveThirdParty contained lua_socket_keepalive_timeout
+syn keyword ngxDirectiveThirdParty contained lua_socket_log_errors
+syn keyword ngxDirectiveThirdParty contained lua_socket_pool_size
+syn keyword ngxDirectiveThirdParty contained lua_socket_read_timeout
+syn keyword ngxDirectiveThirdParty contained lua_socket_send_lowat
+syn keyword ngxDirectiveThirdParty contained lua_socket_send_timeout
+syn keyword ngxDirectiveThirdParty contained lua_ssl_ciphers
+syn keyword ngxDirectiveThirdParty contained lua_ssl_crl
+syn keyword ngxDirectiveThirdParty contained lua_ssl_protocols
+syn keyword ngxDirectiveThirdParty contained lua_ssl_trusted_certificate
+syn keyword ngxDirectiveThirdParty contained lua_ssl_verify_depth
+syn keyword ngxDirectiveThirdParty contained lua_transform_underscores_in_response_headers
+syn keyword ngxDirectiveThirdParty contained lua_use_default_type
+syn keyword ngxDirectiveThirdParty contained rewrite_by_lua
+syn keyword ngxDirectiveThirdParty contained rewrite_by_lua_block
+syn keyword ngxDirectiveThirdParty contained rewrite_by_lua_file
+syn keyword ngxDirectiveThirdParty contained rewrite_by_lua_no_postpone
+syn keyword ngxDirectiveThirdParty contained set_by_lua
+syn keyword ngxDirectiveThirdParty contained set_by_lua_block
+syn keyword ngxDirectiveThirdParty contained set_by_lua_file
+syn keyword ngxDirectiveThirdParty contained ssl_certificate_by_lua_block
+syn keyword ngxDirectiveThirdParty contained ssl_certificate_by_lua_file
+syn keyword ngxDirectiveThirdParty contained ssl_session_fetch_by_lua_block
+syn keyword ngxDirectiveThirdParty contained ssl_session_fetch_by_lua_file
+syn keyword ngxDirectiveThirdParty contained ssl_session_store_by_lua_block
+syn keyword ngxDirectiveThirdParty contained ssl_session_store_by_lua_file
+
+" ngx_memc - An extended version of the standard memcached module
+" https://github.com/openresty/memc-nginx-module
+syn keyword ngxDirectiveThirdParty contained memc_buffer_size
+syn keyword ngxDirectiveThirdParty contained memc_cmds_allowed
+syn keyword ngxDirectiveThirdParty contained memc_connect_timeout
+syn keyword ngxDirectiveThirdParty contained memc_flags_to_last_modified
+syn keyword ngxDirectiveThirdParty contained memc_ignore_client_abort
+syn keyword ngxDirectiveThirdParty contained memc_next_upstream
+syn keyword ngxDirectiveThirdParty contained memc_pass
+syn keyword ngxDirectiveThirdParty contained memc_read_timeout
+syn keyword ngxDirectiveThirdParty contained memc_send_timeout
+syn keyword ngxDirectiveThirdParty contained memc_upstream_fail_timeout
+syn keyword ngxDirectiveThirdParty contained memc_upstream_max_fails
+
+" ModSecurity web application firewall
+" https://github.com/SpiderLabs/ModSecurity/tree/master
+syn keyword ngxDirectiveThirdParty contained ModSecurityConfig
+syn keyword ngxDirectiveThirdParty contained ModSecurityEnabled
+syn keyword ngxDirectiveThirdParty contained pool_context_hash_size
+
+" NAXSI is an open-source, high performance, low rules maintenance WAF for NGINX
+" https://github.com/nbs-system/naxsi
+syn keyword ngxDirectiveThirdParty contained BasicRule
+syn keyword ngxDirectiveThirdParty contained CheckRule
+syn keyword ngxDirectiveThirdParty contained DeniedUrl
+syn keyword ngxDirectiveThirdParty contained LearningMode
+syn keyword ngxDirectiveThirdParty contained LibInjectionSql
+syn keyword ngxDirectiveThirdParty contained LibInjectionXss
+syn keyword ngxDirectiveThirdParty contained MainRule
+syn keyword ngxDirectiveThirdParty contained SecRulesDisabled
+syn keyword ngxDirectiveThirdParty contained SecRulesEnabled
+syn keyword ngxDirectiveThirdParty contained basic_rule
+syn keyword ngxDirectiveThirdParty contained check_rule
+syn keyword ngxDirectiveThirdParty contained denied_url
+syn keyword ngxDirectiveThirdParty contained learning_mode
+syn keyword ngxDirectiveThirdParty contained libinjection_sql
+syn keyword ngxDirectiveThirdParty contained libinjection_xss
+syn keyword ngxDirectiveThirdParty contained main_rule
+syn keyword ngxDirectiveThirdParty contained rules_disabled
+syn keyword ngxDirectiveThirdParty contained rules_enabled
+
+" Phusion Passenger
+" https://www.phusionpassenger.com/library/config/nginx/reference/
+syn keyword ngxDirectiveThirdParty contained passenger_abort_on_startup_error
+syn keyword ngxDirectiveThirdParty contained passenger_abort_websockets_on_process_shutdown
+syn keyword ngxDirectiveThirdParty contained passenger_app_env
+syn keyword ngxDirectiveThirdParty contained passenger_app_file_descriptor_ulimit
+syn keyword ngxDirectiveThirdParty contained passenger_app_group_name
+syn keyword ngxDirectiveThirdParty contained passenger_app_rights
+syn keyword ngxDirectiveThirdParty contained passenger_app_root
+syn keyword ngxDirectiveThirdParty contained passenger_app_type
+syn keyword ngxDirectiveThirdParty contained passenger_base_uri
+syn keyword ngxDirectiveThirdParty contained passenger_buffer_response
+syn keyword ngxDirectiveThirdParty contained passenger_buffer_size
+syn keyword ngxDirectiveThirdParty contained passenger_buffers
+syn keyword ngxDirectiveThirdParty contained passenger_busy_buffers_size
+syn keyword ngxDirectiveThirdParty contained passenger_concurrency_model
+syn keyword ngxDirectiveThirdParty contained passenger_core_file_descriptor_ulimit
+syn keyword ngxDirectiveThirdParty contained passenger_ctl
+syn keyword ngxDirectiveThirdParty contained passenger_data_buffer_dir
+syn keyword ngxDirectiveThirdParty contained passenger_debugger
+syn keyword ngxDirectiveThirdParty contained passenger_default_group
+syn keyword ngxDirectiveThirdParty contained passenger_default_user
+syn keyword ngxDirectiveThirdParty contained passenger_disable_security_update_check
+syn keyword ngxDirectiveThirdParty contained passenger_document_root
+syn keyword ngxDirectiveThirdParty contained passenger_enabled
+syn keyword ngxDirectiveThirdParty contained passenger_env_var
+syn keyword ngxDirectiveThirdParty contained passenger_file_descriptor_log_file
+syn keyword ngxDirectiveThirdParty contained passenger_fly_with
+syn keyword ngxDirectiveThirdParty contained passenger_force_max_concurrent_requests_per_process
+syn keyword ngxDirectiveThirdParty contained passenger_friendly_error_pages
+syn keyword ngxDirectiveThirdParty contained passenger_group
+syn keyword ngxDirectiveThirdParty contained passenger_headers_hash_bucket_size
+syn keyword ngxDirectiveThirdParty contained passenger_headers_hash_max_size
+syn keyword ngxDirectiveThirdParty contained passenger_ignore_client_abort
+syn keyword ngxDirectiveThirdParty contained passenger_ignore_headers
+syn keyword ngxDirectiveThirdParty contained passenger_instance_registry_dir
+syn keyword ngxDirectiveThirdParty contained passenger_intercept_errors
+syn keyword ngxDirectiveThirdParty contained passenger_load_shell_envvars
+syn keyword ngxDirectiveThirdParty contained passenger_log_file
+syn keyword ngxDirectiveThirdParty contained passenger_log_level
+syn keyword ngxDirectiveThirdParty contained passenger_max_instances
+syn keyword ngxDirectiveThirdParty contained passenger_max_instances_per_app
+syn keyword ngxDirectiveThirdParty contained passenger_max_pool_size
+syn keyword ngxDirectiveThirdParty contained passenger_max_preloader_idle_time
+syn keyword ngxDirectiveThirdParty contained passenger_max_request_queue_size
+syn keyword ngxDirectiveThirdParty contained passenger_max_request_queue_time
+syn keyword ngxDirectiveThirdParty contained passenger_max_request_time
+syn keyword ngxDirectiveThirdParty contained passenger_max_requests
+syn keyword ngxDirectiveThirdParty contained passenger_memory_limit
+syn keyword ngxDirectiveThirdParty contained passenger_meteor_app_settings
+syn keyword ngxDirectiveThirdParty contained passenger_min_instances
+syn keyword ngxDirectiveThirdParty contained passenger_nodejs
+syn keyword ngxDirectiveThirdParty contained passenger_pass_header
+syn keyword ngxDirectiveThirdParty contained passenger_pool_idle_time
+syn keyword ngxDirectiveThirdParty contained passenger_pre_start
+syn keyword ngxDirectiveThirdParty contained passenger_python
+syn keyword ngxDirectiveThirdParty contained passenger_read_timeout
+syn keyword ngxDirectiveThirdParty contained passenger_request_queue_overflow_status_code
+syn keyword ngxDirectiveThirdParty contained passenger_resist_deployment_errors
+syn keyword ngxDirectiveThirdParty contained passenger_response_buffer_high_watermark
+syn keyword ngxDirectiveThirdParty contained passenger_restart_dir
+syn keyword ngxDirectiveThirdParty contained passenger_rolling_restarts
+syn keyword ngxDirectiveThirdParty contained passenger_root
+syn keyword ngxDirectiveThirdParty contained passenger_ruby
+syn keyword ngxDirectiveThirdParty contained passenger_security_update_check_proxy
+syn keyword ngxDirectiveThirdParty contained passenger_set_header
+syn keyword ngxDirectiveThirdParty contained passenger_show_version_in_header
+syn keyword ngxDirectiveThirdParty contained passenger_socket_backlog
+syn keyword ngxDirectiveThirdParty contained passenger_spawn_method
+syn keyword ngxDirectiveThirdParty contained passenger_start_timeout
+syn keyword ngxDirectiveThirdParty contained passenger_startup_file
+syn keyword ngxDirectiveThirdParty contained passenger_stat_throttle_rate
+syn keyword ngxDirectiveThirdParty contained passenger_sticky_sessions
+syn keyword ngxDirectiveThirdParty contained passenger_sticky_sessions_cookie_name
+syn keyword ngxDirectiveThirdParty contained passenger_thread_count
+syn keyword ngxDirectiveThirdParty contained passenger_turbocaching
+syn keyword ngxDirectiveThirdParty contained passenger_user
+syn keyword ngxDirectiveThirdParty contained passenger_user_switching
+syn keyword ngxDirectiveThirdParty contained passenger_vary_turbocache_by_cookie
+syn keyword ngxDirectiveThirdPartyDeprecated contained passenger_analytics_log_group
+syn keyword ngxDirectiveThirdPartyDeprecated contained passenger_analytics_log_user
+syn keyword ngxDirectiveThirdPartyDeprecated contained passenger_debug_log_file
+syn keyword ngxDirectiveThirdPartyDeprecated contained passenger_use_global_queue
+syn keyword ngxDirectiveThirdPartyDeprecated contained rack_env
+syn keyword ngxDirectiveThirdPartyDeprecated contained rails_app_spawner_idle_time
+syn keyword ngxDirectiveThirdPartyDeprecated contained rails_env
+syn keyword ngxDirectiveThirdPartyDeprecated contained rails_framework_spawner_idle_time
+syn keyword ngxDirectiveThirdPartyDeprecated contained rails_spawn_method
+syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_filter
+syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_gateway_address
+syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_gateway_cert
+syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_gateway_port
+syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_key
+syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_proxy_address
+syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_support
+
+" ngx_postgres is an upstream module that allows nginx to communicate directly with PostgreSQL database
+" https://github.com/FRiCKLE/ngx_postgres
+syn keyword ngxDirectiveThirdParty contained postgres_connect_timeout
+syn keyword ngxDirectiveThirdParty contained postgres_escape
+syn keyword ngxDirectiveThirdParty contained postgres_keepalive
+syn keyword ngxDirectiveThirdParty contained postgres_output
+syn keyword ngxDirectiveThirdParty contained postgres_pass
+syn keyword ngxDirectiveThirdParty contained postgres_query
+syn keyword ngxDirectiveThirdParty contained postgres_result_timeout
+syn keyword ngxDirectiveThirdParty contained postgres_rewrite
+syn keyword ngxDirectiveThirdParty contained postgres_server
+syn keyword ngxDirectiveThirdParty contained postgres_set
+
+" ngx_rds_csv - Nginx output filter module to convert Resty-DBD-Streams (RDS) to Comma-Separated Values (CSV)
+" https://github.com/openresty/rds-csv-nginx-module
+syn keyword ngxDirectiveThirdParty contained rds_csv
+syn keyword ngxDirectiveThirdParty contained rds_csv_buffer_size
+syn keyword ngxDirectiveThirdParty contained rds_csv_content_type
+syn keyword ngxDirectiveThirdParty contained rds_csv_field_name_header
+syn keyword ngxDirectiveThirdParty contained rds_csv_field_separator
+syn keyword ngxDirectiveThirdParty contained rds_csv_row_terminator
+
+" ngx_rds_json - an output filter that formats Resty DBD Streams generated by ngx_drizzle and others to JSON
+" https://github.com/openresty/rds-json-nginx-module
+syn keyword ngxDirectiveThirdParty contained rds_json
+syn keyword ngxDirectiveThirdParty contained rds_json_buffer_size
+syn keyword ngxDirectiveThirdParty contained rds_json_content_type
+syn keyword ngxDirectiveThirdParty contained rds_json_errcode_key
+syn keyword ngxDirectiveThirdParty contained rds_json_errstr_key
+syn keyword ngxDirectiveThirdParty contained rds_json_format
+syn keyword ngxDirectiveThirdParty contained rds_json_ret
+syn keyword ngxDirectiveThirdParty contained rds_json_root
+syn keyword ngxDirectiveThirdParty contained rds_json_success_property
+syn keyword ngxDirectiveThirdParty contained rds_json_user_property
+
+" ngx_redis2 - Nginx upstream module for the Redis 2.0 protocol
+" https://github.com/openresty/redis2-nginx-module
+syn keyword ngxDirectiveThirdParty contained redis2_bind
+syn keyword ngxDirectiveThirdParty contained redis2_buffer_size
+syn keyword ngxDirectiveThirdParty contained redis2_connect_timeout
+syn keyword ngxDirectiveThirdParty contained redis2_literal_raw_query
+syn keyword ngxDirectiveThirdParty contained redis2_next_upstream
+syn keyword ngxDirectiveThirdParty contained redis2_pass
+syn keyword ngxDirectiveThirdParty contained redis2_query
+syn keyword ngxDirectiveThirdParty contained redis2_raw_queries
+syn keyword ngxDirectiveThirdParty contained redis2_raw_query
+syn keyword ngxDirectiveThirdParty contained redis2_read_timeout
+syn keyword ngxDirectiveThirdParty contained redis2_send_timeout
+
+" NGINX-based Media Streaming Server
+" https://github.com/arut/nginx-rtmp-module
+syn keyword ngxDirectiveThirdParty contained ack_window
+syn keyword ngxDirectiveThirdParty contained application
+syn keyword ngxDirectiveThirdParty contained buffer
+syn keyword ngxDirectiveThirdParty contained buflen
+syn keyword ngxDirectiveThirdParty contained busy
+syn keyword ngxDirectiveThirdParty contained chunk_size
+syn keyword ngxDirectiveThirdParty contained dash
+syn keyword ngxDirectiveThirdParty contained dash_cleanup
+syn keyword ngxDirectiveThirdParty contained dash_fragment
+syn keyword ngxDirectiveThirdParty contained dash_nested
+syn keyword ngxDirectiveThirdParty contained dash_path
+syn keyword ngxDirectiveThirdParty contained dash_playlist_length
+syn keyword ngxDirectiveThirdParty contained drop_idle_publisher
+syn keyword ngxDirectiveThirdParty contained exec
+syn keyword ngxDirectiveThirdParty contained exec_block
+syn keyword ngxDirectiveThirdParty contained exec_kill_signal
+syn keyword ngxDirectiveThirdParty contained exec_options
+syn keyword ngxDirectiveThirdParty contained exec_play
+syn keyword ngxDirectiveThirdParty contained exec_play_done
+syn keyword ngxDirectiveThirdParty contained exec_publish
+syn keyword ngxDirectiveThirdParty contained exec_publish_done
+syn keyword ngxDirectiveThirdParty contained exec_pull
+syn keyword ngxDirectiveThirdParty contained exec_push
+syn keyword ngxDirectiveThirdParty contained exec_record_done
+syn keyword ngxDirectiveThirdParty contained exec_static
+syn keyword ngxDirectiveThirdParty contained hls_audio_buffer_size
+syn keyword ngxDirectiveThirdParty contained hls_base_url
+syn keyword ngxDirectiveThirdParty contained hls_cleanup
+syn keyword ngxDirectiveThirdParty contained hls_continuous
+syn keyword ngxDirectiveThirdParty contained hls_fragment_naming
+syn keyword ngxDirectiveThirdParty contained hls_fragment_naming_granularity
+syn keyword ngxDirectiveThirdParty contained hls_fragment_slicing
+syn keyword ngxDirectiveThirdParty contained hls_fragments_per_key
+syn keyword ngxDirectiveThirdParty contained hls_key_path
+syn keyword ngxDirectiveThirdParty contained hls_key_url
+syn keyword ngxDirectiveThirdParty contained hls_keys
+syn keyword ngxDirectiveThirdParty contained hls_max_audio_delay
+syn keyword ngxDirectiveThirdParty contained hls_max_fragment
+syn keyword ngxDirectiveThirdParty contained hls_muxdelay
+syn keyword ngxDirectiveThirdParty contained hls_nested
+syn keyword ngxDirectiveThirdParty contained hls_path
+syn keyword ngxDirectiveThirdParty contained hls_playlist_length
+syn keyword ngxDirectiveThirdParty contained hls_sync
+syn keyword ngxDirectiveThirdParty contained hls_type
+syn keyword ngxDirectiveThirdParty contained hls_variant
+syn keyword ngxDirectiveThirdParty contained idle_streams
+syn keyword ngxDirectiveThirdParty contained interleave
+syn keyword ngxDirectiveThirdParty contained live
+syn keyword ngxDirectiveThirdParty contained max_connections
+syn keyword ngxDirectiveThirdParty contained max_message
+syn keyword ngxDirectiveThirdParty contained max_streams
+syn keyword ngxDirectiveThirdParty contained meta
+syn keyword ngxDirectiveThirdParty contained netcall_buffer
+syn keyword ngxDirectiveThirdParty contained netcall_timeout
+syn keyword ngxDirectiveThirdParty contained notify_method
+syn keyword ngxDirectiveThirdParty contained notify_relay_redirect
+syn keyword ngxDirectiveThirdParty contained notify_update_strict
+syn keyword ngxDirectiveThirdParty contained notify_update_timeout
+syn keyword ngxDirectiveThirdParty contained on_connect
+syn keyword ngxDirectiveThirdParty contained on_disconnect
+syn keyword ngxDirectiveThirdParty contained on_done
+syn keyword ngxDirectiveThirdParty contained on_play
+syn keyword ngxDirectiveThirdParty contained on_play_done
+syn keyword ngxDirectiveThirdParty contained on_publish
+syn keyword ngxDirectiveThirdParty contained on_publish_done
+syn keyword ngxDirectiveThirdParty contained on_record_done
+syn keyword ngxDirectiveThirdParty contained on_update
+syn keyword ngxDirectiveThirdParty contained out_cork
+syn keyword ngxDirectiveThirdParty contained out_queue
+syn keyword ngxDirectiveThirdParty contained ping
+syn keyword ngxDirectiveThirdParty contained ping_timeout
+syn keyword ngxDirectiveThirdParty contained play
+syn keyword ngxDirectiveThirdParty contained play_local_path
+syn keyword ngxDirectiveThirdParty contained play_restart
+syn keyword ngxDirectiveThirdParty contained play_temp_path
+syn keyword ngxDirectiveThirdParty contained play_time_fix
+syn keyword ngxDirectiveThirdParty contained publish_notify
+syn keyword ngxDirectiveThirdParty contained publish_time_fix
+syn keyword ngxDirectiveThirdParty contained pull
+syn keyword ngxDirectiveThirdParty contained pull_reconnect
+syn keyword ngxDirectiveThirdParty contained push
+syn keyword ngxDirectiveThirdParty contained push_reconnect
+syn keyword ngxDirectiveThirdParty contained record
+syn keyword ngxDirectiveThirdParty contained record_append
+syn keyword ngxDirectiveThirdParty contained record_interval
+syn keyword ngxDirectiveThirdParty contained record_lock
+syn keyword ngxDirectiveThirdParty contained record_max_frames
+syn keyword ngxDirectiveThirdParty contained record_max_size
+syn keyword ngxDirectiveThirdParty contained record_notify
+syn keyword ngxDirectiveThirdParty contained record_path
+syn keyword ngxDirectiveThirdParty contained record_suffix
+syn keyword ngxDirectiveThirdParty contained record_unique
+syn keyword ngxDirectiveThirdParty contained recorder
+syn keyword ngxDirectiveThirdParty contained relay_buffer
+syn keyword ngxDirectiveThirdParty contained respawn
+syn keyword ngxDirectiveThirdParty contained respawn_timeout
+syn keyword ngxDirectiveThirdParty contained rtmp
+syn keyword ngxDirectiveThirdParty contained rtmp_auto_push
+syn keyword ngxDirectiveThirdParty contained rtmp_auto_push_reconnect
+syn keyword ngxDirectiveThirdParty contained rtmp_control
+syn keyword ngxDirectiveThirdParty contained rtmp_socket_dir
+syn keyword ngxDirectiveThirdParty contained rtmp_stat
+syn keyword ngxDirectiveThirdParty contained rtmp_stat_stylesheet
+syn keyword ngxDirectiveThirdParty contained session_relay
+syn keyword ngxDirectiveThirdParty contained so_keepalive
+syn keyword ngxDirectiveThirdParty contained stream_buckets
+syn keyword ngxDirectiveThirdParty contained sync
+syn keyword ngxDirectiveThirdParty contained wait_key
+syn keyword ngxDirectiveThirdParty contained wait_video
+
+" ngx_set_misc - Various set_xxx directives added to nginx's rewrite module (md5/sha1, sql/json quoting, and many more)
+" https://github.com/openresty/set-misc-nginx-module
+syn keyword ngxDirectiveThirdParty contained set_base32_alphabet
+syn keyword ngxDirectiveThirdParty contained set_base32_padding
+syn keyword ngxDirectiveThirdParty contained set_decode_base32
+syn keyword ngxDirectiveThirdParty contained set_decode_base64
+syn keyword ngxDirectiveThirdParty contained set_decode_hex
+syn keyword ngxDirectiveThirdParty contained set_encode_base32
+syn keyword ngxDirectiveThirdParty contained set_encode_base64
+syn keyword ngxDirectiveThirdParty contained set_encode_hex
+syn keyword ngxDirectiveThirdParty contained set_escape_uri
+syn keyword ngxDirectiveThirdParty contained set_formatted_gmt_time
+syn keyword ngxDirectiveThirdParty contained set_formatted_local_time
+syn keyword ngxDirectiveThirdParty contained set_hashed_upstream
+syn keyword ngxDirectiveThirdParty contained set_hmac_sha1
+syn keyword ngxDirectiveThirdParty contained set_if_empty
+syn keyword ngxDirectiveThirdParty contained set_local_today
+syn keyword ngxDirectiveThirdParty contained set_misc_base32_padding
+syn keyword ngxDirectiveThirdParty contained set_quote_json_str
+syn keyword ngxDirectiveThirdParty contained set_quote_pgsql_str
+syn keyword ngxDirectiveThirdParty contained set_quote_sql_str
+syn keyword ngxDirectiveThirdParty contained set_random
+syn keyword ngxDirectiveThirdParty contained set_rotate
+syn keyword ngxDirectiveThirdParty contained set_secure_random_alphanum
+syn keyword ngxDirectiveThirdParty contained set_secure_random_lcalpha
+syn keyword ngxDirectiveThirdParty contained set_unescape_uri
+
+" nginx-sflow-module
+" https://github.com/sflow/nginx-sflow-module
+syn keyword ngxDirectiveThirdParty contained sflow
+
+" Shibboleth auth request module for Nginx
+" https://github.com/nginx-shib/nginx-http-shibboleth
+syn keyword ngxDirectiveThirdParty contained shib_request
+syn keyword ngxDirectiveThirdParty contained shib_request_set
+syn keyword ngxDirectiveThirdParty contained shib_request_use_headers
+
+" nginx module which adds ability to cache static files
+" https://github.com/FRiCKLE/ngx_slowfs_cache
+syn keyword ngxDirectiveThirdParty contained slowfs_big_file_size
+syn keyword ngxDirectiveThirdParty contained slowfs_cache
+syn keyword ngxDirectiveThirdParty contained slowfs_cache_key
+syn keyword ngxDirectiveThirdParty contained slowfs_cache_min_uses
+syn keyword ngxDirectiveThirdParty contained slowfs_cache_path
+syn keyword ngxDirectiveThirdParty contained slowfs_cache_purge
+syn keyword ngxDirectiveThirdParty contained slowfs_cache_valid
+syn keyword ngxDirectiveThirdParty contained slowfs_temp_path
+
+" Dynamic Image Transformation Module For nginx
+" https://github.com/cubicdaiya/ngx_small_light
+syn keyword ngxDirectiveThirdParty contained small_light
+syn keyword ngxDirectiveThirdParty contained small_light_buffer
+syn keyword ngxDirectiveThirdParty contained small_light_getparam_mode
+syn keyword ngxDirectiveThirdParty contained small_light_imlib2_temp_dir
+syn keyword ngxDirectiveThirdParty contained small_light_material_dir
+syn keyword ngxDirectiveThirdParty contained small_light_pattern_define
+syn keyword ngxDirectiveThirdParty contained small_light_radius_max
+syn keyword ngxDirectiveThirdParty contained small_light_sigma_max
+
+" ngx_srcache - Transparent subrequest-based caching layout for arbitrary nginx locations
+" https://github.com/openresty/srcache-nginx-module
+syn keyword ngxDirectiveThirdParty contained srcache_buffer
+syn keyword ngxDirectiveThirdParty contained srcache_default_expire
+syn keyword ngxDirectiveThirdParty contained srcache_fetch
+syn keyword ngxDirectiveThirdParty contained srcache_fetch_skip
+syn keyword ngxDirectiveThirdParty contained srcache_header_buffer_size
+syn keyword ngxDirectiveThirdParty contained srcache_ignore_content_encoding
+syn keyword ngxDirectiveThirdParty contained srcache_max_expire
+syn keyword ngxDirectiveThirdParty contained srcache_methods
+syn keyword ngxDirectiveThirdParty contained srcache_request_cache_control
+syn keyword ngxDirectiveThirdParty contained srcache_response_cache_control
+syn keyword ngxDirectiveThirdParty contained srcache_store
+syn keyword ngxDirectiveThirdParty contained srcache_store_hide_header
+syn keyword ngxDirectiveThirdParty contained srcache_store_max_size
+syn keyword ngxDirectiveThirdParty contained srcache_store_no_cache
+syn keyword ngxDirectiveThirdParty contained srcache_store_no_store
+syn keyword ngxDirectiveThirdParty contained srcache_store_pass_header
+syn keyword ngxDirectiveThirdParty contained srcache_store_private
+syn keyword ngxDirectiveThirdParty contained srcache_store_ranges
+syn keyword ngxDirectiveThirdParty contained srcache_store_skip
+syn keyword ngxDirectiveThirdParty contained srcache_store_statuses
+
+" NGINX-based VOD Packager
+" https://github.com/kaltura/nginx-vod-module
+syn keyword ngxDirectiveThirdParty contained vod
+syn keyword ngxDirectiveThirdParty contained vod_align_segments_to_key_frames
+syn keyword ngxDirectiveThirdParty contained vod_apply_dynamic_mapping
+syn keyword ngxDirectiveThirdParty contained vod_base_url
+syn keyword ngxDirectiveThirdParty contained vod_bootstrap_segment_durations
+syn keyword ngxDirectiveThirdParty contained vod_cache_buffer_size
+syn keyword ngxDirectiveThirdParty contained vod_clip_from_param_name
+syn keyword ngxDirectiveThirdParty contained vod_clip_to_param_name
+syn keyword ngxDirectiveThirdParty contained vod_drm_clear_lead_segment_count
+syn keyword ngxDirectiveThirdParty contained vod_drm_enabled
+syn keyword ngxDirectiveThirdParty contained vod_drm_info_cache
+syn keyword ngxDirectiveThirdParty contained vod_drm_max_info_length
+syn keyword ngxDirectiveThirdParty contained vod_drm_request_uri
+syn keyword ngxDirectiveThirdParty contained vod_drm_single_key
+syn keyword ngxDirectiveThirdParty contained vod_drm_upstream_location
+syn keyword ngxDirectiveThirdParty contained vod_dynamic_clip_map_uri
+syn keyword ngxDirectiveThirdParty contained vod_dynamic_mapping_cache
+syn keyword ngxDirectiveThirdParty contained vod_encryption_iv_seed
+syn keyword ngxDirectiveThirdParty contained vod_expires
+syn keyword ngxDirectiveThirdParty contained vod_expires_live
+syn keyword ngxDirectiveThirdParty contained vod_expires_live_time_dependent
+syn keyword ngxDirectiveThirdParty contained vod_fallback_upstream_location
+syn keyword ngxDirectiveThirdParty contained vod_force_continuous_timestamps
+syn keyword ngxDirectiveThirdParty contained vod_force_playlist_type_vod
+syn keyword ngxDirectiveThirdParty contained vod_gop_look_ahead
+syn keyword ngxDirectiveThirdParty contained vod_gop_look_behind
+syn keyword ngxDirectiveThirdParty contained vod_ignore_edit_list
+syn keyword ngxDirectiveThirdParty contained vod_initial_read_size
+syn keyword ngxDirectiveThirdParty contained vod_lang_param_name
+syn keyword ngxDirectiveThirdParty contained vod_last_modified
+syn keyword ngxDirectiveThirdParty contained vod_last_modified_types
+syn keyword ngxDirectiveThirdParty contained vod_live_mapping_cache
+syn keyword ngxDirectiveThirdParty contained vod_live_response_cache
+syn keyword ngxDirectiveThirdParty contained vod_live_window_duration
+syn keyword ngxDirectiveThirdParty contained vod_manifest_duration_policy
+syn keyword ngxDirectiveThirdParty contained vod_manifest_segment_durations_mode
+syn keyword ngxDirectiveThirdParty contained vod_mapping_cache
+syn keyword ngxDirectiveThirdParty contained vod_max_frames_size
+syn keyword ngxDirectiveThirdParty contained vod_max_mapping_response_size
+syn keyword ngxDirectiveThirdParty contained vod_max_metadata_size
+syn keyword ngxDirectiveThirdParty contained vod_max_upstream_headers_size
+syn keyword ngxDirectiveThirdParty contained vod_media_set_map_uri
+syn keyword ngxDirectiveThirdParty contained vod_media_set_override_json
+syn keyword ngxDirectiveThirdParty contained vod_metadata_cache
+syn keyword ngxDirectiveThirdParty contained vod_min_single_nalu_per_frame_segment
+syn keyword ngxDirectiveThirdParty contained vod_mode
+syn keyword ngxDirectiveThirdParty contained vod_multi_uri_suffix
+syn keyword ngxDirectiveThirdParty contained vod_notification_uri
+syn keyword ngxDirectiveThirdParty contained vod_open_file_thread_pool
+syn keyword ngxDirectiveThirdParty contained vod_output_buffer_pool
+syn keyword ngxDirectiveThirdParty contained vod_parse_hdlr_name
+syn keyword ngxDirectiveThirdParty contained vod_path_response_postfix
+syn keyword ngxDirectiveThirdParty contained vod_path_response_prefix
+syn keyword ngxDirectiveThirdParty contained vod_performance_counters
+syn keyword ngxDirectiveThirdParty contained vod_proxy_header_name
+syn keyword ngxDirectiveThirdParty contained vod_proxy_header_value
+syn keyword ngxDirectiveThirdParty contained vod_redirect_segments_url
+syn keyword ngxDirectiveThirdParty contained vod_remote_upstream_location
+syn keyword ngxDirectiveThirdParty contained vod_response_cache
+syn keyword ngxDirectiveThirdParty contained vod_secret_key
+syn keyword ngxDirectiveThirdParty contained vod_segment_count_policy
+syn keyword ngxDirectiveThirdParty contained vod_segment_duration
+syn keyword ngxDirectiveThirdParty contained vod_segments_base_url
+syn keyword ngxDirectiveThirdParty contained vod_source_clip_map_uri
+syn keyword ngxDirectiveThirdParty contained vod_speed_param_name
+syn keyword ngxDirectiveThirdParty contained vod_status
+syn keyword ngxDirectiveThirdParty contained vod_time_shift_param_name
+syn keyword ngxDirectiveThirdParty contained vod_tracks_param_name
+syn keyword ngxDirectiveThirdParty contained vod_upstream_extra_args
+syn keyword ngxDirectiveThirdParty contained vod_upstream_location
+
+" Nginx virtual host traffic status module
+" https://github.com/vozlt/nginx-module-vts
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_average_method
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_bypass_limit
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_bypass_stats
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_display
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_display_format
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_display_jsonp
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_display_sum_key
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_dump
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter_by_host
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter_by_set_key
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter_check_duplicate
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit_check_duplicate
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit_traffic
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit_traffic_by_set_key
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_set_by_filter
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_zone
+
+" xss-nginx-module - Native cross-site scripting support in nginx
+" https://github.com/openresty/xss-nginx-module
+syn keyword ngxDirectiveThirdParty contained xss_callback_arg
+syn keyword ngxDirectiveThirdParty contained xss_check_status
+syn keyword ngxDirectiveThirdParty contained xss_get
+syn keyword ngxDirectiveThirdParty contained xss_input_types
+syn keyword ngxDirectiveThirdParty contained xss_output_type
+syn keyword ngxDirectiveThirdParty contained xss_override_status
+
+" Add support for array-typed variables to nginx config files
+" https://github.com/openresty/array-var-nginx-module
+syn keyword ngxDirectiveThirdParty contained array_join
+syn keyword ngxDirectiveThirdParty contained array_map
+syn keyword ngxDirectiveThirdParty contained array_map_op
+syn keyword ngxDirectiveThirdParty contained array_split
+
+" NGINX module for Brotli compression
+" https://github.com/eustas/ngx_brotli
+syn keyword ngxDirectiveThirdParty contained brotli
+syn keyword ngxDirectiveThirdParty contained brotli_buffers
+syn keyword ngxDirectiveThirdParty contained brotli_comp_level
+syn keyword ngxDirectiveThirdParty contained brotli_min_length
+syn keyword ngxDirectiveThirdParty contained brotli_static
+syn keyword ngxDirectiveThirdParty contained brotli_types
+syn keyword ngxDirectiveThirdParty contained brotli_window
+
+" form-input-nginx-module
+" https://github.com/calio/form-input-nginx-module
+syn keyword ngxDirectiveThirdParty contained set_form_input
+syn keyword ngxDirectiveThirdParty contained set_form_input_multi
+
+" character conversion nginx module using libiconv
+" https://github.com/calio/iconv-nginx-module
+syn keyword ngxDirectiveThirdParty contained iconv_buffer_size
+syn keyword ngxDirectiveThirdParty contained iconv_filter
+syn keyword ngxDirectiveThirdParty contained set_iconv
+
+" 3rd party modules list taken from
+" https://www.nginx.com/resources/wiki/modules/
+" ---------------------------------------------
+
+" Nginx Module for Authenticating Akamai G2O requests
+" https://github.com/kaltura/nginx_mod_akamai_g2o
+syn keyword ngxDirectiveThirdParty contained g2o
+syn keyword ngxDirectiveThirdParty contained g2o_data_header
+syn keyword ngxDirectiveThirdParty contained g2o_hash_function
+syn keyword ngxDirectiveThirdParty contained g2o_key
+syn keyword ngxDirectiveThirdParty contained g2o_log_level
+syn keyword ngxDirectiveThirdParty contained g2o_nonce
+syn keyword ngxDirectiveThirdParty contained g2o_sign_header
+syn keyword ngxDirectiveThirdParty contained g2o_time_window
+syn keyword ngxDirectiveThirdParty contained g2o_version
+
+" nginx_lua_module
+" https://github.com/alacner/nginx_lua_module
+syn keyword ngxDirectiveThirdParty contained lua_file
+
+" Nginx Audio Track for HTTP Live Streaming
+" https://github.com/flavioribeiro/nginx-audio-track-for-hls-module
+syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track
+syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track_output_format
+syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track_output_header
+syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track_rootpath
+
+" A Nginx module to dump backtrace when a worker process exits abnormally
+" https://github.com/alibaba/nginx-backtrace
+syn keyword ngxDirectiveThirdParty contained backtrace_log
+syn keyword ngxDirectiveThirdParty contained backtrace_max_stack_size
+
+" circle_gif module
+" https://github.com/evanmiller/nginx_circle_gif
+syn keyword ngxDirectiveThirdParty contained circle_gif
+syn keyword ngxDirectiveThirdParty contained circle_gif_max_radius
+syn keyword ngxDirectiveThirdParty contained circle_gif_min_radius
+syn keyword ngxDirectiveThirdParty contained circle_gif_step_radius
+
+" Upstream Consistent Hash
+" https://github.com/replay/ngx_http_consistent_hash
+syn keyword ngxDirectiveThirdParty contained consistent_hash
+
+" Nginx module for etags on dynamic content
+" https://github.com/kali/nginx-dynamic-etags
+syn keyword ngxDirectiveThirdParty contained dynamic_etags
+
+" Enhanced Nginx Memcached Module
+" https://github.com/bpaquet/ngx_http_enhanced_memcached_module
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_allow_delete
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_allow_put
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_bind
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_buffer_size
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_connect_timeout
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_flush
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_flush_namespace
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_hash_keys_with_md5
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_pass
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_read_timeout
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_send_timeout
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_stats
+
+" nginx max connections queue
+" https://github.com/ezmobius/nginx-ey-balancer
+syn keyword ngxDirectiveThirdParty contained max_connections_max_queue_length
+syn keyword ngxDirectiveThirdParty contained max_connections_queue_timeout
+
+" Nginx module for POST authentication and authorization
+" https://github.com/veruu/ngx_form_auth
+syn keyword ngxDirectiveThirdParty contained form_auth
+syn keyword ngxDirectiveThirdParty contained form_auth_login
+syn keyword ngxDirectiveThirdParty contained form_auth_pam_service
+syn keyword ngxDirectiveThirdParty contained form_auth_password
+syn keyword ngxDirectiveThirdParty contained form_auth_remote_user
+
+" ngx_http_accounting_module
+" https://github.com/Lax/ngx_http_accounting_module
+syn keyword ngxDirectiveThirdParty contained http_accounting
+syn keyword ngxDirectiveThirdParty contained http_accounting_id
+syn keyword ngxDirectiveThirdParty contained http_accounting_interval
+syn keyword ngxDirectiveThirdParty contained http_accounting_log
+syn keyword ngxDirectiveThirdParty contained http_accounting_perturb
+
+" concatenating files in a given context: CSS and JS files usually
+" https://github.com/alibaba/nginx-http-concat
+syn keyword ngxDirectiveThirdParty contained concat
+syn keyword ngxDirectiveThirdParty contained concat_delimiter
+syn keyword ngxDirectiveThirdParty contained concat_ignore_file_error
+syn keyword ngxDirectiveThirdParty contained concat_max_files
+syn keyword ngxDirectiveThirdParty contained concat_types
+syn keyword ngxDirectiveThirdParty contained concat_unique
+
+" update upstreams' config by restful interface
+" https://github.com/yzprofile/ngx_http_dyups_module
+syn keyword ngxDirectiveThirdParty contained dyups_interface
+syn keyword ngxDirectiveThirdParty contained dyups_read_msg_log
+syn keyword ngxDirectiveThirdParty contained dyups_read_msg_timeout
+syn keyword ngxDirectiveThirdParty contained dyups_shm_zone_size
+syn keyword ngxDirectiveThirdParty contained dyups_trylock
+syn keyword ngxDirectiveThirdParty contained dyups_upstream_conf
+
+" add given content to the end of the response according to the condition specified
+" https://github.com/flygoast/ngx_http_footer_if_filter
+syn keyword ngxDirectiveThirdParty contained footer_if
+
+" NGINX HTTP Internal Redirect Module
+" https://github.com/flygoast/ngx_http_internal_redirect
+syn keyword ngxDirectiveThirdParty contained internal_redirect_if
+syn keyword ngxDirectiveThirdParty contained internal_redirect_if_no_postpone
+
+" nginx-ip-blocker
+" https://github.com/tmthrgd/nginx-ip-blocker
+syn keyword ngxDirectiveThirdParty contained ip_blocker
+
+" IP2Location Nginx
+" https://github.com/chrislim2888/ip2location-nginx
+syn keyword ngxDirectiveThirdParty contained ip2location_database
+
+" Limit upload rate
+" https://github.com/cfsego/limit_upload_rate
+syn keyword ngxDirectiveThirdParty contained limit_upload_rate
+syn keyword ngxDirectiveThirdParty contained limit_upload_rate_after
+syn keyword ngxDirectiveThirdParty contained limit_upload_rate_log_level
+
+" limit the number of connections to upstream
+" https://github.com/cfsego/nginx-limit-upstream
+syn keyword ngxDirectiveThirdParty contained limit_upstream_conn
+syn keyword ngxDirectiveThirdParty contained limit_upstream_log_level
+syn keyword ngxDirectiveThirdParty contained limit_upstream_zone
+
+" conditional accesslog for nginx
+" https://github.com/cfsego/ngx_log_if
+syn keyword ngxDirectiveThirdParty contained access_log_bypass_if
+
+" log messages over ZeroMQ
+" https://github.com/alticelabs/nginx-log-zmq
+syn keyword ngxDirectiveThirdParty contained log_zmq_endpoint
+syn keyword ngxDirectiveThirdParty contained log_zmq_format
+syn keyword ngxDirectiveThirdParty contained log_zmq_off
+syn keyword ngxDirectiveThirdParty contained log_zmq_server
+
+" simple module to uppercase/lowercase strings in the nginx config
+" https://github.com/replay/ngx_http_lower_upper_case
+syn keyword ngxDirectiveThirdParty contained lower
+syn keyword ngxDirectiveThirdParty contained upper
+
+" content filter for nginx, which returns the md5 hash of the content otherwise returned
+" https://github.com/kainswor/nginx_md5_filter
+syn keyword ngxDirectiveThirdParty contained md5_filter
+
+" Non-blocking upstream module for Nginx to connect to MongoDB
+" https://github.com/simpl/ngx_mongo
+syn keyword ngxDirectiveThirdParty contained mongo_auth
+syn keyword ngxDirectiveThirdParty contained mongo_bind
+syn keyword ngxDirectiveThirdParty contained mongo_buffer_size
+syn keyword ngxDirectiveThirdParty contained mongo_buffering
+syn keyword ngxDirectiveThirdParty contained mongo_buffers
+syn keyword ngxDirectiveThirdParty contained mongo_busy_buffers_size
+syn keyword ngxDirectiveThirdParty contained mongo_connect_timeout
+syn keyword ngxDirectiveThirdParty contained mongo_json
+syn keyword ngxDirectiveThirdParty contained mongo_next_upstream
+syn keyword ngxDirectiveThirdParty contained mongo_pass
+syn keyword ngxDirectiveThirdParty contained mongo_query
+syn keyword ngxDirectiveThirdParty contained mongo_read_timeout
+syn keyword ngxDirectiveThirdParty contained mongo_send_timeout
+
+" Nginx OCSP processing module designed for response caching
+" https://github.com/kyprizel/nginx_ocsp_proxy-module
+syn keyword ngxDirectiveThirdParty contained ocsp_cache_timeout
+syn keyword ngxDirectiveThirdParty contained ocsp_proxy
+
+" Nginx OpenSSL version check at startup
+" https://github.com/apcera/nginx-openssl-version
+syn keyword ngxDirectiveThirdParty contained openssl_builddate_minimum
+syn keyword ngxDirectiveThirdParty contained openssl_version_minimum
+
+" Automatic PageSpeed optimization module for Nginx
+" https://github.com/pagespeed/ngx_pagespeed
+syn keyword ngxDirectiveThirdParty contained pagespeed
+
+" PECL Memcache standard hashing compatible loadbalancer for Nginx
+" https://github.com/replay/ngx_http_php_memcache_standard_balancer
+syn keyword ngxDirectiveThirdParty contained hash_key
+
+" nginx module to parse php sessions
+" https://github.com/replay/ngx_http_php_session
+syn keyword ngxDirectiveThirdParty contained php_session_parse
+syn keyword ngxDirectiveThirdParty contained php_session_strip_formatting
+
+" Nginx HTTP rDNS module
+" https://github.com/flant/nginx-http-rdns
+syn keyword ngxDirectiveThirdParty contained rdns
+syn keyword ngxDirectiveThirdParty contained rdns_allow
+syn keyword ngxDirectiveThirdParty contained rdns_deny
+
+" Streaming regular expression replacement in response bodies
+" https://github.com/openresty/replace-filter-nginx-module
+syn keyword ngxDirectiveThirdParty contained replace_filter
+syn keyword ngxDirectiveThirdParty contained replace_filter_last_modified
+syn keyword ngxDirectiveThirdParty contained replace_filter_max_buffered_size
+syn keyword ngxDirectiveThirdParty contained replace_filter_skip
+syn keyword ngxDirectiveThirdParty contained replace_filter_types
+
+" Link RRDtool's graphing facilities directly into nginx
+" https://github.com/evanmiller/mod_rrd_graph
+syn keyword ngxDirectiveThirdParty contained rrd_graph
+syn keyword ngxDirectiveThirdParty contained rrd_graph_root
+
+" Module for nginx to proxy rtmp using http protocol
+" https://github.com/kwojtek/nginx-rtmpt-proxy-module
+syn keyword ngxDirectiveThirdParty contained rtmpt_proxy
+syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_http_timeout
+syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_rtmp_timeout
+syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_stat
+syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_stylesheet
+syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_target
+
+" Syntactically Awesome NGINX Module
+" https://github.com/mneudert/sass-nginx-module
+syn keyword ngxDirectiveThirdParty contained sass_compile
+syn keyword ngxDirectiveThirdParty contained sass_error_log
+syn keyword ngxDirectiveThirdParty contained sass_include_path
+syn keyword ngxDirectiveThirdParty contained sass_indent
+syn keyword ngxDirectiveThirdParty contained sass_is_indented_syntax
+syn keyword ngxDirectiveThirdParty contained sass_linefeed
+syn keyword ngxDirectiveThirdParty contained sass_output_style
+syn keyword ngxDirectiveThirdParty contained sass_precision
+syn keyword ngxDirectiveThirdParty contained sass_source_comments
+syn keyword ngxDirectiveThirdParty contained sass_source_map_embed
+
+" Nginx Selective Cache Purge Module
+" https://github.com/wandenberg/nginx-selective-cache-purge-module
+syn keyword ngxDirectiveThirdParty contained selective_cache_purge_query
+syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_database
+syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_host
+syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_password
+syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_port
+syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_unix_socket
+
+" cconv nginx module
+" https://github.com/liseen/set-cconv-nginx-module
+syn keyword ngxDirectiveThirdParty contained set_cconv_to_simp
+syn keyword ngxDirectiveThirdParty contained set_cconv_to_trad
+syn keyword ngxDirectiveThirdParty contained set_pinyin_to_normal
+
+" Nginx module that allows the setting of variables to the value of a variety of hashes
+" https://github.com/simpl/ngx_http_set_hash
+syn keyword ngxDirectiveThirdParty contained set_md5
+syn keyword ngxDirectiveThirdParty contained set_md5_upper
+syn keyword ngxDirectiveThirdParty contained set_murmur2
+syn keyword ngxDirectiveThirdParty contained set_murmur2_upper
+syn keyword ngxDirectiveThirdParty contained set_sha1
+syn keyword ngxDirectiveThirdParty contained set_sha1_upper
+
+" Nginx module to set the language of a request based on a number of options
+" https://github.com/simpl/ngx_http_set_lang
+syn keyword ngxDirectiveThirdParty contained lang_cookie
+syn keyword ngxDirectiveThirdParty contained lang_get_var
+syn keyword ngxDirectiveThirdParty contained lang_host
+syn keyword ngxDirectiveThirdParty contained lang_list
+syn keyword ngxDirectiveThirdParty contained lang_post_var
+syn keyword ngxDirectiveThirdParty contained lang_referer
+syn keyword ngxDirectiveThirdParty contained set_lang
+syn keyword ngxDirectiveThirdParty contained set_lang_method
+
+" Nginx Sorted Querystring Module
+" https://github.com/wandenberg/nginx-sorted-querystring-module
+syn keyword ngxDirectiveThirdParty contained sorted_querysting_filter_parameter
+
+" Nginx upstream module for Sphinx 2.x search daemon
+" https://github.com/reeteshranjan/sphinx2-nginx-module
+syn keyword ngxDirectiveThirdParty contained sphinx2_bind
+syn keyword ngxDirectiveThirdParty contained sphinx2_buffer_size
+syn keyword ngxDirectiveThirdParty contained sphinx2_connect_timeout
+syn keyword ngxDirectiveThirdParty contained sphinx2_next_upstream
+syn keyword ngxDirectiveThirdParty contained sphinx2_pass
+syn keyword ngxDirectiveThirdParty contained sphinx2_read_timeout
+syn keyword ngxDirectiveThirdParty contained sphinx2_send_timeout
+
+" Nginx module for retrieving user attributes and groups from SSSD
+" https://github.com/veruu/ngx_sssd_info
+syn keyword ngxDirectiveThirdParty contained sssd_info
+syn keyword ngxDirectiveThirdParty contained sssd_info_attribute
+syn keyword ngxDirectiveThirdParty contained sssd_info_attribute_separator
+syn keyword ngxDirectiveThirdParty contained sssd_info_attributes
+syn keyword ngxDirectiveThirdParty contained sssd_info_group
+syn keyword ngxDirectiveThirdParty contained sssd_info_group_separator
+syn keyword ngxDirectiveThirdParty contained sssd_info_groups
+syn keyword ngxDirectiveThirdParty contained sssd_info_output_to
+
+" An nginx module for sending statistics to statsd
+" https://github.com/zebrafishlabs/nginx-statsd
+syn keyword ngxDirectiveThirdParty contained statsd_count
+syn keyword ngxDirectiveThirdParty contained statsd_sample_rate
+syn keyword ngxDirectiveThirdParty contained statsd_server
+syn keyword ngxDirectiveThirdParty contained statsd_timing
+
+" ngx_stream_echo - TCP/stream echo module for NGINX (a port of the ngx_http_echo module)
+" https://github.com/openresty/stream-echo-nginx-module
+syn keyword ngxDirectiveThirdParty contained echo
+syn keyword ngxDirectiveThirdParty contained echo_client_error_log_level
+syn keyword ngxDirectiveThirdParty contained echo_discard_request
+syn keyword ngxDirectiveThirdParty contained echo_duplicate
+syn keyword ngxDirectiveThirdParty contained echo_flush_wait
+syn keyword ngxDirectiveThirdParty contained echo_lingering_close
+syn keyword ngxDirectiveThirdParty contained echo_lingering_time
+syn keyword ngxDirectiveThirdParty contained echo_lingering_timeout
+syn keyword ngxDirectiveThirdParty contained echo_read_buffer_size
+syn keyword ngxDirectiveThirdParty contained echo_read_bytes
+syn keyword ngxDirectiveThirdParty contained echo_read_line
+syn keyword ngxDirectiveThirdParty contained echo_read_timeout
+syn keyword ngxDirectiveThirdParty contained echo_request_data
+syn keyword ngxDirectiveThirdParty contained echo_send_timeout
+syn keyword ngxDirectiveThirdParty contained echo_sleep
+
+" Embed the power of Lua into NGINX TCP/UDP servers
+" https://github.com/openresty/stream-lua-nginx-module
+syn keyword ngxDirectiveThirdParty contained lua_add_variable
+syn keyword ngxDirectiveThirdParty contained preread_by_lua_block
+syn keyword ngxDirectiveThirdParty contained preread_by_lua_file
+syn keyword ngxDirectiveThirdParty contained preread_by_lua_no_postpone
+
+" nginx-upsync-module
+" https://github.com/weibocom/nginx-upsync-module
+syn keyword ngxDirectiveThirdParty contained upstream_show
+syn keyword ngxDirectiveThirdParty contained upsync
+syn keyword ngxDirectiveThirdParty contained upsync_dump_path
+syn keyword ngxDirectiveThirdParty contained upsync_lb
+
+" Whitespace stripper for nginx
+" https://github.com/evanmiller/mod_strip
+syn keyword ngxDirectiveThirdParty contained strip
+
+" Split one big HTTP/Range request to multiple subrange requesets
+" https://github.com/Qihoo360/ngx_http_subrange_module
+syn keyword ngxDirectiveThirdParty contained subrange
+
+" summarizer-nginx-module
+" https://github.com/reeteshranjan/summarizer-nginx-module
+syn keyword ngxDirectiveThirdParty contained summarizer_bind
+syn keyword ngxDirectiveThirdParty contained summarizer_buffer_size
+syn keyword ngxDirectiveThirdParty contained summarizer_connect_timeout
+syn keyword ngxDirectiveThirdParty contained summarizer_next_upstream
+syn keyword ngxDirectiveThirdParty contained summarizer_pass
+syn keyword ngxDirectiveThirdParty contained summarizer_read_timeout
+syn keyword ngxDirectiveThirdParty contained summarizer_send_timeout
+
+" nginx module providing API to communicate with supervisord and manage (start/stop) backends on-demand
+" https://github.com/FRiCKLE/ngx_supervisord
+syn keyword ngxDirectiveThirdParty contained supervisord
+syn keyword ngxDirectiveThirdParty contained supervisord_inherit_backend_status
+syn keyword ngxDirectiveThirdParty contained supervisord_name
+syn keyword ngxDirectiveThirdParty contained supervisord_start
+syn keyword ngxDirectiveThirdParty contained supervisord_stop
+
+" simple robot mitigation module using cookie based challenge/response technique. Not supported any more.
+" https://github.com/kyprizel/testcookie-nginx-module
+syn keyword ngxDirectiveThirdParty contained testcookie
+syn keyword ngxDirectiveThirdParty contained testcookie_arg
+syn keyword ngxDirectiveThirdParty contained testcookie_deny_keepalive
+syn keyword ngxDirectiveThirdParty contained testcookie_domain
+syn keyword ngxDirectiveThirdParty contained testcookie_expires
+syn keyword ngxDirectiveThirdParty contained testcookie_fallback
+syn keyword ngxDirectiveThirdParty contained testcookie_get_only
+syn keyword ngxDirectiveThirdParty contained testcookie_httponly_flag
+syn keyword ngxDirectiveThirdParty contained testcookie_https_location
+syn keyword ngxDirectiveThirdParty contained testcookie_internal
+syn keyword ngxDirectiveThirdParty contained testcookie_max_attempts
+syn keyword ngxDirectiveThirdParty contained testcookie_name
+syn keyword ngxDirectiveThirdParty contained testcookie_p3p
+syn keyword ngxDirectiveThirdParty contained testcookie_pass
+syn keyword ngxDirectiveThirdParty contained testcookie_path
+syn keyword ngxDirectiveThirdParty contained testcookie_port_in_redirect
+syn keyword ngxDirectiveThirdParty contained testcookie_redirect_via_refresh
+syn keyword ngxDirectiveThirdParty contained testcookie_refresh_encrypt_cookie
+syn keyword ngxDirectiveThirdParty contained testcookie_refresh_encrypt_cookie_iv
+syn keyword ngxDirectiveThirdParty contained testcookie_refresh_encrypt_cookie_key
+syn keyword ngxDirectiveThirdParty contained testcookie_refresh_status
+syn keyword ngxDirectiveThirdParty contained testcookie_refresh_template
+syn keyword ngxDirectiveThirdParty contained testcookie_secret
+syn keyword ngxDirectiveThirdParty contained testcookie_secure_flag
+syn keyword ngxDirectiveThirdParty contained testcookie_session
+syn keyword ngxDirectiveThirdParty contained testcookie_whitelist
+
+" ngx_http_types_filter_module
+" https://github.com/flygoast/ngx_http_types_filter
+syn keyword ngxDirectiveThirdParty contained types_filter
+syn keyword ngxDirectiveThirdParty contained types_filter_use_default
+
+" A module allowing the nginx to use files embedded in a zip file
+" https://github.com/youzee/nginx-unzip-module
+syn keyword ngxDirectiveThirdParty contained file_in_unzip
+syn keyword ngxDirectiveThirdParty contained file_in_unzip_archivefile
+syn keyword ngxDirectiveThirdParty contained file_in_unzip_extract
+
+" An asynchronous domain name resolve module for nginx upstream
+" https://github.com/wdaike/ngx_upstream_jdomain
+syn keyword ngxDirectiveThirdParty contained jdomain
+
+" Nginx url encoding converting module
+" https://github.com/vozlt/nginx-module-url
+syn keyword ngxDirectiveThirdParty contained url_encoding_convert
+syn keyword ngxDirectiveThirdParty contained url_encoding_convert_alloc_size
+syn keyword ngxDirectiveThirdParty contained url_encoding_convert_alloc_size_x
+syn keyword ngxDirectiveThirdParty contained url_encoding_convert_from
+syn keyword ngxDirectiveThirdParty contained url_encoding_convert_phase
+syn keyword ngxDirectiveThirdParty contained url_encoding_convert_to
+
+" A nginx module to match browsers and crawlers
+" https://github.com/alibaba/nginx-http-user-agent
+syn keyword ngxDirectiveThirdParty contained user_agent
+
+" nginx load-balancer module implementing ketama consistent hashing
+" https://github.com/flygoast/ngx_http_upstream_ketama_chash
+syn keyword ngxDirectiveThirdParty contained ketama_chash
+
+
+
+
+" highlight
+
+hi link ngxComment Comment
+hi link ngxParamComment Comment
+hi link ngxListenComment Comment
+hi link ngxVariable Identifier
+hi link ngxVariableString PreProc
+hi link ngxString String
+hi link ngxListenString String
+
+hi link ngxBoolean Boolean
+hi link ngxDirectiveBlock Statement
+hi link ngxDirectiveImportant Type
+hi link ngxDirectiveListen Type
+hi link ngxDirectiveControl Keyword
+hi link ngxDirectiveError Constant
+hi link ngxDirectiveDeprecated Error
+hi link ngxDirective Identifier
+hi link ngxDirectiveThirdParty Special
+hi link ngxDirectiveThirdPartyDeprecated Error
+
+hi link ngxListenOptions Keyword
+hi link ngxListenOptionsDeprecated Error
+
+let b:current_syntax = "nginx"
diff --git a/docs/CHANGES b/docs/CHANGES
new file mode 100644
index 0000000..9d88346
--- /dev/null
+++ b/docs/CHANGES
@@ -0,0 +1,8069 @@
+
+Changes with nginx 1.14.0 17 Apr 2018
+
+ *) 1.14.x stable branch.
+
+
+Changes with nginx 1.13.12 10 Apr 2018
+
+ *) Bugfix: connections with gRPC backends might be closed unexpectedly
+ when returning a large response.
+
+
+Changes with nginx 1.13.11 03 Apr 2018
+
+ *) Feature: the "proxy_protocol" parameter of the "listen" directive now
+ supports the PROXY protocol version 2.
+
+ *) Bugfix: nginx could not be built with OpenSSL 1.1.1 statically on
+ Linux.
+
+ *) Bugfix: in the "http_404", "http_500", etc. parameters of the
+ "proxy_next_upstream" directive.
+
+
+Changes with nginx 1.13.10 20 Mar 2018
+
+ *) Feature: the "set" parameter of the "include" SSI directive now
+ allows writing arbitrary responses to a variable; the
+ "subrequest_output_buffer_size" directive defines maximum response
+ size.
+
+ *) Feature: now nginx uses clock_gettime(CLOCK_MONOTONIC) if available,
+ to avoid timeouts being incorrectly triggered on system time changes.
+
+ *) Feature: the "escape=none" parameter of the "log_format" directive.
+ Thanks to Johannes Baiter and Calin Don.
+
+ *) Feature: the $ssl_preread_alpn_protocols variable in the
+ ngx_stream_ssl_preread_module.
+
+ *) Feature: the ngx_http_grpc_module.
+
+ *) Bugfix: in memory allocation error handling in the "geo" directive.
+
+ *) Bugfix: when using variables in the "auth_basic_user_file" directive
+ a null character might appear in logs.
+ Thanks to Vadim Filimonov.
+
+
+Changes with nginx 1.13.9 20 Feb 2018
+
+ *) Feature: HTTP/2 server push support; the "http2_push" and
+ "http2_push_preload" directives.
+
+ *) Bugfix: "header already sent" alerts might appear in logs when using
+ cache; the bug had appeared in 1.9.13.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "ssl_verify_client" directive was used and no SSL certificate was
+ specified in a virtual server.
+
+ *) Bugfix: in the ngx_http_v2_module.
+
+ *) Bugfix: in the ngx_http_dav_module.
+
+
+Changes with nginx 1.13.8 26 Dec 2017
+
+ *) Feature: now nginx automatically preserves the CAP_NET_RAW capability
+ in worker processes when using the "transparent" parameter of the
+ "proxy_bind", "fastcgi_bind", "memcached_bind", "scgi_bind", and
+ "uwsgi_bind" directives.
+
+ *) Feature: improved CPU cache line size detection.
+ Thanks to Debayan Ghosh.
+
+ *) Feature: new directives in vim syntax highlighting scripts.
+ Thanks to Gena Makhomed.
+
+ *) Bugfix: binary upgrade refused to work if nginx was re-parented to a
+ process with PID different from 1 after its parent process has
+ finished.
+
+ *) Bugfix: the ngx_http_autoindex_module incorrectly handled requests
+ with bodies.
+
+ *) Bugfix: in the "proxy_limit_rate" directive when used with the
+ "keepalive" directive.
+
+ *) Bugfix: some parts of a response might be buffered when using
+ "proxy_buffering off" if the client connection used SSL.
+ Thanks to Patryk Lesiewicz.
+
+ *) Bugfix: in the "proxy_cache_background_update" directive.
+
+ *) Bugfix: it was not possible to start a parameter with a variable in
+ the "${name}" form with the name in curly brackets without enclosing
+ the parameter into single or double quotes.
+
+
+Changes with nginx 1.13.7 21 Nov 2017
+
+ *) Bugfix: in the $upstream_status variable.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if a
+ backend returned a "101 Switching Protocols" response to a
+ subrequest.
+
+ *) Bugfix: a segmentation fault occurred in a master process if a shared
+ memory zone size was changed during a reconfiguration and the
+ reconfiguration failed.
+
+ *) Bugfix: in the ngx_http_fastcgi_module.
+
+ *) Bugfix: nginx returned the 500 error if parameters without variables
+ were specified in the "xslt_stylesheet" directive.
+
+ *) Workaround: "gzip filter failed to use preallocated memory" alerts
+ appeared in logs when using a zlib library variant from Intel.
+
+ *) Bugfix: the "worker_shutdown_timeout" directive did not work when
+ using mail proxy and when proxying WebSocket connections.
+
+
+Changes with nginx 1.13.6 10 Oct 2017
+
+ *) Bugfix: switching to the next upstream server in the stream module
+ did not work when using the "ssl_preread" directive.
+
+ *) Bugfix: in the ngx_http_v2_module.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: nginx did not support dates after the year 2038 on 32-bit
+ platforms with 64-bit time_t.
+
+ *) Bugfix: in handling of dates prior to the year 1970 and after the
+ year 10000.
+
+ *) Bugfix: in the stream module timeouts waiting for UDP datagrams from
+ upstream servers were not logged or logged at the "info" level
+ instead of "error".
+
+ *) Bugfix: when using HTTP/2 nginx might return the 400 response without
+ logging the reason.
+
+ *) Bugfix: in processing of corrupted cache files.
+
+ *) Bugfix: cache control headers were ignored when caching errors
+ intercepted by error_page.
+
+ *) Bugfix: when using HTTP/2 client request body might be corrupted.
+
+ *) Bugfix: in handling of client addresses when using unix domain
+ sockets.
+
+ *) Bugfix: nginx hogged CPU when using the "hash ... consistent"
+ directive in the upstream block if large weights were used and all or
+ most of the servers were unavailable.
+
+
+Changes with nginx 1.13.5 05 Sep 2017
+
+ *) Feature: the $ssl_client_escaped_cert variable.
+
+ *) Bugfix: the "ssl_session_ticket_key" directive and the "include"
+ parameter of the "geo" directive did not work on Windows.
+
+ *) Bugfix: incorrect response length was returned on 32-bit platforms
+ when requesting more than 4 gigabytes with multiple ranges.
+
+ *) Bugfix: the "expires modified" directive and processing of the
+ "If-Range" request header line did not use the response last
+ modification time if proxying without caching was used.
+
+
+Changes with nginx 1.13.4 08 Aug 2017
+
+ *) Feature: the ngx_http_mirror_module.
+
+ *) Bugfix: client connections might be dropped during configuration
+ testing when using the "reuseport" parameter of the "listen"
+ directive on Linux.
+
+ *) Bugfix: request body might not be available in subrequests if it was
+ saved to a file and proxying was used.
+
+ *) Bugfix: cleaning cache based on the "max_size" parameter did not work
+ on Windows.
+
+ *) Bugfix: any shared memory allocation required 4096 bytes on Windows.
+
+ *) Bugfix: nginx worker might be terminated abnormally when using the
+ "zone" directive inside the "upstream" block on Windows.
+
+
+Changes with nginx 1.13.3 11 Jul 2017
+
+ *) Security: a specially crafted request might result in an integer
+ overflow and incorrect processing of ranges in the range filter,
+ potentially resulting in sensitive information leak (CVE-2017-7529).
+
+
+Changes with nginx 1.13.2 27 Jun 2017
+
+ *) Change: nginx now returns 200 instead of 416 when a range starting
+ with 0 is requested from an empty file.
+
+ *) Feature: the "add_trailer" directive.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: nginx could not be built on Cygwin and NetBSD; the bug had
+ appeared in 1.13.0.
+
+ *) Bugfix: nginx could not be built under MSYS2 / MinGW 64-bit.
+ Thanks to Orgad Shaneh.
+
+ *) Bugfix: a segmentation fault might occur in a worker process when
+ using SSI with many includes and proxy_pass with variables.
+
+ *) Bugfix: in the ngx_http_v2_module.
+ Thanks to Piotr Sikora.
+
+
+Changes with nginx 1.13.1 30 May 2017
+
+ *) Feature: now a hostname can be used as the "set_real_ip_from"
+ directive parameter.
+
+ *) Feature: vim syntax highlighting scripts improvements.
+
+ *) Feature: the "worker_cpu_affinity" directive now works on DragonFly
+ BSD.
+ Thanks to Sepherosa Ziehau.
+
+ *) Bugfix: SSL renegotiation on backend connections did not work when
+ using OpenSSL before 1.1.0.
+
+ *) Workaround: nginx could not be built with Oracle Developer Studio
+ 12.5.
+
+ *) Workaround: now cache manager ignores long locked cache entries when
+ cleaning cache based on the "max_size" parameter.
+
+ *) Bugfix: client SSL connections were immediately closed if deferred
+ accept and the "proxy_protocol" parameter of the "listen" directive
+ were used.
+
+ *) Bugfix: in the "proxy_cache_background_update" directive.
+
+ *) Workaround: now the "tcp_nodelay" directive sets the TCP_NODELAY
+ option before an SSL handshake.
+
+
+Changes with nginx 1.13.0 25 Apr 2017
+
+ *) Change: SSL renegotiation is now allowed on backend connections.
+
+ *) Feature: the "rcvbuf" and "sndbuf" parameters of the "listen"
+ directives of the mail proxy and stream modules.
+
+ *) Feature: the "return" and "error_page" directives can now be used to
+ return 308 redirections.
+ Thanks to Simon Leblanc.
+
+ *) Feature: the "TLSv1.3" parameter of the "ssl_protocols" directive.
+
+ *) Feature: when logging signals nginx now logs PID of the process which
+ sent the signal.
+
+ *) Bugfix: in memory allocation error handling.
+
+ *) Bugfix: if a server in the stream module listened on a wildcard
+ address, the source address of a response UDP datagram could differ
+ from the original datagram destination address.
+
+
+Changes with nginx 1.11.13 04 Apr 2017
+
+ *) Feature: the "http_429" parameter of the "proxy_next_upstream",
+ "fastcgi_next_upstream", "scgi_next_upstream", and
+ "uwsgi_next_upstream" directives.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: in memory allocation error handling.
+
+ *) Bugfix: requests might hang when using the "sendfile" and
+ "timer_resolution" directives on Linux.
+
+ *) Bugfix: requests might hang when using the "sendfile" and "aio_write"
+ directives with subrequests.
+
+ *) Bugfix: in the ngx_http_v2_module.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: a segmentation fault might occur in a worker process when
+ using HTTP/2.
+
+ *) Bugfix: requests might hang when using the "limit_rate",
+ "sendfile_max_chunk", "limit_req" directives, or the $r->sleep()
+ embedded perl method with subrequests.
+
+ *) Bugfix: in the ngx_http_slice_module.
+
+
+Changes with nginx 1.11.12 24 Mar 2017
+
+ *) Bugfix: nginx might hog CPU; the bug had appeared in 1.11.11.
+
+
+Changes with nginx 1.11.11 21 Mar 2017
+
+ *) Feature: the "worker_shutdown_timeout" directive.
+
+ *) Feature: vim syntax highlighting scripts improvements.
+ Thanks to Wei-Ko Kao.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ $limit_rate variable was set to an empty string.
+
+ *) Bugfix: the "proxy_cache_background_update",
+ "fastcgi_cache_background_update", "scgi_cache_background_update",
+ and "uwsgi_cache_background_update" directives might work incorrectly
+ if the "if" directive was used.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if
+ number of large_client_header_buffers in a virtual server was
+ different from the one in the default server.
+
+ *) Bugfix: in the mail proxy server.
+
+
+Changes with nginx 1.11.10 14 Feb 2017
+
+ *) Change: cache header format has been changed, previously cached
+ responses will be invalidated.
+
+ *) Feature: support of "stale-while-revalidate" and "stale-if-error"
+ extensions in the "Cache-Control" backend response header line.
+
+ *) Feature: the "proxy_cache_background_update",
+ "fastcgi_cache_background_update", "scgi_cache_background_update",
+ and "uwsgi_cache_background_update" directives.
+
+ *) Feature: nginx is now able to cache responses with the "Vary" header
+ line up to 128 characters long (instead of 42 characters in previous
+ versions).
+
+ *) Feature: the "build" parameter of the "server_tokens" directive.
+ Thanks to Tom Thorogood.
+
+ *) Bugfix: "[crit] SSL_write() failed" messages might appear in logs
+ when handling requests with the "Expect: 100-continue" request header
+ line.
+
+ *) Bugfix: the ngx_http_slice_module did not work in named locations.
+
+ *) Bugfix: a segmentation fault might occur in a worker process when
+ using AIO after an "X-Accel-Redirect" redirection.
+
+ *) Bugfix: reduced memory consumption for long-lived requests using
+ gzipping.
+
+
+Changes with nginx 1.11.9 24 Jan 2017
+
+ *) Bugfix: nginx might hog CPU when using the stream module; the bug had
+ appeared in 1.11.5.
+
+ *) Bugfix: EXTERNAL authentication mechanism in mail proxy was accepted
+ even if it was not enabled in the configuration.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "ssl_verify_client" directive of the stream module was used.
+
+ *) Bugfix: the "ssl_verify_client" directive of the stream module might
+ not work.
+
+ *) Bugfix: closing keepalive connections due to no free worker
+ connections might be too aggressive.
+ Thanks to Joel Cunningham.
+
+ *) Bugfix: an incorrect response might be returned when using the
+ "sendfile" directive on FreeBSD and macOS; the bug had appeared in
+ 1.7.8.
+
+ *) Bugfix: a truncated response might be stored in cache when using the
+ "aio_write" directive.
+
+ *) Bugfix: a socket leak might occur when using the "aio_write"
+ directive.
+
+
+Changes with nginx 1.11.8 27 Dec 2016
+
+ *) Feature: the "absolute_redirect" directive.
+
+ *) Feature: the "escape" parameter of the "log_format" directive.
+
+ *) Feature: client SSL certificates verification in the stream module.
+
+ *) Feature: the "ssl_session_ticket_key" directive supports AES256
+ encryption of TLS session tickets when used with 80-byte keys.
+
+ *) Feature: vim-commentary support in vim scripts.
+ Thanks to Armin Grodon.
+
+ *) Bugfix: recursion when evaluating variables was not limited.
+
+ *) Bugfix: in the ngx_stream_ssl_preread_module.
+
+ *) Bugfix: if a server in an upstream in the stream module failed, it
+ was considered alive only when a test connection sent to it after
+ fail_timeout was closed; now a successfully established connection is
+ enough.
+
+ *) Bugfix: nginx/Windows could not be built with 64-bit Visual Studio.
+
+ *) Bugfix: nginx/Windows could not be built with OpenSSL 1.1.0.
+
+
+Changes with nginx 1.11.7 13 Dec 2016
+
+ *) Change: now in case of a client certificate verification error the
+ $ssl_client_verify variable contains a string with the failure
+ reason, for example, "FAILED:certificate has expired".
+
+ *) Feature: the $ssl_ciphers, $ssl_curves, $ssl_client_v_start,
+ $ssl_client_v_end, and $ssl_client_v_remain variables.
+
+ *) Feature: the "volatile" parameter of the "map" directive.
+
+ *) Bugfix: dependencies specified for a module were ignored while
+ building dynamic modules.
+
+ *) Bugfix: when using HTTP/2 and the "limit_req" or "auth_request"
+ directives client request body might be corrupted; the bug had
+ appeared in 1.11.0.
+
+ *) Bugfix: a segmentation fault might occur in a worker process when
+ using HTTP/2; the bug had appeared in 1.11.3.
+
+ *) Bugfix: in the ngx_http_mp4_module.
+ Thanks to Congcong Hu.
+
+ *) Bugfix: in the ngx_http_perl_module.
+
+
+Changes with nginx 1.11.6 15 Nov 2016
+
+ *) Change: format of the $ssl_client_s_dn and $ssl_client_i_dn variables
+ has been changed to follow RFC 2253 (RFC 4514); values in the old
+ format are available in the $ssl_client_s_dn_legacy and
+ $ssl_client_i_dn_legacy variables.
+
+ *) Change: when storing temporary files in a cache directory they will
+ be stored in the same subdirectories as corresponding cache files
+ instead of a separate subdirectory for temporary files.
+
+ *) Feature: EXTERNAL authentication mechanism support in mail proxy.
+ Thanks to Robert Norris.
+
+ *) Feature: WebP support in the ngx_http_image_filter_module.
+
+ *) Feature: variables support in the "proxy_method" directive.
+ Thanks to Dmitry Lazurkin.
+
+ *) Feature: the "http2_max_requests" directive in the
+ ngx_http_v2_module.
+
+ *) Feature: the "proxy_cache_max_range_offset",
+ "fastcgi_cache_max_range_offset", "scgi_cache_max_range_offset", and
+ "uwsgi_cache_max_range_offset" directives.
+
+ *) Bugfix: graceful shutdown of old worker processes might require
+ infinite time when using HTTP/2.
+
+ *) Bugfix: in the ngx_http_mp4_module.
+
+ *) Bugfix: "ignore long locked inactive cache entry" alerts might appear
+ in logs when proxying WebSocket connections with caching enabled.
+
+ *) Bugfix: nginx did not write anything to log and returned a response
+ with code 502 instead of 504 when a timeout occurred during an SSL
+ handshake to a backend.
+
+
+Changes with nginx 1.11.5 11 Oct 2016
+
+ *) Change: the --with-ipv6 configure option was removed, now IPv6
+ support is configured automatically.
+
+ *) Change: now if there are no available servers in an upstream, nginx
+ will not reset number of failures of all servers as it previously
+ did, but will wait for fail_timeout to expire.
+
+ *) Feature: the ngx_stream_ssl_preread_module.
+
+ *) Feature: the "server" directive in the "upstream" context supports
+ the "max_conns" parameter.
+
+ *) Feature: the --with-compat configure option.
+
+ *) Feature: "manager_files", "manager_threshold", and "manager_sleep"
+ parameters of the "proxy_cache_path", "fastcgi_cache_path",
+ "scgi_cache_path", and "uwsgi_cache_path" directives.
+
+ *) Bugfix: flags passed by the --with-ld-opt configure option were not
+ used while building perl module.
+
+ *) Bugfix: in the "add_after_body" directive when used with the
+ "sub_filter" directive.
+
+ *) Bugfix: in the $realip_remote_addr variable.
+
+ *) Bugfix: the "dav_access", "proxy_store_access",
+ "fastcgi_store_access", "scgi_store_access", and "uwsgi_store_access"
+ directives ignored permissions specified for user.
+
+ *) Bugfix: unix domain listen sockets might not be inherited during
+ binary upgrade on Linux.
+
+ *) Bugfix: nginx returned the 400 response on requests with the "-"
+ character in the HTTP method.
+
+
+Changes with nginx 1.11.4 13 Sep 2016
+
+ *) Feature: the $upstream_bytes_received variable.
+
+ *) Feature: the $bytes_received, $session_time, $protocol, $status,
+ $upstream_addr, $upstream_bytes_sent, $upstream_bytes_received,
+ $upstream_connect_time, $upstream_first_byte_time, and
+ $upstream_session_time variables in the stream module.
+
+ *) Feature: the ngx_stream_log_module.
+
+ *) Feature: the "proxy_protocol" parameter of the "listen" directive,
+ the $proxy_protocol_addr and $proxy_protocol_port variables in the
+ stream module.
+
+ *) Feature: the ngx_stream_realip_module.
+
+ *) Bugfix: nginx could not be built with the stream module and the
+ ngx_http_ssl_module, but without ngx_stream_ssl_module; the bug had
+ appeared in 1.11.3.
+
+ *) Feature: the IP_BIND_ADDRESS_NO_PORT socket option was not used; the
+ bug had appeared in 1.11.2.
+
+ *) Bugfix: in the "ranges" parameter of the "geo" directive.
+
+ *) Bugfix: an incorrect response might be returned when using the "aio
+ threads" and "sendfile" directives; the bug had appeared in 1.9.13.
+
+
+Changes with nginx 1.11.3 26 Jul 2016
+
+ *) Change: now the "accept_mutex" directive is turned off by default.
+
+ *) Feature: now nginx uses EPOLLEXCLUSIVE on Linux.
+
+ *) Feature: the ngx_stream_geo_module.
+
+ *) Feature: the ngx_stream_geoip_module.
+
+ *) Feature: the ngx_stream_split_clients_module.
+
+ *) Feature: variables support in the "proxy_pass" and "proxy_ssl_name"
+ directives in the stream module.
+
+ *) Bugfix: socket leak when using HTTP/2.
+
+ *) Bugfix: in configure tests.
+ Thanks to Piotr Sikora.
+
+
+Changes with nginx 1.11.2 05 Jul 2016
+
+ *) Change: now nginx always uses internal MD5 and SHA1 implementations;
+ the --with-md5 and --with-sha1 configure options were canceled.
+
+ *) Feature: variables support in the stream module.
+
+ *) Feature: the ngx_stream_map_module.
+
+ *) Feature: the ngx_stream_return_module.
+
+ *) Feature: a port can be specified in the "proxy_bind", "fastcgi_bind",
+ "memcached_bind", "scgi_bind", and "uwsgi_bind" directives.
+
+ *) Feature: now nginx uses the IP_BIND_ADDRESS_NO_PORT socket option
+ when available.
+
+ *) Bugfix: a segmentation fault might occur in a worker process when
+ using HTTP/2 and the "proxy_request_buffering" directive.
+
+ *) Bugfix: the "Content-Length" request header line was always added to
+ requests passed to backends, including requests without body, when
+ using HTTP/2.
+
+ *) Bugfix: "http request count is zero" alerts might appear in logs when
+ using HTTP/2.
+
+ *) Bugfix: unnecessary buffering might occur when using the "sub_filter"
+ directive; the issue had appeared in 1.9.4.
+
+
+Changes with nginx 1.11.1 31 May 2016
+
+ *) Security: a segmentation fault might occur in a worker process while
+ writing a specially crafted request body to a temporary file
+ (CVE-2016-4450); the bug had appeared in 1.3.9.
+
+
+Changes with nginx 1.11.0 24 May 2016
+
+ *) Feature: the "transparent" parameter of the "proxy_bind",
+ "fastcgi_bind", "memcached_bind", "scgi_bind", and "uwsgi_bind"
+ directives.
+
+ *) Feature: the $request_id variable.
+
+ *) Feature: the "map" directive supports combinations of multiple
+ variables as resulting values.
+
+ *) Feature: now nginx checks if EPOLLRDHUP events are supported by
+ kernel, and optimizes connection handling accordingly if the "epoll"
+ method is used.
+
+ *) Feature: the "ssl_certificate" and "ssl_certificate_key" directives
+ can be specified multiple times to load certificates of different
+ types (for example, RSA and ECDSA).
+
+ *) Feature: the "ssl_ecdh_curve" directive now allows specifying a list
+ of curves when using OpenSSL 1.0.2 or newer; by default a list built
+ into OpenSSL is used.
+
+ *) Change: to use DHE ciphers it is now required to specify parameters
+ using the "ssl_dhparam" directive.
+
+ *) Feature: the $proxy_protocol_port variable.
+
+ *) Feature: the $realip_remote_port variable in the
+ ngx_http_realip_module.
+
+ *) Feature: the ngx_http_realip_module is now able to set the client
+ port in addition to the address.
+
+ *) Change: the "421 Misdirected Request" response now used when
+ rejecting requests to a virtual server different from one negotiated
+ during an SSL handshake; this improves interoperability with some
+ HTTP/2 clients when using client certificates.
+
+ *) Change: HTTP/2 clients can now start sending request body
+ immediately; the "http2_body_preread_size" directive controls size of
+ the buffer used before nginx will start reading client request body.
+
+ *) Bugfix: cached error responses were not updated when using the
+ "proxy_cache_bypass" directive.
+
+
+Changes with nginx 1.9.15 19 Apr 2016
+
+ *) Bugfix: "recv() failed" errors might occur when using HHVM as a
+ FastCGI server.
+
+ *) Bugfix: when using HTTP/2 and the "limit_req" or "auth_request"
+ directives a timeout or a "client violated flow control" error might
+ occur while reading client request body; the bug had appeared in
+ 1.9.14.
+
+ *) Workaround: a response might not be shown by some browsers if HTTP/2
+ was used and client request body was not fully read; the bug had
+ appeared in 1.9.14.
+
+ *) Bugfix: connections might hang when using the "aio threads"
+ directive.
+ Thanks to Mindaugas Rasiukevicius.
+
+
+Changes with nginx 1.9.14 05 Apr 2016
+
+ *) Feature: OpenSSL 1.1.0 compatibility.
+
+ *) Feature: the "proxy_request_buffering", "fastcgi_request_buffering",
+ "scgi_request_buffering", and "uwsgi_request_buffering" directives
+ now work with HTTP/2.
+
+ *) Bugfix: "zero size buf in output" alerts might appear in logs when
+ using HTTP/2.
+
+ *) Bugfix: the "client_max_body_size" directive might work incorrectly
+ when using HTTP/2.
+
+ *) Bugfix: of minor bugs in logging.
+
+
+Changes with nginx 1.9.13 29 Mar 2016
+
+ *) Change: non-idempotent requests (POST, LOCK, PATCH) are no longer
+ passed to the next server by default if a request has been sent to a
+ backend; the "non_idempotent" parameter of the "proxy_next_upstream"
+ directive explicitly allows retrying such requests.
+
+ *) Feature: the ngx_http_perl_module can be built dynamically.
+
+ *) Feature: UDP support in the stream module.
+
+ *) Feature: the "aio_write" directive.
+
+ *) Feature: now cache manager monitors number of elements in caches and
+ tries to avoid cache keys zone overflows.
+
+ *) Bugfix: "task already active" and "second aio post" alerts might
+ appear in logs when using the "sendfile" and "aio" directives with
+ subrequests.
+
+ *) Bugfix: "zero size buf in output" alerts might appear in logs if
+ caching was used and a client closed a connection prematurely.
+
+ *) Bugfix: connections with clients might be closed needlessly if
+ caching was used.
+ Thanks to Justin Li.
+
+ *) Bugfix: nginx might hog CPU if the "sendfile" directive was used on
+ Linux or Solaris and a file being sent was changed during sending.
+
+ *) Bugfix: connections might hang when using the "sendfile" and "aio
+ threads" directives.
+
+ *) Bugfix: in the "proxy_pass", "fastcgi_pass", "scgi_pass", and
+ "uwsgi_pass" directives when using variables.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: in the ngx_http_sub_filter_module.
+
+ *) Bugfix: if an error occurred in a cached backend connection, the
+ request was passed to the next server regardless of the
+ proxy_next_upstream directive.
+
+ *) Bugfix: "CreateFile() failed" errors when creating temporary files on
+ Windows.
+
+
+Changes with nginx 1.9.12 24 Feb 2016
+
+ *) Feature: Huffman encoding of response headers in HTTP/2.
+ Thanks to Vlad Krasnov.
+
+ *) Feature: the "worker_cpu_affinity" directive now supports more than
+ 64 CPUs.
+
+ *) Bugfix: compatibility with 3rd party C++ modules; the bug had
+ appeared in 1.9.11.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: nginx could not be built statically with OpenSSL on Linux;
+ the bug had appeared in 1.9.11.
+
+ *) Bugfix: the "add_header ... always" directive with an empty value did
+ not delete "Last-Modified" and "ETag" header lines from error
+ responses.
+
+ *) Workaround: "called a function you should not call" and "shutdown
+ while in init" messages might appear in logs when using OpenSSL
+ 1.0.2f.
+
+ *) Bugfix: invalid headers might be logged incorrectly.
+
+ *) Bugfix: socket leak when using HTTP/2.
+
+ *) Bugfix: in the ngx_http_v2_module.
+
+
+Changes with nginx 1.9.11 09 Feb 2016
+
+ *) Feature: TCP support in resolver.
+
+ *) Feature: dynamic modules.
+
+ *) Bugfix: the $request_length variable did not include size of request
+ headers when using HTTP/2.
+
+ *) Bugfix: in the ngx_http_v2_module.
+
+
+Changes with nginx 1.9.10 26 Jan 2016
+
+ *) Security: invalid pointer dereference might occur during DNS server
+ response processing if the "resolver" directive was used, allowing an
+ attacker who is able to forge UDP packets from the DNS server to
+ cause segmentation fault in a worker process (CVE-2016-0742).
+
+ *) Security: use-after-free condition might occur during CNAME response
+ processing if the "resolver" directive was used, allowing an attacker
+ who is able to trigger name resolution to cause segmentation fault in
+ a worker process, or might have potential other impact
+ (CVE-2016-0746).
+
+ *) Security: CNAME resolution was insufficiently limited if the
+ "resolver" directive was used, allowing an attacker who is able to
+ trigger arbitrary name resolution to cause excessive resource
+ consumption in worker processes (CVE-2016-0747).
+
+ *) Feature: the "auto" parameter of the "worker_cpu_affinity" directive.
+
+ *) Bugfix: the "proxy_protocol" parameter of the "listen" directive did
+ not work with IPv6 listen sockets.
+
+ *) Bugfix: connections to upstream servers might be cached incorrectly
+ when using the "keepalive" directive.
+
+ *) Bugfix: proxying used the HTTP method of the original request after
+ an "X-Accel-Redirect" redirection.
+
+
+Changes with nginx 1.9.9 09 Dec 2015
+
+ *) Bugfix: proxying to unix domain sockets did not work when using
+ variables; the bug had appeared in 1.9.8.
+
+
+Changes with nginx 1.9.8 08 Dec 2015
+
+ *) Feature: pwritev() support.
+
+ *) Feature: the "include" directive inside the "upstream" block.
+
+ *) Feature: the ngx_http_slice_module.
+
+ *) Bugfix: a segmentation fault might occur in a worker process when
+ using LibreSSL; the bug had appeared in 1.9.6.
+
+ *) Bugfix: nginx could not be built on OS X in some cases.
+
+
+Changes with nginx 1.9.7 17 Nov 2015
+
+ *) Feature: the "nohostname" parameter of logging to syslog.
+
+ *) Feature: the "proxy_cache_convert_head" directive.
+
+ *) Feature: the $realip_remote_addr variable in the
+ ngx_http_realip_module.
+
+ *) Bugfix: the "expires" directive might not work when using variables.
+
+ *) Bugfix: a segmentation fault might occur in a worker process when
+ using HTTP/2; the bug had appeared in 1.9.6.
+
+ *) Bugfix: if nginx was built with the ngx_http_v2_module it was
+ possible to use the HTTP/2 protocol even if the "http2" parameter of
+ the "listen" directive was not specified.
+
+ *) Bugfix: in the ngx_http_v2_module.
+
+
+Changes with nginx 1.9.6 27 Oct 2015
+
+ *) Bugfix: a segmentation fault might occur in a worker process when
+ using HTTP/2.
+ Thanks to Piotr Sikora and Denis Andzakovic.
+
+ *) Bugfix: the $server_protocol variable was empty when using HTTP/2.
+
+ *) Bugfix: backend SSL connections in the stream module might be timed
+ out unexpectedly.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if
+ different ssl_session_cache settings were used in different virtual
+ servers.
+
+ *) Bugfix: nginx/Windows could not be built with MinGW gcc; the bug had
+ appeared in 1.9.4.
+ Thanks to Kouhei Sutou.
+
+ *) Bugfix: time was not updated when the timer_resolution directive was
+ used on Windows.
+
+ *) Miscellaneous minor fixes and improvements.
+ Thanks to Markus Linnala, Kurtis Nusbaum and Piotr Sikora.
+
+
+Changes with nginx 1.9.5 22 Sep 2015
+
+ *) Feature: the ngx_http_v2_module (replaces ngx_http_spdy_module).
+ Thanks to Dropbox and Automattic for sponsoring this work.
+
+ *) Change: now the "output_buffers" directive uses two buffers by
+ default.
+
+ *) Change: now nginx limits subrequests recursion, not simultaneous
+ subrequests.
+
+ *) Change: now nginx checks the whole cache key when returning a
+ response from cache.
+ Thanks to Gena Makhomed and Sergey Brester.
+
+ *) Bugfix: "header already sent" alerts might appear in logs when using
+ cache; the bug had appeared in 1.7.5.
+
+ *) Bugfix: "writev() failed (4: Interrupted system call)" errors might
+ appear in logs when using CephFS and the "timer_resolution" directive
+ on Linux.
+
+ *) Bugfix: in invalid configurations handling.
+ Thanks to Markus Linnala.
+
+ *) Bugfix: a segmentation fault occurred in a worker process if the
+ "sub_filter" directive was used at http level; the bug had appeared
+ in 1.9.4.
+
+
+Changes with nginx 1.9.4 18 Aug 2015
+
+ *) Change: the "proxy_downstream_buffer" and "proxy_upstream_buffer"
+ directives of the stream module are replaced with the
+ "proxy_buffer_size" directive.
+
+ *) Feature: the "tcp_nodelay" directive in the stream module.
+
+ *) Feature: multiple "sub_filter" directives can be used simultaneously.
+
+ *) Feature: variables support in the search string of the "sub_filter"
+ directive.
+
+ *) Workaround: configuration testing might fail under Linux OpenVZ.
+ Thanks to Gena Makhomed.
+
+ *) Bugfix: old worker processes might hog CPU after reconfiguration with
+ a large number of worker_connections.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "try_files" and "alias" directives were used inside a location given
+ by a regular expression; the bug had appeared in 1.7.1.
+
+ *) Bugfix: the "try_files" directive inside a nested location given by a
+ regular expression worked incorrectly if the "alias" directive was
+ used in the outer location.
+
+ *) Bugfix: in hash table initialization error handling.
+
+ *) Bugfix: nginx could not be built with Visual Studio 2015.
+
+
+Changes with nginx 1.9.3 14 Jul 2015
+
+ *) Change: duplicate "http", "mail", and "stream" blocks are now
+ disallowed.
+
+ *) Feature: connection limiting in the stream module.
+
+ *) Feature: data rate limiting in the stream module.
+
+ *) Bugfix: the "zone" directive inside the "upstream" block did not work
+ on Windows.
+
+ *) Bugfix: compatibility with LibreSSL in the stream module.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: in the "--builddir" configure parameter.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: the "ssl_stapling_file" directive did not work; the bug had
+ appeared in 1.9.2.
+ Thanks to Faidon Liambotis and Brandon Black.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "ssl_stapling" directive was used; the bug had appeared in 1.9.2.
+ Thanks to Matthew Baldwin.
+
+
+Changes with nginx 1.9.2 16 Jun 2015
+
+ *) Feature: the "backlog" parameter of the "listen" directives of the
+ mail proxy and stream modules.
+
+ *) Feature: the "allow" and "deny" directives in the stream module.
+
+ *) Feature: the "proxy_bind" directive in the stream module.
+
+ *) Feature: the "proxy_protocol" directive in the stream module.
+
+ *) Feature: the -T switch.
+
+ *) Feature: the REQUEST_SCHEME parameter added to the fastcgi.conf,
+ fastcgi_params, scgi_params, and uwsgi_params standard configuration
+ files.
+
+ *) Bugfix: the "reuseport" parameter of the "listen" directive of the
+ stream module did not work.
+
+ *) Bugfix: OCSP stapling might return an expired OCSP response in some
+ cases.
+
+
+Changes with nginx 1.9.1 26 May 2015
+
+ *) Change: now SSLv3 protocol is disabled by default.
+
+ *) Change: some long deprecated directives are not supported anymore.
+
+ *) Feature: the "reuseport" parameter of the "listen" directive.
+ Thanks to Yingqi Lu at Intel and Sepherosa Ziehau.
+
+ *) Feature: the $upstream_connect_time variable.
+
+ *) Bugfix: in the "hash" directive on big-endian platforms.
+
+ *) Bugfix: nginx might fail to start on some old Linux variants; the bug
+ had appeared in 1.7.11.
+
+ *) Bugfix: in IP address parsing.
+ Thanks to Sergey Polovko.
+
+
+Changes with nginx 1.9.0 28 Apr 2015
+
+ *) Change: obsolete aio and rtsig event methods have been removed.
+
+ *) Feature: the "zone" directive inside the "upstream" block.
+
+ *) Feature: the stream module.
+
+ *) Feature: byte ranges support in the ngx_http_memcached_module.
+ Thanks to Martin Mlynář.
+
+ *) Feature: shared memory can now be used on Windows versions with
+ address space layout randomization.
+ Thanks to Sergey Brester.
+
+ *) Feature: the "error_log" directive can now be used on mail and server
+ levels in mail proxy.
+
+ *) Bugfix: the "proxy_protocol" parameter of the "listen" directive did
+ not work if not specified in the first "listen" directive for a
+ listen socket.
+
+
+Changes with nginx 1.7.12 07 Apr 2015
+
+ *) Feature: now the "tcp_nodelay" directive works with backend SSL
+ connections.
+
+ *) Feature: now thread pools can be used to read cache file headers.
+
+ *) Bugfix: in the "proxy_request_buffering" directive.
+
+ *) Bugfix: a segmentation fault might occur in a worker process when
+ using thread pools on Linux.
+
+ *) Bugfix: in error handling when using the "ssl_stapling" directive.
+ Thanks to Filipe da Silva.
+
+ *) Bugfix: in the ngx_http_spdy_module.
+
+
+Changes with nginx 1.7.11 24 Mar 2015
+
+ *) Change: the "sendfile" parameter of the "aio" directive is
+ deprecated; now nginx automatically uses AIO to pre-load data for
+ sendfile if both "aio" and "sendfile" directives are used.
+
+ *) Feature: experimental thread pools support.
+
+ *) Feature: the "proxy_request_buffering", "fastcgi_request_buffering",
+ "scgi_request_buffering", and "uwsgi_request_buffering" directives.
+
+ *) Feature: request body filters experimental API.
+
+ *) Feature: client SSL certificates support in mail proxy.
+ Thanks to Sven Peter, Franck Levionnois, and Filipe Da Silva.
+
+ *) Feature: startup speedup when using the "hash ... consistent"
+ directive in the upstream block.
+ Thanks to Wai Keen Woon.
+
+ *) Feature: debug logging into a cyclic memory buffer.
+
+ *) Bugfix: in hash table handling.
+ Thanks to Chris West.
+
+ *) Bugfix: in the "proxy_cache_revalidate" directive.
+
+ *) Bugfix: SSL connections might hang if deferred accept or the
+ "proxy_protocol" parameter of the "listen" directive were used.
+ Thanks to James Hamlin.
+
+ *) Bugfix: the $upstream_response_time variable might contain a wrong
+ value if the "image_filter" directive was used.
+
+ *) Bugfix: in integer overflow handling.
+ Thanks to Régis Leroy.
+
+ *) Bugfix: it was not possible to enable SSLv3 with LibreSSL.
+
+ *) Bugfix: the "ignoring stale global SSL error ... called a function
+ you should not call" alerts appeared in logs when using LibreSSL.
+
+ *) Bugfix: certificates specified by the "ssl_client_certificate" and
+ "ssl_trusted_certificate" directives were inadvertently used to
+ automatically construct certificate chains.
+
+
+Changes with nginx 1.7.10 10 Feb 2015
+
+ *) Feature: the "use_temp_path" parameter of the "proxy_cache_path",
+ "fastcgi_cache_path", "scgi_cache_path", and "uwsgi_cache_path"
+ directives.
+
+ *) Feature: the $upstream_header_time variable.
+
+ *) Workaround: now on disk overflow nginx tries to write error logs once
+ a second only.
+
+ *) Bugfix: the "try_files" directive did not ignore normal files while
+ testing directories.
+ Thanks to Damien Tournoud.
+
+ *) Bugfix: alerts "sendfile() failed" if the "sendfile" directive was
+ used on OS X; the bug had appeared in 1.7.8.
+
+ *) Bugfix: alerts "sem_post() failed" might appear in logs.
+
+ *) Bugfix: nginx could not be built with musl libc.
+ Thanks to James Taylor.
+
+ *) Bugfix: nginx could not be built on Tru64 UNIX.
+ Thanks to Goetz T. Fischer.
+
+
+Changes with nginx 1.7.9 23 Dec 2014
+
+ *) Feature: variables support in the "proxy_cache", "fastcgi_cache",
+ "scgi_cache", and "uwsgi_cache" directives.
+
+ *) Feature: variables support in the "expires" directive.
+
+ *) Feature: loading of secret keys from hardware tokens with OpenSSL
+ engines.
+ Thanks to Dmitrii Pichulin.
+
+ *) Feature: the "autoindex_format" directive.
+
+ *) Bugfix: cache revalidation is now only used for responses with 200
+ and 206 status codes.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: the "TE" client request header line was passed to backends
+ while proxying.
+
+ *) Bugfix: the "proxy_pass", "fastcgi_pass", "scgi_pass", and
+ "uwsgi_pass" directives might not work correctly inside the "if" and
+ "limit_except" blocks.
+
+ *) Bugfix: the "proxy_store" directive with the "on" parameter was
+ ignored if the "proxy_store" directive with an explicitly specified
+ file path was used on a previous level.
+
+ *) Bugfix: nginx could not be built with BoringSSL.
+ Thanks to Lukas Tribus.
+
+
+Changes with nginx 1.7.8 02 Dec 2014
+
+ *) Change: now the "If-Modified-Since", "If-Range", etc. client request
+ header lines are passed to a backend while caching if nginx knows in
+ advance that the response will not be cached (e.g., when using
+ proxy_cache_min_uses).
+
+ *) Change: now after proxy_cache_lock_timeout nginx sends a request to a
+ backend with caching disabled; the new directives
+ "proxy_cache_lock_age", "fastcgi_cache_lock_age",
+ "scgi_cache_lock_age", and "uwsgi_cache_lock_age" specify a time
+ after which the lock will be released and another attempt to cache a
+ response will be made.
+
+ *) Change: the "log_format" directive can now be used only at http
+ level.
+
+ *) Feature: the "proxy_ssl_certificate", "proxy_ssl_certificate_key",
+ "proxy_ssl_password_file", "uwsgi_ssl_certificate",
+ "uwsgi_ssl_certificate_key", and "uwsgi_ssl_password_file"
+ directives.
+ Thanks to Piotr Sikora.
+
+ *) Feature: it is now possible to switch to a named location using
+ "X-Accel-Redirect".
+ Thanks to Toshikuni Fukaya.
+
+ *) Feature: now the "tcp_nodelay" directive works with SPDY connections.
+
+ *) Feature: new directives in vim syntax highliting scripts.
+ Thanks to Peter Wu.
+
+ *) Bugfix: nginx ignored the "s-maxage" value in the "Cache-Control"
+ backend response header line.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: in the ngx_http_spdy_module.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: in the "ssl_password_file" directive when using OpenSSL
+ 0.9.8zc, 1.0.0o, 1.0.1j.
+
+ *) Bugfix: alerts "header already sent" appeared in logs if the
+ "post_action" directive was used; the bug had appeared in 1.5.4.
+
+ *) Bugfix: alerts "the http output chain is empty" might appear in logs
+ if the "postpone_output 0" directive was used with SSI includes.
+
+ *) Bugfix: in the "proxy_cache_lock" directive with SSI subrequests.
+ Thanks to Yichun Zhang.
+
+
+Changes with nginx 1.7.7 28 Oct 2014
+
+ *) Change: now nginx takes into account the "Vary" header line in a
+ backend response while caching.
+
+ *) Feature: the "proxy_force_ranges", "fastcgi_force_ranges",
+ "scgi_force_ranges", and "uwsgi_force_ranges" directives.
+
+ *) Feature: the "proxy_limit_rate", "fastcgi_limit_rate",
+ "scgi_limit_rate", and "uwsgi_limit_rate" directives.
+
+ *) Feature: the "Vary" parameter of the "proxy_ignore_headers",
+ "fastcgi_ignore_headers", "scgi_ignore_headers", and
+ "uwsgi_ignore_headers" directives.
+
+ *) Bugfix: the last part of a response received from a backend with
+ unbufferred proxy might not be sent to a client if "gzip" or "gunzip"
+ directives were used.
+
+ *) Bugfix: in the "proxy_cache_revalidate" directive.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: in error handling.
+ Thanks to Yichun Zhang and Daniil Bondarev.
+
+ *) Bugfix: in the "proxy_next_upstream_tries" and
+ "proxy_next_upstream_timeout" directives.
+ Thanks to Feng Gu.
+
+ *) Bugfix: nginx/Windows could not be built with MinGW-w64 gcc.
+ Thanks to Kouhei Sutou.
+
+
+Changes with nginx 1.7.6 30 Sep 2014
+
+ *) Change: the deprecated "limit_zone" directive is not supported
+ anymore.
+
+ *) Feature: the "limit_conn_zone" and "limit_req_zone" directives now
+ can be used with combinations of multiple variables.
+
+ *) Bugfix: request body might be transmitted incorrectly when retrying a
+ FastCGI request to the next upstream server.
+
+ *) Bugfix: in logging to syslog.
+
+
+Changes with nginx 1.7.5 16 Sep 2014
+
+ *) Security: it was possible to reuse SSL sessions in unrelated contexts
+ if a shared SSL session cache or the same TLS session ticket key was
+ used for multiple "server" blocks (CVE-2014-3616).
+ Thanks to Antoine Delignat-Lavaud.
+
+ *) Change: now the "stub_status" directive does not require a parameter.
+
+ *) Feature: the "always" parameter of the "add_header" directive.
+
+ *) Feature: the "proxy_next_upstream_tries",
+ "proxy_next_upstream_timeout", "fastcgi_next_upstream_tries",
+ "fastcgi_next_upstream_timeout", "memcached_next_upstream_tries",
+ "memcached_next_upstream_timeout", "scgi_next_upstream_tries",
+ "scgi_next_upstream_timeout", "uwsgi_next_upstream_tries", and
+ "uwsgi_next_upstream_timeout" directives.
+
+ *) Bugfix: in the "if" parameter of the "access_log" directive.
+
+ *) Bugfix: in the ngx_http_perl_module.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: the "listen" directive of the mail proxy module did not allow
+ to specify more than two parameters.
+
+ *) Bugfix: the "sub_filter" directive did not work with a string to
+ replace consisting of a single character.
+
+ *) Bugfix: requests might hang if resolver was used and a timeout
+ occurred during a DNS request.
+
+ *) Bugfix: in the ngx_http_spdy_module when using with AIO.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "set" directive was used to change the "$http_...", "$sent_http_...",
+ or "$upstream_http_..." variables.
+
+ *) Bugfix: in memory allocation error handling.
+ Thanks to Markus Linnala and Feng Gu.
+
+
+Changes with nginx 1.7.4 05 Aug 2014
+
+ *) Security: pipelined commands were not discarded after STARTTLS
+ command in SMTP proxy (CVE-2014-3556); the bug had appeared in 1.5.6.
+ Thanks to Chris Boulton.
+
+ *) Change: URI escaping now uses uppercase hexadecimal digits.
+ Thanks to Piotr Sikora.
+
+ *) Feature: now nginx can be build with BoringSSL and LibreSSL.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: requests might hang if resolver was used and a DNS server
+ returned a malformed response; the bug had appeared in 1.5.8.
+
+ *) Bugfix: in the ngx_http_spdy_module.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: the $uri variable might contain garbage when returning errors
+ with code 400.
+ Thanks to Sergey Bobrov.
+
+ *) Bugfix: in error handling in the "proxy_store" directive and the
+ ngx_http_dav_module.
+ Thanks to Feng Gu.
+
+ *) Bugfix: a segmentation fault might occur if logging of errors to
+ syslog was used; the bug had appeared in 1.7.1.
+
+ *) Bugfix: the $geoip_latitude, $geoip_longitude, $geoip_dma_code, and
+ $geoip_area_code variables might not work.
+ Thanks to Yichun Zhang.
+
+ *) Bugfix: in memory allocation error handling.
+ Thanks to Tatsuhiko Kubo and Piotr Sikora.
+
+
+Changes with nginx 1.7.3 08 Jul 2014
+
+ *) Feature: weak entity tags are now preserved on response
+ modifications, and strong ones are changed to weak.
+
+ *) Feature: cache revalidation now uses If-None-Match header if
+ possible.
+
+ *) Feature: the "ssl_password_file" directive.
+
+ *) Bugfix: the If-None-Match request header line was ignored if there
+ was no Last-Modified header in a response returned from cache.
+
+ *) Bugfix: "peer closed connection in SSL handshake" messages were
+ logged at "info" level instead of "error" while connecting to
+ backends.
+
+ *) Bugfix: in the ngx_http_dav_module module in nginx/Windows.
+
+ *) Bugfix: SPDY connections might be closed prematurely if caching was
+ used.
+
+
+Changes with nginx 1.7.2 17 Jun 2014
+
+ *) Feature: the "hash" directive inside the "upstream" block.
+
+ *) Feature: defragmentation of free shared memory blocks.
+ Thanks to Wandenberg Peixoto and Yichun Zhang.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ default value of the "access_log" directive was used; the bug had
+ appeared in 1.7.0.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: trailing slash was mistakenly removed from the last parameter
+ of the "try_files" directive.
+
+ *) Bugfix: nginx could not be built on OS X in some cases.
+
+ *) Bugfix: in the ngx_http_spdy_module.
+
+
+Changes with nginx 1.7.1 27 May 2014
+
+ *) Feature: the "$upstream_cookie_..." variables.
+
+ *) Feature: the $ssl_client_fingerprint variable.
+
+ *) Feature: the "error_log" and "access_log" directives now support
+ logging to syslog.
+
+ *) Feature: the mail proxy now logs client port on connect.
+
+ *) Bugfix: memory leak if the "ssl_stapling" directive was used.
+ Thanks to Filipe da Silva.
+
+ *) Bugfix: the "alias" directive used inside a location given by a
+ regular expression worked incorrectly if the "if" or "limit_except"
+ directives were used.
+
+ *) Bugfix: the "charset" directive did not set a charset to encoded
+ backend responses.
+
+ *) Bugfix: a "proxy_pass" directive without URI part might use original
+ request after the $args variable was set.
+ Thanks to Yichun Zhang.
+
+ *) Bugfix: in the "none" parameter in the "smtp_auth" directive; the bug
+ had appeared in 1.5.6.
+ Thanks to Svyatoslav Nikolsky.
+
+ *) Bugfix: if sub_filter and SSI were used together, then responses
+ might be transferred incorrectly.
+
+ *) Bugfix: nginx could not be built with the --with-file-aio option on
+ Linux/aarch64.
+
+
+Changes with nginx 1.7.0 24 Apr 2014
+
+ *) Feature: backend SSL certificate verification.
+
+ *) Feature: support for SNI while working with SSL backends.
+
+ *) Feature: the $ssl_server_name variable.
+
+ *) Feature: the "if" parameter of the "access_log" directive.
+
+
+Changes with nginx 1.5.13 08 Apr 2014
+
+ *) Change: improved hash table handling; the default values of the
+ "variables_hash_max_size" and "types_hash_bucket_size" were changed
+ to 1024 and 64 respectively.
+
+ *) Feature: the ngx_http_mp4_module now supports the "end" argument.
+
+ *) Feature: byte ranges support in the ngx_http_mp4_module and while
+ saving responses to cache.
+
+ *) Bugfix: alerts "ngx_slab_alloc() failed: no memory" no longer logged
+ when using shared memory in the "ssl_session_cache" directive and in
+ the ngx_http_limit_req_module.
+
+ *) Bugfix: the "underscores_in_headers" directive did not allow
+ underscore as a first character of a header.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: cache manager might hog CPU on exit in nginx/Windows.
+
+ *) Bugfix: nginx/Windows terminated abnormally if the
+ "ssl_session_cache" directive was used with the "shared" parameter.
+
+ *) Bugfix: in the ngx_http_spdy_module.
+
+
+Changes with nginx 1.5.12 18 Mar 2014
+
+ *) Security: a heap memory buffer overflow might occur in a worker
+ process while handling a specially crafted request by
+ ngx_http_spdy_module, potentially resulting in arbitrary code
+ execution (CVE-2014-0133).
+ Thanks to Lucas Molas, researcher at Programa STIC, Fundación Dr.
+ Manuel Sadosky, Buenos Aires, Argentina.
+
+ *) Feature: the "proxy_protocol" parameters of the "listen" and
+ "real_ip_header" directives, the $proxy_protocol_addr variable.
+
+ *) Bugfix: in the "fastcgi_next_upstream" directive.
+ Thanks to Lucas Molas.
+
+
+Changes with nginx 1.5.11 04 Mar 2014
+
+ *) Security: memory corruption might occur in a worker process on 32-bit
+ platforms while handling a specially crafted request by
+ ngx_http_spdy_module, potentially resulting in arbitrary code
+ execution (CVE-2014-0088); the bug had appeared in 1.5.10.
+ Thanks to Lucas Molas, researcher at Programa STIC, Fundación Dr.
+ Manuel Sadosky, Buenos Aires, Argentina.
+
+ *) Feature: the $ssl_session_reused variable.
+
+ *) Bugfix: the "client_max_body_size" directive might not work when
+ reading a request body using chunked transfer encoding; the bug had
+ appeared in 1.3.9.
+ Thanks to Lucas Molas.
+
+ *) Bugfix: a segmentation fault might occur in a worker process when
+ proxying WebSocket connections.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ ngx_http_spdy_module was used on 32-bit platforms; the bug had
+ appeared in 1.5.10.
+
+ *) Bugfix: the $upstream_status variable might contain wrong data if the
+ "proxy_cache_use_stale" or "proxy_cache_revalidate" directives were
+ used.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if
+ errors with code 400 were redirected to a named location using the
+ "error_page" directive.
+
+ *) Bugfix: nginx/Windows could not be built with Visual Studio 2013.
+
+
+Changes with nginx 1.5.10 04 Feb 2014
+
+ *) Feature: the ngx_http_spdy_module now uses SPDY 3.1 protocol.
+ Thanks to Automattic and MaxCDN for sponsoring this work.
+
+ *) Feature: the ngx_http_mp4_module now skips tracks too short for a
+ seek requested.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ $ssl_session_id variable was used in logs; the bug had appeared in
+ 1.5.9.
+
+ *) Bugfix: the $date_local and $date_gmt variables used wrong format
+ outside of the ngx_http_ssi_filter_module.
+
+ *) Bugfix: client connections might be immediately closed if deferred
+ accept was used; the bug had appeared in 1.3.15.
+
+ *) Bugfix: alerts "getsockopt(TCP_FASTOPEN) ... failed" appeared in logs
+ during binary upgrade on Linux; the bug had appeared in 1.5.8.
+ Thanks to Piotr Sikora.
+
+
+Changes with nginx 1.5.9 22 Jan 2014
+
+ *) Change: now nginx expects escaped URIs in "X-Accel-Redirect" headers.
+
+ *) Feature: the "ssl_buffer_size" directive.
+
+ *) Feature: the "limit_rate" directive can now be used to rate limit
+ responses sent in SPDY connections.
+
+ *) Feature: the "spdy_chunk_size" directive.
+
+ *) Feature: the "ssl_session_tickets" directive.
+ Thanks to Dirkjan Bussink.
+
+ *) Bugfix: the $ssl_session_id variable contained full session
+ serialized instead of just a session id.
+ Thanks to Ivan Ristić.
+
+ *) Bugfix: nginx incorrectly handled escaped "?" character in the
+ "include" SSI command.
+
+ *) Bugfix: the ngx_http_dav_module did not unescape destination URI of
+ the COPY and MOVE methods.
+
+ *) Bugfix: resolver did not understand domain names with a trailing dot.
+ Thanks to Yichun Zhang.
+
+ *) Bugfix: alerts "zero size buf in output" might appear in logs while
+ proxying; the bug had appeared in 1.3.9.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ ngx_http_spdy_module was used.
+
+ *) Bugfix: proxied WebSocket connections might hang right after
+ handshake if the select, poll, or /dev/poll methods were used.
+
+ *) Bugfix: the "xclient" directive of the mail proxy module incorrectly
+ handled IPv6 client addresses.
+
+
+Changes with nginx 1.5.8 17 Dec 2013
+
+ *) Feature: IPv6 support in resolver.
+
+ *) Feature: the "listen" directive supports the "fastopen" parameter.
+ Thanks to Mathew Rodley.
+
+ *) Feature: SSL support in the ngx_http_uwsgi_module.
+ Thanks to Roberto De Ioris.
+
+ *) Feature: vim syntax highlighting scripts were added to contrib.
+ Thanks to Evan Miller.
+
+ *) Bugfix: a timeout might occur while reading client request body in an
+ SSL connection using chunked transfer encoding.
+
+ *) Bugfix: the "master_process" directive did not work correctly in
+ nginx/Windows.
+
+ *) Bugfix: the "setfib" parameter of the "listen" directive might not
+ work.
+
+ *) Bugfix: in the ngx_http_spdy_module.
+
+
+Changes with nginx 1.5.7 19 Nov 2013
+
+ *) Security: a character following an unescaped space in a request line
+ was handled incorrectly (CVE-2013-4547); the bug had appeared in
+ 0.8.41.
+ Thanks to Ivan Fratric of the Google Security Team.
+
+ *) Change: a logging level of auth_basic errors about no user/password
+ provided has been lowered from "error" to "info".
+
+ *) Feature: the "proxy_cache_revalidate", "fastcgi_cache_revalidate",
+ "scgi_cache_revalidate", and "uwsgi_cache_revalidate" directives.
+
+ *) Feature: the "ssl_session_ticket_key" directive.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: the directive "add_header Cache-Control ''" added a
+ "Cache-Control" response header line with an empty value.
+
+ *) Bugfix: the "satisfy any" directive might return 403 error instead of
+ 401 if auth_request and auth_basic directives were used.
+ Thanks to Jan Marc Hoffmann.
+
+ *) Bugfix: the "accept_filter" and "deferred" parameters of the "listen"
+ directive were ignored for listen sockets created during binary
+ upgrade.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: some data received from a backend with unbufferred proxy
+ might not be sent to a client immediately if "gzip" or "gunzip"
+ directives were used.
+ Thanks to Yichun Zhang.
+
+ *) Bugfix: in error handling in ngx_http_gunzip_filter_module.
+
+ *) Bugfix: responses might hang if the ngx_http_spdy_module was used
+ with the "auth_request" directive.
+
+ *) Bugfix: memory leak in nginx/Windows.
+
+
+Changes with nginx 1.5.6 01 Oct 2013
+
+ *) Feature: the "fastcgi_buffering" directive.
+
+ *) Feature: the "proxy_ssl_protocols" and "proxy_ssl_ciphers"
+ directives.
+ Thanks to Piotr Sikora.
+
+ *) Feature: optimization of SSL handshakes when using long certificate
+ chains.
+
+ *) Feature: the mail proxy supports SMTP pipelining.
+
+ *) Bugfix: in the ngx_http_auth_basic_module when using "$apr1$"
+ password encryption method.
+ Thanks to Markus Linnala.
+
+ *) Bugfix: in MacOSX, Cygwin, and nginx/Windows incorrect location might
+ be used to process a request if locations were given using characters
+ in different cases.
+
+ *) Bugfix: automatic redirect with appended trailing slash for proxied
+ locations might not work.
+
+ *) Bugfix: in the mail proxy server.
+
+ *) Bugfix: in the ngx_http_spdy_module.
+
+
+Changes with nginx 1.5.5 17 Sep 2013
+
+ *) Change: now nginx assumes HTTP/1.0 by default if it is not able to
+ detect protocol reliably.
+
+ *) Feature: the "disable_symlinks" directive now uses O_PATH on Linux.
+
+ *) Feature: now nginx uses EPOLLRDHUP events to detect premature
+ connection close by clients if the "epoll" method is used.
+
+ *) Bugfix: in the "valid_referers" directive if the "server_names"
+ parameter was used.
+
+ *) Bugfix: the $request_time variable did not work in nginx/Windows.
+
+ *) Bugfix: in the "image_filter" directive.
+ Thanks to Lanshun Zhou.
+
+ *) Bugfix: OpenSSL 1.0.1f compatibility.
+ Thanks to Piotr Sikora.
+
+
+Changes with nginx 1.5.4 27 Aug 2013
+
+ *) Change: the "js" extension MIME type has been changed to
+ "application/javascript"; default value of the "charset_types"
+ directive was changed accordingly.
+
+ *) Change: now the "image_filter" directive with the "size" parameter
+ returns responses with the "application/json" MIME type.
+
+ *) Feature: the ngx_http_auth_request_module.
+
+ *) Bugfix: a segmentation fault might occur on start or during
+ reconfiguration if the "try_files" directive was used with an empty
+ parameter.
+
+ *) Bugfix: memory leak if relative paths were specified using variables
+ in the "root" or "auth_basic_user_file" directives.
+
+ *) Bugfix: the "valid_referers" directive incorrectly executed regular
+ expressions if a "Referer" header started with "https://".
+ Thanks to Liangbin Li.
+
+ *) Bugfix: responses might hang if subrequests were used and an SSL
+ handshake error happened during subrequest processing.
+ Thanks to Aviram Cohen.
+
+ *) Bugfix: in the ngx_http_autoindex_module.
+
+ *) Bugfix: in the ngx_http_spdy_module.
+
+
+Changes with nginx 1.5.3 30 Jul 2013
+
+ *) Change in internal API: now u->length defaults to -1 if working with
+ backends in unbuffered mode.
+
+ *) Change: now after receiving an incomplete response from a backend
+ server nginx tries to send an available part of the response to a
+ client, and then closes client connection.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ ngx_http_spdy_module was used with the "client_body_in_file_only"
+ directive.
+
+ *) Bugfix: the "so_keepalive" parameter of the "listen" directive might
+ be handled incorrectly on DragonFlyBSD.
+ Thanks to Sepherosa Ziehau.
+
+ *) Bugfix: in the ngx_http_xslt_filter_module.
+
+ *) Bugfix: in the ngx_http_sub_filter_module.
+
+
+Changes with nginx 1.5.2 02 Jul 2013
+
+ *) Feature: now several "error_log" directives can be used.
+
+ *) Bugfix: the $r->header_in() embedded perl method did not return value
+ of the "Cookie" and "X-Forwarded-For" request header lines; the bug
+ had appeared in 1.3.14.
+
+ *) Bugfix: in the ngx_http_spdy_module.
+ Thanks to Jim Radford.
+
+ *) Bugfix: nginx could not be built on Linux with x32 ABI.
+ Thanks to Serguei Ivantsov.
+
+
+Changes with nginx 1.5.1 04 Jun 2013
+
+ *) Feature: the "ssi_last_modified", "sub_filter_last_modified", and
+ "xslt_last_modified" directives.
+ Thanks to Alexey Kolpakov.
+
+ *) Feature: the "http_403" parameter of the "proxy_next_upstream",
+ "fastcgi_next_upstream", "scgi_next_upstream", and
+ "uwsgi_next_upstream" directives.
+
+ *) Feature: the "allow" and "deny" directives now support unix domain
+ sockets.
+
+ *) Bugfix: nginx could not be built with the ngx_mail_ssl_module, but
+ without ngx_http_ssl_module; the bug had appeared in 1.3.14.
+
+ *) Bugfix: in the "proxy_set_body" directive.
+ Thanks to Lanshun Zhou.
+
+ *) Bugfix: in the "lingering_time" directive.
+ Thanks to Lanshun Zhou.
+
+ *) Bugfix: the "fail_timeout" parameter of the "server" directive in the
+ "upstream" context might not work if "max_fails" parameter was used;
+ the bug had appeared in 1.3.0.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "ssl_stapling" directive was used.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: in the mail proxy server.
+ Thanks to Filipe Da Silva.
+
+ *) Bugfix: nginx/Windows might stop accepting connections if several
+ worker processes were used.
+
+
+Changes with nginx 1.5.0 07 May 2013
+
+ *) Security: a stack-based buffer overflow might occur in a worker
+ process while handling a specially crafted request, potentially
+ resulting in arbitrary code execution (CVE-2013-2028); the bug had
+ appeared in 1.3.9.
+ Thanks to Greg MacManus, iSIGHT Partners Labs.
+
+
+Changes with nginx 1.4.0 24 Apr 2013
+
+ *) Bugfix: nginx could not be built with the ngx_http_perl_module if the
+ --with-openssl option was used; the bug had appeared in 1.3.16.
+
+ *) Bugfix: in a request body handling in the ngx_http_perl_module; the
+ bug had appeared in 1.3.9.
+
+
+Changes with nginx 1.3.16 16 Apr 2013
+
+ *) Bugfix: a segmentation fault might occur in a worker process if
+ subrequests were used; the bug had appeared in 1.3.9.
+
+ *) Bugfix: the "tcp_nodelay" directive caused an error if a WebSocket
+ connection was proxied into a unix domain socket.
+
+ *) Bugfix: the $upstream_response_length variable has an incorrect value
+ "0" if buffering was not used.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: in the eventport and /dev/poll methods.
+
+
+Changes with nginx 1.3.15 26 Mar 2013
+
+ *) Change: opening and closing a connection without sending any data in
+ it is no longer logged to access_log with error code 400.
+
+ *) Feature: the ngx_http_spdy_module.
+ Thanks to Automattic for sponsoring this work.
+
+ *) Feature: the "limit_req_status" and "limit_conn_status" directives.
+ Thanks to Nick Marden.
+
+ *) Feature: the "image_filter_interlace" directive.
+ Thanks to Ian Babrou.
+
+ *) Feature: $connections_waiting variable in the
+ ngx_http_stub_status_module.
+
+ *) Feature: the mail proxy module now supports IPv6 backends.
+
+ *) Bugfix: request body might be transmitted incorrectly when retrying a
+ request to the next upstream server; the bug had appeared in 1.3.9.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: in the "client_body_in_file_only" directive; the bug had
+ appeared in 1.3.9.
+
+ *) Bugfix: responses might hang if subrequests were used and a DNS error
+ happened during subrequest processing.
+ Thanks to Lanshun Zhou.
+
+ *) Bugfix: in backend usage accounting.
+
+
+Changes with nginx 1.3.14 05 Mar 2013
+
+ *) Feature: $connections_active, $connections_reading, and
+ $connections_writing variables in the ngx_http_stub_status_module.
+
+ *) Feature: support of WebSocket connections in the
+ ngx_http_uwsgi_module and ngx_http_scgi_module.
+
+ *) Bugfix: in virtual servers handling with SNI.
+
+ *) Bugfix: new sessions were not always stored if the "ssl_session_cache
+ shared" directive was used and there was no free space in shared
+ memory.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: multiple X-Forwarded-For headers were handled incorrectly.
+ Thanks to Neal Poole for sponsoring this work.
+
+ *) Bugfix: in the ngx_http_mp4_module.
+ Thanks to Gernot Vormayr.
+
+
+Changes with nginx 1.3.13 19 Feb 2013
+
+ *) Change: a compiler with name "cc" is now used by default.
+
+ *) Feature: support for proxying of WebSocket connections.
+ Thanks to Apcera and CloudBees for sponsoring this work.
+
+ *) Feature: the "auth_basic_user_file" directive supports "{SHA}"
+ password encryption method.
+ Thanks to Louis Opter.
+
+
+Changes with nginx 1.3.12 05 Feb 2013
+
+ *) Feature: variables support in the "proxy_bind", "fastcgi_bind",
+ "memcached_bind", "scgi_bind", and "uwsgi_bind" directives.
+
+ *) Feature: the $pipe, $request_length, $time_iso8601, and $time_local
+ variables can now be used not only in the "log_format" directive.
+ Thanks to Kiril Kalchev.
+
+ *) Feature: IPv6 support in the ngx_http_geoip_module.
+ Thanks to Gregor Kališnik.
+
+ *) Bugfix: in the "proxy_method" directive.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if
+ resolver was used with the poll method.
+
+ *) Bugfix: nginx might hog CPU during SSL handshake with a backend if
+ the select, poll, or /dev/poll methods were used.
+
+ *) Bugfix: the "[crit] SSL_write() failed (SSL:)" error.
+
+ *) Bugfix: in the "client_body_in_file_only" directive; the bug had
+ appeared in 1.3.9.
+
+ *) Bugfix: in the "fastcgi_keep_conn" directive.
+
+
+Changes with nginx 1.3.11 10 Jan 2013
+
+ *) Bugfix: a segmentation fault might occur if logging was used; the bug
+ had appeared in 1.3.10.
+
+ *) Bugfix: the "proxy_pass" directive did not work with IP addresses
+ without port specified; the bug had appeared in 1.3.10.
+
+ *) Bugfix: a segmentation fault occurred on start or during
+ reconfiguration if the "keepalive" directive was specified more than
+ once in a single upstream block.
+
+ *) Bugfix: parameter "default" of the "geo" directive did not set
+ default value for IPv6 addresses.
+
+
+Changes with nginx 1.3.10 25 Dec 2012
+
+ *) Change: domain names specified in configuration file are now resolved
+ to IPv6 addresses as well as IPv4 ones.
+
+ *) Change: now if the "include" directive with mask is used on Unix
+ systems, included files are sorted in alphabetical order.
+
+ *) Change: the "add_header" directive adds headers to 201 responses.
+
+ *) Feature: the "geo" directive now supports IPv6 addresses in CIDR
+ notation.
+
+ *) Feature: the "flush" and "gzip" parameters of the "access_log"
+ directive.
+
+ *) Feature: variables support in the "auth_basic" directive.
+
+ *) Bugfix: nginx could not be built with the ngx_http_perl_module in
+ some cases.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ ngx_http_xslt_module was used.
+
+ *) Bugfix: nginx could not be built on MacOSX in some cases.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: the "limit_rate" directive with high rates might result in
+ truncated responses on 32-bit platforms.
+ Thanks to Alexey Antropov.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "if" directive was used.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: a "100 Continue" response was issued with "413 Request Entity
+ Too Large" responses.
+
+ *) Bugfix: the "image_filter", "image_filter_jpeg_quality" and
+ "image_filter_sharpen" directives might be inherited incorrectly.
+ Thanks to Ian Babrou.
+
+ *) Bugfix: "crypt_r() failed" errors might appear if the "auth_basic"
+ directive was used on Linux.
+
+ *) Bugfix: in backup servers handling.
+ Thanks to Thomas Chen.
+
+ *) Bugfix: proxied HEAD requests might return incorrect response if the
+ "gzip" directive was used.
+
+
+Changes with nginx 1.3.9 27 Nov 2012
+
+ *) Feature: support for chunked transfer encoding while reading client
+ request body.
+
+ *) Feature: the $request_time and $msec variables can now be used not
+ only in the "log_format" directive.
+
+ *) Bugfix: cache manager and cache loader processes might not be able to
+ start if more than 512 listen sockets were used.
+
+ *) Bugfix: in the ngx_http_dav_module.
+
+
+Changes with nginx 1.3.8 30 Oct 2012
+
+ *) Feature: the "optional_no_ca" parameter of the "ssl_verify_client"
+ directive.
+ Thanks to Mike Kazantsev and Eric O'Connor.
+
+ *) Feature: the $bytes_sent, $connection, and $connection_requests
+ variables can now be used not only in the "log_format" directive.
+ Thanks to Benjamin Grössing.
+
+ *) Feature: the "auto" parameter of the "worker_processes" directive.
+
+ *) Bugfix: "cache file ... has md5 collision" alert.
+
+ *) Bugfix: in the ngx_http_gunzip_filter_module.
+
+ *) Bugfix: in the "ssl_stapling" directive.
+
+
+Changes with nginx 1.3.7 02 Oct 2012
+
+ *) Feature: OCSP stapling support.
+ Thanks to Comodo, DigiCert and GlobalSign for sponsoring this work.
+
+ *) Feature: the "ssl_trusted_certificate" directive.
+
+ *) Feature: resolver now randomly rotates addresses returned from cache.
+ Thanks to Anton Jouline.
+
+ *) Bugfix: OpenSSL 0.9.7 compatibility.
+
+
+Changes with nginx 1.3.6 12 Sep 2012
+
+ *) Feature: the ngx_http_gunzip_filter_module.
+
+ *) Feature: the "memcached_gzip_flag" directive.
+
+ *) Feature: the "always" parameter of the "gzip_static" directive.
+
+ *) Bugfix: in the "limit_req" directive; the bug had appeared in 1.1.14.
+ Thanks to Charles Chen.
+
+ *) Bugfix: nginx could not be built by gcc 4.7 with -O2 optimization if
+ the --with-ipv6 option was used.
+
+
+Changes with nginx 1.3.5 21 Aug 2012
+
+ *) Change: the ngx_http_mp4_module module no longer skips tracks in
+ formats other than H.264 and AAC.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "map" directive was used with variables as values.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "geo" directive was used with the "ranges" parameter but without the
+ "default" parameter; the bug had appeared in 0.8.43.
+ Thanks to Zhen Chen and Weibin Yao.
+
+ *) Bugfix: in the -p command-line parameter handling.
+
+ *) Bugfix: in the mail proxy server.
+
+ *) Bugfix: of minor potential bugs.
+ Thanks to Coverity.
+
+ *) Bugfix: nginx/Windows could not be built with Visual Studio 2005
+ Express.
+ Thanks to HAYASHI Kentaro.
+
+
+Changes with nginx 1.3.4 31 Jul 2012
+
+ *) Change: the "ipv6only" parameter is now turned on by default for
+ listening IPv6 sockets.
+
+ *) Feature: the Clang compiler support.
+
+ *) Bugfix: extra listening sockets might be created.
+ Thanks to Roman Odaisky.
+
+ *) Bugfix: nginx/Windows might hog CPU if a worker process failed to
+ start.
+ Thanks to Ricardo Villalobos Guevara.
+
+ *) Bugfix: the "proxy_pass_header", "fastcgi_pass_header",
+ "scgi_pass_header", "uwsgi_pass_header", "proxy_hide_header",
+ "fastcgi_hide_header", "scgi_hide_header", and "uwsgi_hide_header"
+ directives might be inherited incorrectly.
+
+
+Changes with nginx 1.3.3 10 Jul 2012
+
+ *) Feature: entity tags support and the "etag" directive.
+
+ *) Bugfix: trailing dot in a source value was not ignored if the "map"
+ directive was used with the "hostnames" parameter.
+
+ *) Bugfix: incorrect location might be used to process a request if a
+ URI was changed via a "rewrite" directive before an internal redirect
+ to a named location.
+
+
+Changes with nginx 1.3.2 26 Jun 2012
+
+ *) Change: the "single" parameter of the "keepalive" directive is now
+ ignored.
+
+ *) Change: SSL compression is now disabled when using all versions of
+ OpenSSL, including ones prior to 1.0.0.
+
+ *) Feature: it is now possible to use the "ip_hash" directive to balance
+ IPv6 clients.
+
+ *) Feature: the $status variable can now be used not only in the
+ "log_format" directive.
+
+ *) Bugfix: a segmentation fault might occur in a worker process on
+ shutdown if the "resolver" directive was used.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ ngx_http_mp4_module was used.
+
+ *) Bugfix: in the ngx_http_mp4_module.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if
+ conflicting wildcard server names were used.
+
+ *) Bugfix: nginx might be terminated abnormally on a SIGBUS signal on
+ ARM platform.
+
+ *) Bugfix: an alert "sendmsg() failed (9: Bad file number)" on HP-UX
+ while reconfiguration.
+
+
+Changes with nginx 1.3.1 05 Jun 2012
+
+ *) Security: now nginx/Windows ignores trailing dot in URI path
+ component, and does not allow URIs with ":$" in it.
+ Thanks to Vladimir Kochetkov, Positive Research Center.
+
+ *) Feature: the "proxy_pass", "fastcgi_pass", "scgi_pass", "uwsgi_pass"
+ directives, and the "server" directive inside the "upstream" block,
+ now support IPv6 addresses.
+
+ *) Feature: the "resolver" directive now supports IPv6 addresses and an
+ optional port specification.
+
+ *) Feature: the "least_conn" directive inside the "upstream" block.
+
+ *) Feature: it is now possible to specify a weight for servers while
+ using the "ip_hash" directive.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "image_filter" directive was used; the bug had appeared in 1.3.0.
+
+ *) Bugfix: nginx could not be built with ngx_cpp_test_module; the bug
+ had appeared in 1.1.12.
+
+ *) Bugfix: access to variables from SSI and embedded perl module might
+ not work after reconfiguration.
+ Thanks to Yichun Zhang.
+
+ *) Bugfix: in the ngx_http_xslt_filter_module.
+ Thanks to Kuramoto Eiji.
+
+ *) Bugfix: memory leak if $geoip_org variable was used.
+ Thanks to Denis F. Latypoff.
+
+ *) Bugfix: in the "proxy_cookie_domain" and "proxy_cookie_path"
+ directives.
+
+
+Changes with nginx 1.3.0 15 May 2012
+
+ *) Feature: the "debug_connection" directive now supports IPv6 addresses
+ and the "unix:" parameter.
+
+ *) Feature: the "set_real_ip_from" directive and the "proxy" parameter
+ of the "geo" directive now support IPv6 addresses.
+
+ *) Feature: the "real_ip_recursive", "geoip_proxy", and
+ "geoip_proxy_recursive" directives.
+
+ *) Feature: the "proxy_recursive" parameter of the "geo" directive.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "resolver" directive was used.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "fastcgi_pass", "scgi_pass", or "uwsgi_pass" directives were used and
+ backend returned incorrect response.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "rewrite" directive was used and new request arguments in a
+ replacement used variables.
+
+ *) Bugfix: nginx might hog CPU if the open file resource limit was
+ reached.
+
+ *) Bugfix: nginx might loop infinitely over backends if the
+ "proxy_next_upstream" directive with the "http_404" parameter was
+ used and there were backup servers specified in an upstream block.
+
+ *) Bugfix: adding the "down" parameter of the "server" directive might
+ cause unneeded client redistribution among backend servers if the
+ "ip_hash" directive was used.
+
+ *) Bugfix: socket leak.
+ Thanks to Yichun Zhang.
+
+ *) Bugfix: in the ngx_http_fastcgi_module.
+
+
+Changes with nginx 1.2.0 23 Apr 2012
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "try_files" directive was used; the bug had appeared in 1.1.19.
+
+ *) Bugfix: response might be truncated if there were more than IOV_MAX
+ buffers used.
+
+ *) Bugfix: in the "crop" parameter of the "image_filter" directive.
+ Thanks to Maxim Bublis.
+
+
+Changes with nginx 1.1.19 12 Apr 2012
+
+ *) Security: specially crafted mp4 file might allow to overwrite memory
+ locations in a worker process if the ngx_http_mp4_module was used,
+ potentially resulting in arbitrary code execution (CVE-2012-2089).
+ Thanks to Matthew Daley.
+
+ *) Bugfix: nginx/Windows might be terminated abnormally.
+ Thanks to Vincent Lee.
+
+ *) Bugfix: nginx hogged CPU if all servers in an upstream were marked as
+ "backup".
+
+ *) Bugfix: the "allow" and "deny" directives might be inherited
+ incorrectly if they were used with IPv6 addresses.
+
+ *) Bugfix: the "modern_browser" and "ancient_browser" directives might
+ be inherited incorrectly.
+
+ *) Bugfix: timeouts might be handled incorrectly on Solaris/SPARC.
+
+ *) Bugfix: in the ngx_http_mp4_module.
+
+
+Changes with nginx 1.1.18 28 Mar 2012
+
+ *) Change: keepalive connections are no longer disabled for Safari by
+ default.
+
+ *) Feature: the $connection_requests variable.
+
+ *) Feature: $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd and
+ $tcpinfo_rcv_space variables.
+
+ *) Feature: the "worker_cpu_affinity" directive now works on FreeBSD.
+
+ *) Feature: the "xslt_param" and "xslt_string_param" directives.
+ Thanks to Samuel Behan.
+
+ *) Bugfix: in configure tests.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: in the ngx_http_xslt_filter_module.
+
+ *) Bugfix: nginx could not be built on Debian GNU/Hurd.
+
+
+Changes with nginx 1.1.17 15 Mar 2012
+
+ *) Security: content of previously freed memory might be sent to a
+ client if backend returned specially crafted response.
+ Thanks to Matthew Daley.
+
+ *) Bugfix: in the embedded perl module if used from SSI.
+ Thanks to Matthew Daley.
+
+ *) Bugfix: in the ngx_http_uwsgi_module.
+
+
+Changes with nginx 1.1.16 29 Feb 2012
+
+ *) Change: the simultaneous subrequest limit has been raised to 200.
+
+ *) Feature: the "from" parameter of the "disable_symlinks" directive.
+
+ *) Feature: the "return" and "error_page" directives can now be used to
+ return 307 redirections.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "resolver" directive was used and there was no "error_log" directive
+ specified at global level.
+ Thanks to Roman Arutyunyan.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if the
+ "proxy_http_version 1.1" or "fastcgi_keep_conn on" directives were
+ used.
+
+ *) Bugfix: memory leaks.
+ Thanks to Lanshun Zhou.
+
+ *) Bugfix: in the "disable_symlinks" directive.
+
+ *) Bugfix: on ZFS filesystem disk cache size might be calculated
+ incorrectly; the bug had appeared in 1.0.1.
+
+ *) Bugfix: nginx could not be built by the icc 12.1 compiler.
+
+ *) Bugfix: nginx could not be built by gcc on Solaris; the bug had
+ appeared in 1.1.15.
+
+
+Changes with nginx 1.1.15 15 Feb 2012
+
+ *) Feature: the "disable_symlinks" directive.
+
+ *) Feature: the "proxy_cookie_domain" and "proxy_cookie_path"
+ directives.
+
+ *) Bugfix: nginx might log incorrect error "upstream prematurely closed
+ connection" instead of correct "upstream sent too big header" one.
+ Thanks to Feibo Li.
+
+ *) Bugfix: nginx could not be built with the ngx_http_perl_module if the
+ --with-openssl option was used.
+
+ *) Bugfix: the number of internal redirects to named locations was not
+ limited.
+
+ *) Bugfix: calling $r->flush() multiple times might cause errors in the
+ ngx_http_gzip_filter_module.
+
+ *) Bugfix: temporary files might be not removed if the "proxy_store"
+ directive was used with SSI includes.
+
+ *) Bugfix: in some cases non-cacheable variables (such as the $args
+ variable) returned old empty cached value.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if too
+ many SSI subrequests were issued simultaneously; the bug had appeared
+ in 0.7.25.
+
+
+Changes with nginx 1.1.14 30 Jan 2012
+
+ *) Feature: multiple "limit_req" limits may be used simultaneously.
+
+ *) Bugfix: in error handling while connecting to a backend.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: in AIO error handling on FreeBSD.
+
+ *) Bugfix: in the OpenSSL library initialization.
+
+ *) Bugfix: the "proxy_redirect" directives might be inherited
+ incorrectly.
+
+ *) Bugfix: memory leak during reconfiguration if the "pcre_jit"
+ directive was used.
+
+
+Changes with nginx 1.1.13 16 Jan 2012
+
+ *) Feature: the "TLSv1.1" and "TLSv1.2" parameters of the
+ "ssl_protocols" directive.
+
+ *) Bugfix: the "limit_req" directive parameters were not inherited
+ correctly; the bug had appeared in 1.1.12.
+
+ *) Bugfix: the "proxy_redirect" directive incorrectly processed
+ "Refresh" header if regular expression were used.
+
+ *) Bugfix: the "proxy_cache_use_stale" directive with "error" parameter
+ did not return answer from cache if there were no live upstreams.
+
+ *) Bugfix: the "worker_cpu_affinity" directive might not work.
+
+ *) Bugfix: nginx could not be built on Solaris; the bug had appeared in
+ 1.1.12.
+
+ *) Bugfix: in the ngx_http_mp4_module.
+
+
+Changes with nginx 1.1.12 26 Dec 2011
+
+ *) Change: a "proxy_pass" directive without URI part now uses changed
+ URI after redirection with the "error_page" directive.
+ Thanks to Lanshun Zhou.
+
+ *) Feature: the "proxy/fastcgi/scgi/uwsgi_cache_lock",
+ "proxy/fastcgi/scgi/uwsgi_cache_lock_timeout" directives.
+
+ *) Feature: the "pcre_jit" directive.
+
+ *) Feature: the "if" SSI command supports captures in regular
+ expressions.
+
+ *) Bugfix: the "if" SSI command did not work inside the "block" command.
+
+ *) Bugfix: the "limit_conn_log_level" and "limit_req_log_level"
+ directives might not work.
+
+ *) Bugfix: the "limit_rate" directive did not allow to use full
+ throughput, even if limit value was very high.
+
+ *) Bugfix: the "sendfile_max_chunk" directive did not work, if the
+ "limit_rate" directive was used.
+
+ *) Bugfix: a "proxy_pass" directive without URI part always used
+ original request URI if variables were used.
+
+ *) Bugfix: a "proxy_pass" directive without URI part might use original
+ request after redirection with the "try_files" directive.
+ Thanks to Lanshun Zhou.
+
+ *) Bugfix: in the ngx_http_scgi_module.
+
+ *) Bugfix: in the ngx_http_mp4_module.
+
+ *) Bugfix: nginx could not be built on Solaris; the bug had appeared in
+ 1.1.9.
+
+
+Changes with nginx 1.1.11 12 Dec 2011
+
+ *) Feature: the "so_keepalive" parameter of the "listen" directive.
+ Thanks to Vsevolod Stakhov.
+
+ *) Feature: the "if_not_empty" parameter of the
+ "fastcgi/scgi/uwsgi_param" directives.
+
+ *) Feature: the $https variable.
+
+ *) Feature: the "proxy_redirect" directive supports variables in the
+ first parameter.
+
+ *) Feature: the "proxy_redirect" directive supports regular expressions.
+
+ *) Bugfix: the $sent_http_cache_control variable might contain a wrong
+ value if the "expires" directive was used.
+ Thanks to Yichun Zhang.
+
+ *) Bugfix: the "read_ahead" directive might not work combined with
+ "try_files" and "open_file_cache".
+
+ *) Bugfix: a segmentation fault might occur in a worker process if small
+ time was used in the "inactive" parameter of the "proxy_cache_path"
+ directive.
+
+ *) Bugfix: responses from cache might hang.
+
+
+Changes with nginx 1.1.10 30 Nov 2011
+
+ *) Bugfix: a segmentation fault occurred in a worker process if AIO was
+ used on Linux; the bug had appeared in 1.1.9.
+
+
+Changes with nginx 1.1.9 28 Nov 2011
+
+ *) Change: now double quotes are encoded in an "echo" SSI-command
+ output.
+ Thanks to Zaur Abasmirzoev.
+
+ *) Feature: the "valid" parameter of the "resolver" directive. By
+ default TTL returned by a DNS server is used.
+ Thanks to Kirill A. Korinskiy.
+
+ *) Bugfix: nginx might hang after a worker process abnormal termination.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if SNI
+ was used; the bug had appeared in 1.1.2.
+
+ *) Bugfix: in the "keepalive_disable" directive; the bug had appeared in
+ 1.1.8.
+ Thanks to Alexander Usov.
+
+ *) Bugfix: SIGWINCH signal did not work after first binary upgrade; the
+ bug had appeared in 1.1.1.
+
+ *) Bugfix: backend responses with length not matching "Content-Length"
+ header line are no longer cached.
+
+ *) Bugfix: in the "scgi_param" directive, if complex parameters were
+ used.
+
+ *) Bugfix: in the "epoll" event method.
+ Thanks to Yichun Zhang.
+
+ *) Bugfix: in the ngx_http_flv_module.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: in the ngx_http_mp4_module.
+
+ *) Bugfix: IPv6 addresses are now handled properly in a request line and
+ in a "Host" request header line.
+
+ *) Bugfix: "add_header" and "expires" directives did not work if a
+ request was proxied and response status code was 206.
+
+ *) Bugfix: nginx could not be built on FreeBSD 10.
+
+ *) Bugfix: nginx could not be built on AIX.
+
+
+Changes with nginx 1.1.8 14 Nov 2011
+
+ *) Change: the ngx_http_limit_zone_module was renamed to the
+ ngx_http_limit_conn_module.
+
+ *) Change: the "limit_zone" directive was superseded by the
+ "limit_conn_zone" directive with a new syntax.
+
+ *) Feature: support for multiple "limit_conn" limits on the same level.
+
+ *) Feature: the "image_filter_sharpen" directive.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if
+ resolver got a big DNS response.
+ Thanks to Ben Hawkes.
+
+ *) Bugfix: in cache key calculation if internal MD5 implementation was
+ used; the bug had appeared in 1.0.4.
+
+ *) Bugfix: the "If-Modified-Since", "If-Range", etc. client request
+ header lines might be passed to backend while caching; or not passed
+ without caching if caching was enabled in another part of the
+ configuration.
+
+ *) Bugfix: the module ngx_http_mp4_module sent incorrect
+ "Content-Length" response header line if the "start" argument was
+ used.
+ Thanks to Piotr Sikora.
+
+
+Changes with nginx 1.1.7 31 Oct 2011
+
+ *) Feature: support of several DNS servers in the "resolver" directive.
+ Thanks to Kirill A. Korinskiy.
+
+ *) Bugfix: a segmentation fault occurred on start or during
+ reconfiguration if the "ssl" directive was used at http level and
+ there was no "ssl_certificate" defined.
+
+ *) Bugfix: reduced memory consumption while proxying big files if they
+ were buffered to disk.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if
+ "proxy_http_version 1.1" directive was used.
+
+ *) Bugfix: in the "expires @time" directive.
+
+
+Changes with nginx 1.1.6 17 Oct 2011
+
+ *) Change in internal API: now module context data are cleared while
+ internal redirect to named location.
+ Requested by Yichun Zhang.
+
+ *) Change: if a server in an upstream failed, only one request will be
+ sent to it after fail_timeout; the server will be considered alive if
+ it will successfully respond to the request.
+
+ *) Change: now the 0x7F-0xFF characters are escaped as \xXX in an
+ access_log.
+
+ *) Feature: "proxy/fastcgi/scgi/uwsgi_ignore_headers" directives support
+ the following additional values: X-Accel-Limit-Rate,
+ X-Accel-Buffering, X-Accel-Charset.
+
+ *) Feature: decrease of memory consumption if SSL is used.
+
+ *) Bugfix: some UTF-8 characters were processed incorrectly.
+ Thanks to Alexey Kuts.
+
+ *) Bugfix: the ngx_http_rewrite_module directives specified at "server"
+ level were executed twice if no matching locations were defined.
+
+ *) Bugfix: a socket leak might occurred if "aio sendfile" was used.
+
+ *) Bugfix: connections with fast clients might be closed after
+ send_timeout if file AIO was used.
+
+ *) Bugfix: in the ngx_http_autoindex_module.
+
+ *) Bugfix: the module ngx_http_mp4_module did not support seeking on
+ 32-bit platforms.
+
+
+Changes with nginx 1.1.5 05 Oct 2011
+
+ *) Feature: the "uwsgi_buffering" and "scgi_buffering" directives.
+ Thanks to Peter Smit.
+
+ *) Bugfix: non-cacheable responses might be cached if
+ "proxy_cache_bypass" directive was used.
+ Thanks to John Ferlito.
+
+ *) Bugfix: in HTTP/1.1 support in the ngx_http_proxy_module.
+
+ *) Bugfix: cached responses with an empty body were returned
+ incorrectly; the bug had appeared in 0.8.31.
+
+ *) Bugfix: 201 responses of the ngx_http_dav_module were incorrect; the
+ bug had appeared in 0.8.32.
+
+ *) Bugfix: in the "return" directive.
+
+ *) Bugfix: the "ssl_session_cache builtin" directive caused segmentation
+ fault; the bug had appeared in 1.1.1.
+
+
+Changes with nginx 1.1.4 20 Sep 2011
+
+ *) Feature: the ngx_http_upstream_keepalive module.
+
+ *) Feature: the "proxy_http_version" directive.
+
+ *) Feature: the "fastcgi_keep_conn" directive.
+
+ *) Feature: the "worker_aio_requests" directive.
+
+ *) Bugfix: if nginx was built --with-file-aio it could not be run on
+ Linux kernel which did not support AIO.
+
+ *) Bugfix: in Linux AIO error processing.
+ Thanks to Hagai Avrahami.
+
+ *) Bugfix: reduced memory consumption for long-lived requests.
+
+ *) Bugfix: the module ngx_http_mp4_module did not support 64-bit MP4
+ "co64" atom.
+
+
+Changes with nginx 1.1.3 14 Sep 2011
+
+ *) Feature: the module ngx_http_mp4_module.
+
+ *) Bugfix: in Linux AIO combined with open_file_cache.
+
+ *) Bugfix: open_file_cache did not update file info on retest if file
+ was not atomically changed.
+
+ *) Bugfix: nginx could not be built on MacOSX 10.7.
+
+
+Changes with nginx 1.1.2 05 Sep 2011
+
+ *) Change: now if total size of all ranges is greater than source
+ response size, then nginx disables ranges and returns just the source
+ response.
+
+ *) Feature: the "max_ranges" directive.
+
+ *) Bugfix: the "ssl_verify_client", "ssl_verify_depth", and
+ "ssl_prefer_server_ciphers" directives might work incorrectly if SNI
+ was used.
+
+ *) Bugfix: in the "proxy/fastcgi/scgi/uwsgi_ignore_client_abort"
+ directives.
+
+
+Changes with nginx 1.1.1 22 Aug 2011
+
+ *) Change: now cache loader processes either as many files as specified
+ by "loader_files" parameter or works no longer than time specified by
+ the "loader_threshold" parameter during each iteration.
+
+ *) Change: now SIGWINCH signal works only in daemon mode.
+
+ *) Feature: now shared zones and caches use POSIX semaphores on Solaris.
+ Thanks to Den Ivanov.
+
+ *) Feature: accept filters are now supported on NetBSD.
+
+ *) Bugfix: nginx could not be built on Linux 3.0.
+
+ *) Bugfix: nginx did not use gzipping in some cases; the bug had
+ appeared in 1.1.0.
+
+ *) Bugfix: request body might be processed incorrectly if client used
+ pipelining.
+
+ *) Bugfix: in the "request_body_in_single_buf" directive.
+
+ *) Bugfix: in "proxy_set_body" and "proxy_pass_request_body" directives
+ if SSL connection to backend was used.
+
+ *) Bugfix: nginx hogged CPU if all servers in an upstream were marked as
+ "down".
+
+ *) Bugfix: a segmentation fault might occur during reconfiguration if
+ ssl_session_cache was defined but not used in previous configuration.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if many
+ backup servers were used in an upstream.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if
+ "fastcgi/scgi/uwsgi_param" directives were used with values starting
+ with "HTTP_"; the bug had appeared in 0.8.40.
+
+
+Changes with nginx 1.1.0 01 Aug 2011
+
+ *) Feature: cache loader run time decrease.
+
+ *) Feature: "loader_files", "loader_sleep", and "loader_threshold"
+ options of the "proxy/fastcgi/scgi/uwsgi_cache_path" directives.
+
+ *) Feature: loading time decrease of configuration with large number of
+ HTTPS sites.
+
+ *) Feature: now nginx supports ECDHE key exchange ciphers.
+ Thanks to Adrian Kotelba.
+
+ *) Feature: the "lingering_close" directive.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: in closing connection for pipelined requests.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: nginx did not disable gzipping if client sent "gzip;q=0" in
+ "Accept-Encoding" request header line.
+
+ *) Bugfix: in timeout in unbuffered proxied mode.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: memory leaks when a "proxy_pass" directive contains variables
+ and proxies to an HTTPS backend.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: in parameter validation of a "proxy_pass" directive with
+ variables.
+ Thanks to Lanshun Zhou.
+
+ *) Bugfix: SSL did not work on QNX.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: SSL modules could not be built by gcc 4.6 without
+ --with-debug option.
+
+
+Changes with nginx 1.0.5 19 Jul 2011
+
+ *) Change: now default SSL ciphers are "HIGH:!aNULL:!MD5".
+ Thanks to Rob Stradling.
+
+ *) Feature: the "referer_hash_max_size" and "referer_hash_bucket_size"
+ directives.
+ Thanks to Witold Filipczyk.
+
+ *) Feature: $uid_reset variable.
+
+ *) Bugfix: a segmentation fault might occur in a worker process, if a
+ caching was used.
+ Thanks to Lanshun Zhou.
+
+ *) Bugfix: worker processes may got caught in an endless loop during
+ reconfiguration, if a caching was used; the bug had appeared in
+ 0.8.48.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: "stalled cache updating" alert.
+ Thanks to Maxim Dounin.
+
+
+Changes with nginx 1.0.4 01 Jun 2011
+
+ *) Change: now regular expressions case sensitivity in the "map"
+ directive is given by prefixes "~" or "~*".
+
+ *) Feature: now shared zones and caches use POSIX semaphores on Linux.
+ Thanks to Denis F. Latypoff.
+
+ *) Bugfix: "stalled cache updating" alert.
+
+ *) Bugfix: nginx could not be built --without-http_auth_basic_module;
+ the bug had appeared in 1.0.3.
+
+
+Changes with nginx 1.0.3 25 May 2011
+
+ *) Feature: the "auth_basic_user_file" directive supports "$apr1",
+ "{PLAIN}", and "{SSHA}" password encryption methods.
+ Thanks to Maxim Dounin.
+
+ *) Feature: the "geoip_org" directive and $geoip_org variable.
+ Thanks to Alexander Uskov, Arnaud Granal, and Denis F. Latypoff.
+
+ *) Feature: ngx_http_geo_module and ngx_http_geoip_module support IPv4
+ addresses mapped to IPv6 addresses.
+
+ *) Bugfix: a segmentation fault occurred in a worker process during
+ testing IPv4 address mapped to IPv6 address, if access or deny rules
+ were defined only for IPv6; the bug had appeared in 0.8.22.
+
+ *) Bugfix: a cached response may be broken if "proxy/fastcgi/scgi/
+ uwsgi_cache_bypass" and "proxy/fastcgi/scgi/uwsgi_no_cache" directive
+ values were different; the bug had appeared in 0.8.46.
+
+
+Changes with nginx 1.0.2 10 May 2011
+
+ *) Feature: now shared zones and caches use POSIX semaphores.
+
+ *) Bugfix: in the "rotate" parameter of the "image_filter" directive.
+ Thanks to Adam Bocim.
+
+ *) Bugfix: nginx could not be built on Solaris; the bug had appeared in
+ 1.0.1.
+
+
+Changes with nginx 1.0.1 03 May 2011
+
+ *) Change: now the "split_clients" directive uses MurmurHash2 algorithm
+ because of better distribution.
+ Thanks to Oleg Mamontov.
+
+ *) Change: now long strings starting with zero are not considered as
+ false values.
+ Thanks to Maxim Dounin.
+
+ *) Change: now nginx uses a default listen backlog value 511 on Linux.
+
+ *) Feature: the $upstream_... variables may be used in the SSI and perl
+ modules.
+
+ *) Bugfix: now nginx limits better disk cache size.
+ Thanks to Oleg Mamontov.
+
+ *) Bugfix: a segmentation fault might occur while parsing incorrect IPv4
+ address; the bug had appeared in 0.9.3.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: nginx could not be built by gcc 4.6 without --with-debug
+ option.
+
+ *) Bugfix: nginx could not be built on Solaris 9 and earlier; the bug
+ had appeared in 0.9.3.
+ Thanks to Dagobert Michelsen.
+
+ *) Bugfix: $request_time variable had invalid values if subrequests were
+ used; the bug had appeared in 0.8.47.
+ Thanks to Igor A. Valcov.
+
+
+Changes with nginx 1.0.0 12 Apr 2011
+
+ *) Bugfix: a cache manager might hog CPU after reload.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: an "image_filter crop" directive worked incorrectly coupled
+ with an "image_filter rotate 180" directive.
+
+ *) Bugfix: a "satisfy any" directive disabled custom 401 error page.
+
+
+Changes with nginx 0.9.7 04 Apr 2011
+
+ *) Feature: now keepalive connections may be closed premature, if there
+ are no free worker connections.
+ Thanks to Maxim Dounin.
+
+ *) Feature: the "rotate" parameter of the "image_filter" directive.
+ Thanks to Adam Bocim.
+
+ *) Bugfix: a case when a backend in "fastcgi_pass", "scgi_pass", or
+ "uwsgi_pass" directives is given by expression and refers to a
+ defined upstream.
+
+
+Changes with nginx 0.9.6 21 Mar 2011
+
+ *) Feature: the "map" directive supports regular expressions as value of
+ the first parameter.
+
+ *) Feature: $time_iso8601 access_log variable.
+ Thanks to Michael Lustfield.
+
+
+Changes with nginx 0.9.5 21 Feb 2011
+
+ *) Change: now nginx uses a default listen backlog value -1 on Linux.
+ Thanks to Andrei Nigmatulin.
+
+ *) Feature: the "utf8" parameter of "geoip_country" and "geoip_city"
+ directives.
+ Thanks to Denis F. Latypoff.
+
+ *) Bugfix: in a default "proxy_redirect" directive if "proxy_pass"
+ directive has no URI part.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: an "error_page" directive did not work with nonstandard error
+ codes; the bug had appeared in 0.8.53.
+ Thanks to Maxim Dounin.
+
+
+Changes with nginx 0.9.4 21 Jan 2011
+
+ *) Feature: the "server_name" directive supports the $hostname variable.
+
+ *) Feature: 494 code for "Request Header Too Large" error.
+
+
+Changes with nginx 0.9.3 13 Dec 2010
+
+ *) Bugfix: if there was a single server for given IPv6 address:port
+ pair, then captures in regular expressions in a "server_name"
+ directive did not work.
+
+ *) Bugfix: nginx could not be built on Solaris; the bug had appeared in
+ 0.9.0.
+
+
+Changes with nginx 0.9.2 06 Dec 2010
+
+ *) Feature: the "If-Unmodified-Since" client request header line
+ support.
+
+ *) Workaround: fallback to accept() syscall if accept4() was not
+ implemented; the issue had appeared in 0.9.0.
+
+ *) Bugfix: nginx could not be built on Cygwin; the bug had appeared in
+ 0.9.0.
+
+ *) Bugfix: for OpenSSL vulnerability CVE-2010-4180.
+ Thanks to Maxim Dounin.
+
+
+Changes with nginx 0.9.1 30 Nov 2010
+
+ *) Bugfix: "return CODE message" directives did not work; the bug had
+ appeared in 0.9.0.
+
+
+Changes with nginx 0.9.0 29 Nov 2010
+
+ *) Feature: the "keepalive_disable" directive.
+
+ *) Feature: the "map" directive supports variables as value of a defined
+ variable.
+
+ *) Feature: the "map" directive supports empty strings as value of the
+ first parameter.
+
+ *) Feature: the "map" directive supports expressions as the first
+ parameter.
+
+ *) Feature: nginx(8) manual page.
+ Thanks to Sergey Osokin.
+
+ *) Feature: Linux accept4() support.
+ Thanks to Simon Liu.
+
+ *) Workaround: elimination of Linux linker warning about "sys_errlist"
+ and "sys_nerr"; the warning had appeared in 0.8.35.
+
+ *) Bugfix: a segmentation fault might occur in a worker process, if the
+ "auth_basic" directive was used.
+ Thanks to Michail Laletin.
+
+ *) Bugfix: compatibility with ngx_http_eval_module; the bug had appeared
+ in 0.8.42.
+
+
+Changes with nginx 0.8.53 18 Oct 2010
+
+ *) Feature: now the "error_page" directive allows to change a status
+ code in a redirect.
+
+ *) Feature: the "gzip_disable" directive supports special "degradation"
+ mask.
+
+ *) Bugfix: a socket leak might occurred if file AIO was used.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: if the first server had no "listen" directive and there was
+ no explicit default server, then a next server with a "listen"
+ directive became the default server; the bug had appeared in 0.8.21.
+
+
+Changes with nginx 0.8.52 28 Sep 2010
+
+ *) Bugfix: nginx used SSL mode for a listen socket if any listen option
+ was set; the bug had appeared in 0.8.51.
+
+
+Changes with nginx 0.8.51 27 Sep 2010
+
+ *) Change: the "secure_link_expires" directive has been canceled.
+
+ *) Change: a logging level of resolver errors has been lowered from
+ "alert" to "error".
+
+ *) Feature: now a listen socket "ssl" parameter may be set several
+ times.
+
+
+Changes with nginx 0.8.50 02 Sep 2010
+
+ *) Feature: the "secure_link", "secure_link_md5", and
+ "secure_link_expires" directives of the ngx_http_secure_link_module.
+
+ *) Feature: the -q switch.
+ Thanks to Gena Makhomed.
+
+ *) Bugfix: worker processes may got caught in an endless loop during
+ reconfiguration, if a caching was used; the bug had appeared in
+ 0.8.48.
+
+ *) Bugfix: in the "gzip_disable" directive.
+ Thanks to Derrick Petzold.
+
+ *) Bugfix: nginx/Windows could not send stop, quit, reopen, and reload
+ signals to a process run in other session.
+
+
+Changes with nginx 0.8.49 09 Aug 2010
+
+ *) Feature: the "image_filter_jpeg_quality" directive supports
+ variables.
+
+ *) Bugfix: a segmentation fault might occur in a worker process, if the
+ $geoip_region_name variables was used; the bug had appeared in
+ 0.8.48.
+
+ *) Bugfix: errors intercepted by error_page were cached only for next
+ request; the bug had appeared in 0.8.48.
+
+
+Changes with nginx 0.8.48 03 Aug 2010
+
+ *) Change: now the "server_name" directive default value is an empty
+ name "".
+ Thanks to Gena Makhomed.
+
+ *) Change: now the "server_name_in_redirect" directive default value is
+ "off".
+
+ *) Feature: the $geoip_dma_code, $geoip_area_code, and
+ $geoip_region_name variables.
+ Thanks to Christine McGonagle.
+
+ *) Bugfix: the "proxy_pass", "fastcgi_pass", "uwsgi_pass", and
+ "scgi_pass" directives were not inherited inside "limit_except"
+ blocks.
+
+ *) Bugfix: the "proxy_cache_min_uses", "fastcgi_cache_min_uses"
+ "uwsgi_cache_min_uses", and "scgi_cache_min_uses" directives did not
+ work; the bug had appeared in 0.8.46.
+
+ *) Bugfix: the "fastcgi_split_path_info" directive used incorrectly
+ captures, if only parts of an URI were captured.
+ Thanks to Yuriy Taraday and Frank Enderle.
+
+ *) Bugfix: the "rewrite" directive did not escape a ";" character during
+ copying from URI to query string.
+ Thanks to Daisuke Murase.
+
+ *) Bugfix: the ngx_http_image_filter_module closed a connection, if an
+ image was larger than "image_filter_buffer" size.
+
+
+Changes with nginx 0.8.47 28 Jul 2010
+
+ *) Bugfix: $request_time variable had invalid values for subrequests.
+
+ *) Bugfix: errors intercepted by error_page could not be cached.
+
+ *) Bugfix: a cache manager process may got caught in an endless loop, if
+ max_size parameter was used; the bug had appeared in 0.8.46.
+
+
+Changes with nginx 0.8.46 19 Jul 2010
+
+ *) Change: now the "proxy_no_cache", "fastcgi_no_cache",
+ "uwsgi_no_cache", and "scgi_no_cache" directives affect on a cached
+ response saving only.
+
+ *) Feature: the "proxy_cache_bypass", "fastcgi_cache_bypass",
+ "uwsgi_cache_bypass", and "scgi_cache_bypass" directives.
+
+ *) Bugfix: nginx did not free memory in cache keys zones if there was an
+ error during working with backend: the memory was freed only after
+ inactivity time or on memory low condition.
+
+
+Changes with nginx 0.8.45 13 Jul 2010
+
+ *) Feature: ngx_http_xslt_filter improvements.
+ Thanks to Laurence Rowe.
+
+ *) Bugfix: SSI response might be truncated after include with
+ wait="yes"; the bug had appeared in 0.7.25.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: the "listen" directive did not support the "setfib=0"
+ parameter.
+
+
+Changes with nginx 0.8.44 05 Jul 2010
+
+ *) Change: now nginx does not cache by default backend responses, if
+ they have a "Set-Cookie" header line.
+
+ *) Feature: the "listen" directive supports the "setfib" parameter.
+ Thanks to Andrew Filonov.
+
+ *) Bugfix: the "sub_filter" directive might change character case on
+ partial match.
+
+ *) Bugfix: compatibility with HP/UX.
+
+ *) Bugfix: compatibility with AIX xlC_r compiler.
+
+ *) Bugfix: nginx treated large SSLv2 packets as plain requests.
+ Thanks to Miroslaw Jaworski.
+
+
+Changes with nginx 0.8.43 30 Jun 2010
+
+ *) Feature: large geo ranges base loading speed-up.
+
+ *) Bugfix: an error_page redirection to "location /zero {return 204;}"
+ without changing status code kept the error body; the bug had
+ appeared in 0.8.42.
+
+ *) Bugfix: nginx might close IPv6 listen socket during reconfiguration.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: the $uid_set variable may be used at any request processing
+ stage.
+
+
+Changes with nginx 0.8.42 21 Jun 2010
+
+ *) Change: now nginx tests locations given by regular expressions, if
+ request was matched exactly by a location given by a prefix string.
+ The previous behavior has been introduced in 0.7.1.
+
+ *) Feature: the ngx_http_scgi_module.
+ Thanks to Manlio Perillo.
+
+ *) Feature: a text answer may be added to a "return" directive.
+
+
+Changes with nginx 0.8.41 15 Jun 2010
+
+ *) Security: nginx/Windows worker might be terminated abnormally if a
+ requested file name has invalid UTF-8 encoding.
+
+ *) Change: now nginx allows to use spaces in a request line.
+
+ *) Bugfix: the "proxy_redirect" directive changed incorrectly a backend
+ "Refresh" response header line.
+ Thanks to Andrey Andreew and Max Sogin.
+
+ *) Bugfix: nginx did not support path without host name in "Destination"
+ request header line.
+
+
+Changes with nginx 0.8.40 07 Jun 2010
+
+ *) Security: now nginx/Windows ignores default file stream name.
+ Thanks to Jose Antonio Vazquez Gonzalez.
+
+ *) Feature: the ngx_http_uwsgi_module.
+ Thanks to Roberto De Ioris.
+
+ *) Feature: a "fastcgi_param" directive with value starting with "HTTP_"
+ overrides a client request header line.
+
+ *) Bugfix: the "If-Modified-Since", "If-Range", etc. client request
+ header lines were passed to FastCGI-server while caching.
+
+ *) Bugfix: listen unix domain socket could not be changed during
+ reconfiguration.
+ Thanks to Maxim Dounin.
+
+
+Changes with nginx 0.8.39 31 May 2010
+
+ *) Bugfix: an inherited "alias" directive worked incorrectly in
+ inclusive location.
+
+ *) Bugfix: in "alias" with variables and "try_files" directives
+ combination.
+
+ *) Bugfix: listen unix domain and IPv6 sockets did not inherit while
+ online upgrade.
+ Thanks to Maxim Dounin.
+
+
+Changes with nginx 0.8.38 24 May 2010
+
+ *) Feature: the "proxy_no_cache" and "fastcgi_no_cache" directives.
+
+ *) Feature: now the "rewrite" directive does a redirect automatically if
+ the $scheme variable is used.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: now "limit_req" delay directive conforms to the described
+ algorithm.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: the $uid_got variable might not be used in the SSI and perl
+ modules.
+
+
+Changes with nginx 0.8.37 17 May 2010
+
+ *) Feature: the ngx_http_split_clients_module.
+
+ *) Feature: the "map" directive supports keys more than 255 characters.
+
+ *) Bugfix: nginx ignored the "private" and "no-store" values in the
+ "Cache-Control" backend response header line.
+
+ *) Bugfix: a "stub" parameter of an "include" SSI directive was not
+ used, if empty response has 200 status code.
+
+ *) Bugfix: if a proxied or FastCGI request was internally redirected to
+ another proxied or FastCGI location, then a segmentation fault might
+ occur in a worker process; the bug had appeared in 0.8.33.
+ Thanks to Yichun Zhang.
+
+ *) Bugfix: IMAP connections may hang until they timed out while talking
+ to Zimbra server.
+ Thanks to Alan Batie.
+
+
+Changes with nginx 0.8.36 22 Apr 2010
+
+ *) Bugfix: the ngx_http_dav_module handled incorrectly the DELETE, COPY,
+ and MOVE methods for symlinks.
+
+ *) Bugfix: values of the $query_string, $arg_..., etc. variables cached
+ in main request were used by the SSI module in subrequests.
+
+ *) Bugfix: a variable value was repeatedly encoded after each an "echo"
+ SSI-command output; the bug had appeared in 0.6.14.
+
+ *) Bugfix: a worker process hung if a FIFO file was requested.
+ Thanks to Vicente Aguilar and Maxim Dounin.
+
+ *) Bugfix: OpenSSL-1.0.0 compatibility on 64-bit Linux.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: nginx could not be built --without-http-cache; the bug had
+ appeared in 0.8.35.
+
+
+Changes with nginx 0.8.35 01 Apr 2010
+
+ *) Change: now the charset filter runs before the SSI filter.
+
+ *) Feature: the "chunked_transfer_encoding" directive.
+
+ *) Bugfix: an "&" character was not escaped when it was copied in
+ arguments part in a rewrite rule.
+
+ *) Bugfix: nginx might be terminated abnormally while a signal
+ processing or if the directive "timer_resolution" was used on
+ platforms which do not support kqueue or eventport notification
+ methods.
+ Thanks to George Xie and Maxim Dounin.
+
+ *) Bugfix: if temporary files and permanent storage area resided at
+ different file systems, then permanent file modification times were
+ incorrect.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: ngx_http_memcached_module might issue the error message
+ "memcached sent invalid trailer".
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: nginx could not built zlib-1.2.4 library using the library
+ sources.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: a segmentation fault occurred in a worker process, if there
+ was large stderr output before FastCGI response; the bug had appeared
+ in 0.8.34.
+ Thanks to Maxim Dounin.
+
+
+Changes with nginx 0.8.34 03 Mar 2010
+
+ *) Bugfix: nginx did not support all ciphers and digests used in client
+ certificates.
+ Thanks to Innocenty Enikeew.
+
+ *) Bugfix: nginx cached incorrectly FastCGI responses if there was large
+ stderr output before response.
+
+ *) Bugfix: nginx did not support HTTPS referrers.
+
+ *) Bugfix: nginx/Windows might not find file if path in configuration
+ was given in other character case; the bug had appeared in 0.8.33.
+
+ *) Bugfix: the $date_local variable has an incorrect value, if the "%s"
+ format was used.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: if ssl_session_cache was not set or was set to "none", then
+ during client certificate verify the error "session id context
+ uninitialized" might occur; the bug had appeared in 0.7.1.
+
+ *) Bugfix: a geo range returned default value if the range included two
+ or more /16 networks and did not begin at /16 network boundary.
+
+ *) Bugfix: a block used in a "stub" parameter of an "include" SSI
+ directive was output with "text/plain" MIME type.
+
+ *) Bugfix: $r->sleep() did not work; the bug had appeared in 0.8.11.
+
+
+Changes with nginx 0.8.33 01 Feb 2010
+
+ *) Security: now nginx/Windows ignores trailing spaces in URI.
+ Thanks to Dan Crowley, Core Security Technologies.
+
+ *) Security: now nginx/Windows ignores short files names.
+ Thanks to Dan Crowley, Core Security Technologies.
+
+ *) Change: now keepalive connections after POST requests are not
+ disabled for MSIE 7.0+.
+ Thanks to Adam Lounds.
+
+ *) Workaround: now keepalive connections are disabled for Safari.
+ Thanks to Joshua Sierles.
+
+ *) Bugfix: if a proxied or FastCGI request was internally redirected to
+ another proxied or FastCGI location, then $upstream_response_time
+ variable may have abnormally large value; the bug had appeared in
+ 0.8.7.
+
+ *) Bugfix: a segmentation fault might occur in a worker process, while
+ discarding a request body; the bug had appeared in 0.8.11.
+
+
+Changes with nginx 0.8.32 11 Jan 2010
+
+ *) Bugfix: UTF-8 encoding usage in the ngx_http_autoindex_module.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: regular expression named captures worked for two names only.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: now the "localhost" name is used in the "Host" request header
+ line, if an unix domain socket is defined in the "auth_http"
+ directive.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: nginx did not support chunked transfer encoding for 201
+ responses.
+ Thanks to Julian Reich.
+
+ *) Bugfix: if the "expires modified" set date in the past, then a
+ negative number was set in the "Cache-Control" response header line.
+ Thanks to Alex Kapranoff.
+
+
+Changes with nginx 0.8.31 23 Dec 2009
+
+ *) Feature: now the "error_page" directive may redirect the 301 and 302
+ responses.
+
+ *) Feature: the $geoip_city_continent_code, $geoip_latitude, and
+ $geoip_longitude variables.
+ Thanks to Arvind Sundararajan.
+
+ *) Feature: now the ngx_http_image_filter_module deletes always EXIF and
+ other application specific data if the data consume more than 5% of a
+ JPEG file.
+
+ *) Bugfix: nginx closed a connection if a cached response had an empty
+ body.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: nginx might not be built by gcc 4.x if the -O2 or higher
+ optimization option was used.
+ Thanks to Maxim Dounin and Denis F. Latypoff.
+
+ *) Bugfix: regular expressions in location were always tested in
+ case-sensitive mode; the bug had appeared in 0.8.25.
+
+ *) Bugfix: nginx cached a 304 response if there was the "If-None-Match"
+ header line in a proxied request.
+ Thanks to Tim Dettrick and David Kostal.
+
+ *) Bugfix: nginx/Windows tried to delete a temporary file twice if the
+ file should replace an already existent file.
+
+
+Changes with nginx 0.8.30 15 Dec 2009
+
+ *) Change: now the default buffer size of the
+ "large_client_header_buffers" directive is 8K.
+ Thanks to Andrew Cholakian.
+
+ *) Feature: the conf/fastcgi.conf for simple FastCGI configurations.
+
+ *) Bugfix: nginx/Windows tried to rename a temporary file twice if the
+ file should replace an already existent file.
+
+ *) Bugfix: of "double free or corruption" error issued if host could not
+ be resolved; the bug had appeared in 0.8.22.
+ Thanks to Konstantin Svist.
+
+ *) Bugfix: in libatomic usage on some platforms.
+ Thanks to W-Mark Kubacki.
+
+
+Changes with nginx 0.8.29 30 Nov 2009
+
+ *) Change: now the "009" status code is written to an access log for
+ proxied HTTP/0.9 responses.
+
+ *) Feature: the "addition_types", "charset_types", "gzip_types",
+ "ssi_types", "sub_filter_types", and "xslt_types" directives support
+ an "*" parameter.
+
+ *) Feature: GCC 4.1+ built-in atomic operations usage.
+ Thanks to W-Mark Kubacki.
+
+ *) Feature: the --with-libatomic[=DIR] option in the configure.
+ Thanks to W-Mark Kubacki.
+
+ *) Bugfix: listen unix domain socket had limited access rights.
+
+ *) Bugfix: cached HTTP/0.9 responses were handled incorrectly.
+
+ *) Bugfix: regular expression named captures given by "?P<...>" did not
+ work in a "server_name" directive.
+ Thanks to Maxim Dounin.
+
+
+Changes with nginx 0.8.28 23 Nov 2009
+
+ *) Bugfix: nginx could not be built with the --without-pcre parameter;
+ the bug had appeared in 0.8.25.
+
+
+Changes with nginx 0.8.27 17 Nov 2009
+
+ *) Bugfix: regular expressions did not work in nginx/Windows; the bug
+ had appeared in 0.8.25.
+
+
+Changes with nginx 0.8.26 16 Nov 2009
+
+ *) Bugfix: in captures usage in "rewrite" directive; the bug had
+ appeared in 0.8.25.
+
+ *) Bugfix: nginx could not be built without the --with-debug option; the
+ bug had appeared in 0.8.25.
+
+
+Changes with nginx 0.8.25 16 Nov 2009
+
+ *) Change: now no message is written in an error log if a variable is
+ not found by $r->variable() method.
+
+ *) Feature: the ngx_http_degradation_module.
+
+ *) Feature: regular expression named captures.
+
+ *) Feature: now URI part is not required a "proxy_pass" directive if
+ variables are used.
+
+ *) Feature: now the "msie_padding" directive works for Chrome too.
+
+ *) Bugfix: a segmentation fault occurred in a worker process on low
+ memory condition; the bug had appeared in 0.8.18.
+
+ *) Bugfix: nginx sent gzipped responses to clients those do not support
+ gzip, if "gzip_static on" and "gzip_vary off"; the bug had appeared
+ in 0.8.16.
+
+
+Changes with nginx 0.8.24 11 Nov 2009
+
+ *) Bugfix: nginx always added "Content-Encoding: gzip" response header
+ line in 304 responses sent by ngx_http_gzip_static_module.
+
+ *) Bugfix: nginx could not be built without the --with-debug option; the
+ bug had appeared in 0.8.23.
+
+ *) Bugfix: the "unix:" parameter of the "set_real_ip_from" directive
+ inherited incorrectly from previous level.
+
+ *) Bugfix: in resolving empty name.
+
+
+Changes with nginx 0.8.23 11 Nov 2009
+
+ *) Security: now SSL/TLS renegotiation is disabled.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: listen unix domain socket did not inherit while online
+ upgrade.
+
+ *) Bugfix: the "unix:" parameter of the "set_real_ip_from" directive did
+ not without yet another directive with any IP address.
+
+ *) Bugfix: segmentation fault and infinite looping in resolver.
+
+ *) Bugfix: in resolver.
+ Thanks to Artem Bokhan.
+
+
+Changes with nginx 0.8.22 03 Nov 2009
+
+ *) Feature: the "proxy_bind", "fastcgi_bind", and "memcached_bind"
+ directives.
+
+ *) Feature: the "access" and the "deny" directives support IPv6.
+
+ *) Feature: the "set_real_ip_from" directive supports IPv6 addresses in
+ request headers.
+
+ *) Feature: the "unix:" parameter of the "set_real_ip_from" directive.
+
+ *) Bugfix: nginx did not delete unix domain socket after configuration
+ testing.
+
+ *) Bugfix: nginx deleted unix domain socket while online upgrade.
+
+ *) Bugfix: the "!-x" operator did not work.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: a segmentation fault might occur in a worker process, if
+ limit_rate was used in HTTPS server.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: a segmentation fault might occur in a worker process while
+ $limit_rate logging.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: a segmentation fault might occur in a worker process, if
+ there was no "listen" directive in "server" block; the bug had
+ appeared in 0.8.21.
+
+
+Changes with nginx 0.8.21 26 Oct 2009
+
+ *) Feature: now the "-V" switch shows TLS SNI support.
+
+ *) Feature: the "listen" directive of the HTTP module supports unix
+ domain sockets.
+ Thanks to Hongli Lai.
+
+ *) Feature: the "default_server" parameter of the "listen" directive.
+
+ *) Feature: now a "default" parameter is not required to set listen
+ socket options.
+
+ *) Bugfix: nginx did not support dates in 2038 year on 32-bit platforms;
+
+ *) Bugfix: socket leak; the bug had appeared in 0.8.11.
+
+
+Changes with nginx 0.8.20 14 Oct 2009
+
+ *) Change: now default SSL ciphers are "HIGH:!ADH:!MD5".
+
+ *) Bugfix: the ngx_http_autoindex_module did not show the trailing slash
+ in links to a directory; the bug had appeared in 0.7.15.
+
+ *) Bugfix: nginx did not close a log file set by the --error-log-path
+ configuration option; the bug had appeared in 0.7.53.
+
+ *) Bugfix: nginx did not treat a comma as separator in the
+ "Cache-Control" backend response header line.
+
+ *) Bugfix: nginx/Windows might not create temporary file, a cache file,
+ or "proxy/fastcgi_store"d file if a worker had no enough access
+ rights for top level directories.
+
+ *) Bugfix: the "Set-Cookie" and "P3P" FastCGI response header lines were
+ not hidden while caching if no "fastcgi_hide_header" directives were
+ used with any parameters.
+
+ *) Bugfix: nginx counted incorrectly disk cache size.
+
+
+Changes with nginx 0.8.19 06 Oct 2009
+
+ *) Change: now SSLv2 protocol is disabled by default.
+
+ *) Change: now default SSL ciphers are "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM".
+
+ *) Bugfix: a "limit_req" directive did not work; the bug had appeared in
+ 0.8.18.
+
+
+Changes with nginx 0.8.18 06 Oct 2009
+
+ *) Feature: the "read_ahead" directive.
+
+ *) Feature: now several "perl_modules" directives may be used.
+
+ *) Feature: the "limit_req_log_level" and "limit_conn_log_level"
+ directives.
+
+ *) Bugfix: now "limit_req" directive conforms to the leaky bucket
+ algorithm.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: nginx did not work on Linux/sparc.
+ Thanks to Marcus Ramberg.
+
+ *) Bugfix: nginx sent '\0' in a "Location" response header line on MKCOL
+ request.
+ Thanks to Xie Zhenye.
+
+ *) Bugfix: zero status code was logged instead of 499 status code; the
+ bug had appeared in 0.8.11.
+
+ *) Bugfix: socket leak; the bug had appeared in 0.8.11.
+
+
+Changes with nginx 0.8.17 28 Sep 2009
+
+ *) Security: now "/../" are disabled in "Destination" request header
+ line.
+
+ *) Change: now $host variable value is always low case.
+
+ *) Feature: the $ssl_session_id variable.
+
+ *) Bugfix: socket leak; the bug had appeared in 0.8.11.
+
+
+Changes with nginx 0.8.16 22 Sep 2009
+
+ *) Feature: the "image_filter_transparency" directive.
+
+ *) Bugfix: "addition_types" directive was incorrectly named
+ "addtion_types".
+
+ *) Bugfix: resolver cache poisoning.
+ Thanks to Matthew Dempsky.
+
+ *) Bugfix: memory leak in resolver.
+ Thanks to Matthew Dempsky.
+
+ *) Bugfix: invalid request line in $request variable was written in
+ access_log only if error_log was set to "info" or "debug" level.
+
+ *) Bugfix: in PNG alpha-channel support in the
+ ngx_http_image_filter_module.
+
+ *) Bugfix: nginx always added "Vary: Accept-Encoding" response header
+ line, if both "gzip_static" and "gzip_vary" were on.
+
+ *) Bugfix: in UTF-8 encoding support by "try_files" directive in
+ nginx/Windows.
+
+ *) Bugfix: in "post_action" directive usage; the bug had appeared in
+ 0.8.11.
+ Thanks to Igor Artemiev.
+
+
+Changes with nginx 0.8.15 14 Sep 2009
+
+ *) Security: a segmentation fault might occur in worker process while
+ specially crafted request handling.
+ Thanks to Chris Ries.
+
+ *) Bugfix: if names .domain.tld, .sub.domain.tld, and .domain-some.tld
+ were defined, then the name .sub.domain.tld was matched by
+ .domain.tld.
+
+ *) Bugfix: in transparency support in the ngx_http_image_filter_module.
+
+ *) Bugfix: in file AIO.
+
+ *) Bugfix: in X-Accel-Redirect usage; the bug had appeared in 0.8.11.
+
+ *) Bugfix: in embedded perl module; the bug had appeared in 0.8.11.
+
+
+Changes with nginx 0.8.14 07 Sep 2009
+
+ *) Bugfix: an expired cached response might stick in the "UPDATING"
+ state.
+
+ *) Bugfix: a segmentation fault might occur in worker process, if
+ error_log was set to info or debug level.
+ Thanks to Sergey Bochenkov.
+
+ *) Bugfix: in embedded perl module; the bug had appeared in 0.8.11.
+
+ *) Bugfix: an "error_page" directive did not redirect a 413 error; the
+ bug had appeared in 0.6.10.
+
+
+Changes with nginx 0.8.13 31 Aug 2009
+
+ *) Bugfix: in the "aio sendfile" directive; the bug had appeared in
+ 0.8.12.
+
+ *) Bugfix: nginx could not be built without the --with-file-aio option
+ on FreeBSD; the bug had appeared in 0.8.12.
+
+
+Changes with nginx 0.8.12 31 Aug 2009
+
+ *) Feature: the "sendfile" parameter in the "aio" directive on FreeBSD.
+
+ *) Bugfix: in try_files; the bug had appeared in 0.8.11.
+
+ *) Bugfix: in memcached; the bug had appeared in 0.8.11.
+
+
+Changes with nginx 0.8.11 28 Aug 2009
+
+ *) Change: now directive "gzip_disable msie6" does not disable gzipping
+ for MSIE 6.0 SV1.
+
+ *) Feature: file AIO support on FreeBSD and Linux.
+
+ *) Feature: the "directio_alignment" directive.
+
+
+Changes with nginx 0.8.10 24 Aug 2009
+
+ *) Bugfix: memory leaks if GeoIP City database was used.
+
+ *) Bugfix: in copying temporary files to permanent storage area; the bug
+ had appeared in 0.8.9.
+
+
+Changes with nginx 0.8.9 17 Aug 2009
+
+ *) Feature: now the start cache loader runs in a separate process; this
+ should improve large caches handling.
+
+ *) Feature: now temporary files and permanent storage area may reside at
+ different file systems.
+
+
+Changes with nginx 0.8.8 10 Aug 2009
+
+ *) Bugfix: in handling FastCGI headers split in records.
+
+ *) Bugfix: a segmentation fault occurred in worker process, if a request
+ was handled in two proxied or FastCGIed locations and a caching was
+ enabled in the first location; the bug had appeared in 0.8.7.
+
+
+Changes with nginx 0.8.7 27 Jul 2009
+
+ *) Change: minimum supported OpenSSL version is 0.9.7.
+
+ *) Change: the "ask" parameter of the "ssl_verify_client" directive was
+ changed to the "optional" parameter and now it checks a client
+ certificate if it was offered.
+ Thanks to Brice Figureau.
+
+ *) Feature: the $ssl_client_verify variable.
+ Thanks to Brice Figureau.
+
+ *) Feature: the "ssl_crl" directive.
+ Thanks to Brice Figureau.
+
+ *) Feature: the "proxy" parameter of the "geo" directive.
+
+ *) Feature: the "image_filter" directive supports variables for setting
+ size.
+
+ *) Bugfix: the $ssl_client_cert variable usage corrupted memory; the bug
+ had appeared in 0.7.7.
+ Thanks to Sergey Zhuravlev.
+
+ *) Bugfix: "proxy_pass_header" and "fastcgi_pass_header" directives did
+ not pass to a client the "X-Accel-Redirect", "X-Accel-Limit-Rate",
+ "X-Accel-Buffering", and "X-Accel-Charset" lines from backend
+ response header.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: in handling "Last-Modified" and "Accept-Ranges" backend
+ response header lines; the bug had appeared in 0.7.44.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: the "[alert] zero size buf" error if subrequest returns an
+ empty response; the bug had appeared in 0.8.5.
+
+
+Changes with nginx 0.8.6 20 Jul 2009
+
+ *) Feature: the ngx_http_geoip_module.
+
+ *) Bugfix: XSLT filter may fail with message "not well formed XML
+ document" for valid XML document.
+ Thanks to Kuramoto Eiji.
+
+ *) Bugfix: now in MacOSX, Cygwin, and nginx/Windows locations given by a
+ regular expression are always tested in case insensitive mode.
+
+ *) Bugfix: now nginx/Windows ignores trailing dots in URI.
+ Thanks to Hugo Leisink.
+
+ *) Bugfix: name of file specified in --conf-path was not honored during
+ installation; the bug had appeared in 0.6.6.
+ Thanks to Maxim Dounin.
+
+
+Changes with nginx 0.8.5 13 Jul 2009
+
+ *) Bugfix: now nginx allows underscores in a request method.
+
+ *) Bugfix: a 500 error code was returned for invalid login/password
+ while HTTP Basic authentication on Windows.
+
+ *) Bugfix: ngx_http_perl_module responses did not work in subrequests.
+
+ *) Bugfix: in ngx_http_limit_req_module.
+ Thanks to Maxim Dounin.
+
+
+Changes with nginx 0.8.4 22 Jun 2009
+
+ *) Bugfix: nginx could not be built --without-http-cache; the bug had
+ appeared in 0.8.3.
+
+
+Changes with nginx 0.8.3 19 Jun 2009
+
+ *) Feature: the $upstream_cache_status variable.
+
+ *) Bugfix: nginx could not be built on MacOSX 10.6.
+
+ *) Bugfix: nginx could not be built --without-http-cache; the bug had
+ appeared in 0.8.2.
+
+ *) Bugfix: a segmentation fault occurred in worker process, if a backend
+ 401 error was intercepted and the backend did not set the
+ "WWW-Authenticate" response header line.
+ Thanks to Eugene Mychlo.
+
+
+Changes with nginx 0.8.2 15 Jun 2009
+
+ *) Bugfix: in open_file_cache and proxy/fastcgi cache interaction on
+ start up.
+
+ *) Bugfix: open_file_cache might cache open file descriptors too long;
+ the bug had appeared in 0.7.4.
+
+
+Changes with nginx 0.8.1 08 Jun 2009
+
+ *) Feature: the "updating" parameter in "proxy_cache_use_stale" and
+ "fastcgi_cache_use_stale" directives.
+
+ *) Bugfix: the "If-Modified-Since", "If-Range", etc. client request
+ header lines were passed to backend while caching if no
+ "proxy_set_header" directive was used with any parameters.
+
+ *) Bugfix: the "Set-Cookie" and "P3P" response header lines were not
+ hidden while caching if no "proxy_hide_header/fastcgi_hide_header"
+ directives were used with any parameters.
+
+ *) Bugfix: the ngx_http_image_filter_module did not support GIF87a
+ format.
+ Thanks to Denis Ilyinyh.
+
+ *) Bugfix: nginx could not be built modules on Solaris 10 and early; the
+ bug had appeared in 0.7.56.
+
+
+Changes with nginx 0.8.0 02 Jun 2009
+
+ *) Feature: the "keepalive_requests" directive.
+
+ *) Feature: the "limit_rate_after" directive.
+ Thanks to Ivan Debnar.
+
+ *) Bugfix: XLST filter did not work in subrequests.
+
+ *) Bugfix: in relative paths handling in nginx/Windows.
+
+ *) Bugfix: in proxy_store, fastcgi_store, proxy_cache, and fastcgi_cache
+ in nginx/Windows.
+
+ *) Bugfix: in memory allocation error handling.
+ Thanks to Maxim Dounin and Kirill A. Korinskiy.
+
+
+Changes with nginx 0.7.59 25 May 2009
+
+ *) Feature: the "proxy_cache_methods" and "fastcgi_cache_methods"
+ directives.
+
+ *) Bugfix: socket leak; the bug had appeared in 0.7.25.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: a segmentation fault occurred in worker process, if a request
+ had no body and the $request_body variable was used;
+ the bug had appeared in 0.7.58.
+
+ *) Bugfix: the SSL modules might not built on Solaris and Linux;
+ the bug had appeared in 0.7.56.
+
+ *) Bugfix: ngx_http_xslt_filter_module responses were not handled by
+ SSI, charset, and gzip filters.
+
+ *) Bugfix: a "charset" directive did not set a charset to
+ ngx_http_gzip_static_module responses.
+
+
+Changes with nginx 0.7.58 18 May 2009
+
+ *) Feature: a "listen" directive of the mail proxy module supports IPv6.
+
+ *) Feature: the "image_filter_jpeg_quality" directive.
+
+ *) Feature: the "client_body_in_single_buffer" directive.
+
+ *) Feature: the $request_body variable.
+
+ *) Bugfix: in ngx_http_autoindex_module in file name links having a ":"
+ symbol in the name.
+
+ *) Bugfix: "make upgrade" procedure did not work; the bug had appeared
+ in 0.7.53.
+ Thanks to Denis F. Latypoff.
+
+
+Changes with nginx 0.7.57 12 May 2009
+
+ *) Bugfix: a floating-point fault occurred in worker process, if the
+ ngx_http_image_filter_module errors were redirected to named
+ location; the bug had appeared in 0.7.56.
+
+
+Changes with nginx 0.7.56 11 May 2009
+
+ *) Feature: nginx/Windows supports IPv6 in a "listen" directive of the
+ HTTP module.
+
+ *) Bugfix: in ngx_http_image_filter_module.
+
+
+Changes with nginx 0.7.55 06 May 2009
+
+ *) Bugfix: the http_XXX parameters in "proxy_cache_use_stale" and
+ "fastcgi_cache_use_stale" directives did not work.
+
+ *) Bugfix: fastcgi cache did not cache header only responses.
+
+ *) Bugfix: of "select() failed (9: Bad file descriptor)" error in
+ nginx/Unix and "select() failed (10038: ...)" error in nginx/Windows.
+
+ *) Bugfix: a segmentation fault might occur in worker process, if an
+ "debug_connection" directive was used; the bug had appeared in
+ 0.7.54.
+
+ *) Bugfix: fix ngx_http_image_filter_module building errors.
+
+ *) Bugfix: the files bigger than 2G could not be transferred using
+ $r->sendfile.
+ Thanks to Maxim Dounin.
+
+
+Changes with nginx 0.7.54 01 May 2009
+
+ *) Feature: the ngx_http_image_filter_module.
+
+ *) Feature: the "proxy_ignore_headers" and "fastcgi_ignore_headers"
+ directives.
+
+ *) Bugfix: a segmentation fault might occur in worker process, if an
+ "open_file_cache_errors off" directive was used; the bug had appeared
+ in 0.7.53.
+
+ *) Bugfix: the "port_in_redirect off" directive did not work; the bug
+ had appeared in 0.7.39.
+
+ *) Bugfix: improve handling of "select" method errors.
+
+ *) Bugfix: of "select() failed (10022: ...)" error in nginx/Windows.
+
+ *) Bugfix: in error text descriptions in nginx/Windows; the bug had
+ appeared in 0.7.53.
+
+
+Changes with nginx 0.7.53 27 Apr 2009
+
+ *) Change: now a log set by --error-log-path is created from the very
+ start-up.
+
+ *) Feature: now the start up errors and warnings are outputted to an
+ error_log and stderr.
+
+ *) Feature: the empty --prefix= configure parameter forces nginx to use
+ a directory where it was run as prefix.
+
+ *) Feature: the -p switch.
+
+ *) Feature: the -s switch on Unix platforms.
+
+ *) Feature: the -? and -h switches.
+ Thanks to Jerome Loyet.
+
+ *) Feature: now switches may be set in condensed form.
+
+ *) Bugfix: nginx/Windows did not work if configuration file was given by
+ the -c switch.
+
+ *) Bugfix: temporary files might be not removed if the "proxy_store",
+ "fastcgi_store", "proxy_cache", or "fastcgi_cache" were used.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: an incorrect value was passed to mail proxy authentication
+ server in "Auth-Method" header line; the bug had appeared
+ in 0.7.34.
+ Thanks to Simon Lecaille.
+
+ *) Bugfix: system error text descriptions were not logged on Linux;
+ the bug had appeared in 0.7.45.
+
+ *) Bugfix: the "fastcgi_cache_min_uses" directive did not work.
+ Thanks to Andrew Vorobyoff.
+
+
+Changes with nginx 0.7.52 20 Apr 2009
+
+ *) Feature: the first native Windows binary release.
+
+ *) Bugfix: in processing HEAD method while caching.
+
+ *) Bugfix: in processing the "If-Modified-Since", "If-Range", etc.
+ client request header lines while caching.
+
+ *) Bugfix: now the "Set-Cookie" and "P3P" header lines are hidden in
+ cacheable responses.
+
+ *) Bugfix: if nginx was built with the ngx_http_perl_module and with a
+ perl which supports threads, then during a master process exit the
+ message "panic: MUTEX_LOCK" might be issued.
+
+ *) Bugfix: nginx could not be built --without-http-cache; the bug had
+ appeared in 0.7.48.
+
+ *) Bugfix: nginx could not be built on platforms different from i386,
+ amd64, sparc, and ppc; the bug had appeared in 0.7.42.
+
+
+Changes with nginx 0.7.51 12 Apr 2009
+
+ *) Feature: the "try_files" directive supports a response code in the
+ fallback parameter.
+
+ *) Feature: now any response code can be used in the "return" directive.
+
+ *) Bugfix: the "error_page" directive made an external redirect without
+ query string; the bug had appeared in 0.7.44.
+
+ *) Bugfix: if servers listened on several defined explicitly addresses,
+ then virtual servers might not work; the bug had appeared in 0.7.39.
+
+
+Changes with nginx 0.7.50 06 Apr 2009
+
+ *) Bugfix: the $arg_... variables did not work; the bug had appeared in
+ 0.7.49.
+
+
+Changes with nginx 0.7.49 06 Apr 2009
+
+ *) Bugfix: a segmentation fault might occur in worker process, if the
+ $arg_... variables were used; the bug had appeared in 0.7.48.
+
+
+Changes with nginx 0.7.48 06 Apr 2009
+
+ *) Feature: the "proxy_cache_key" directive.
+
+ *) Bugfix: now nginx takes into account the "X-Accel-Expires",
+ "Expires", and "Cache-Control" header lines in a backend response.
+
+ *) Bugfix: now nginx caches responses for the GET requests only.
+
+ *) Bugfix: the "fastcgi_cache_key" directive was not inherited.
+
+ *) Bugfix: the $arg_... variables did not work with SSI subrequests.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: nginx could not be built with uclibc library.
+ Thanks to Timothy Redaelli.
+
+ *) Bugfix: nginx could not be built on OpenBSD; the bug had
+ appeared in 0.7.46.
+
+
+Changes with nginx 0.7.47 01 Apr 2009
+
+ *) Bugfix: nginx could not be built on FreeBSD 6 and early versions; the
+ bug had appeared in 0.7.46.
+
+ *) Bugfix: nginx could not be built on MacOSX; the bug had
+ appeared in 0.7.46.
+
+ *) Bugfix: if the "max_size" parameter was set, then the cache manager
+ might purge a whole cache; the bug had appeared in 0.7.46.
+
+ *) Change: a segmentation fault might occur in worker process, if the
+ "proxy_cache"/"fastcgi_cache" and the "proxy_cache_valid"/
+ "fastcgi_cache_valid" were set on different levels; the bug had
+ appeared in 0.7.46.
+
+ *) Bugfix: a segmentation fault might occur in worker process, if a
+ request was redirected to a proxied or FastCGI server via error_page
+ or try_files; the bug had appeared in 0.7.44.
+
+
+Changes with nginx 0.7.46 30 Mar 2009
+
+ *) Bugfix: the previous release tarball was incorrect.
+
+
+Changes with nginx 0.7.45 30 Mar 2009
+
+ *) Change: now the "proxy_cache" and the "proxy_cache_valid" directives
+ can be set on different levels.
+
+ *) Change: the "clean_time" parameter of the "proxy_cache_path"
+ directive is canceled.
+
+ *) Feature: the "max_size" parameter of the "proxy_cache_path"
+ directive.
+
+ *) Feature: the ngx_http_fastcgi_module preliminary cache support.
+
+ *) Feature: now on shared memory allocation errors directive and zone
+ names are logged.
+
+ *) Bugfix: the directive "add_header last-modified ''" did not delete a
+ "Last-Modified" response header line; the bug had appeared in 0.7.44.
+
+ *) Bugfix: a relative path in the "auth_basic_user_file" directive given
+ without variables did not work; the bug had appeared in 0.7.44.
+ Thanks to Jerome Loyet.
+
+ *) Bugfix: in an "alias" directive given using variables without
+ references to captures of regular expressions; the bug had appeared
+ in 0.7.42.
+
+
+Changes with nginx 0.7.44 23 Mar 2009
+
+ *) Feature: the ngx_http_proxy_module preliminary cache support.
+
+ *) Feature: the --with-pcre option in the configure.
+
+ *) Feature: the "try_files" directive is now allowed on the server block
+ level.
+
+ *) Bugfix: the "try_files" directive handled incorrectly a query string
+ in a fallback parameter.
+
+ *) Bugfix: the "try_files" directive might test incorrectly directories.
+
+ *) Bugfix: if there was a single server for given address:port pair,
+ then captures in regular expressions in a "server_name" directive did
+ not work.
+
+
+Changes with nginx 0.7.43 18 Mar 2009
+
+ *) Bugfix: a request was handled incorrectly, if a "root" directive used
+ variables; the bug had appeared in 0.7.42.
+
+ *) Bugfix: if a server listened on wildcard address, then the
+ $server_addr variable value was "0.0.0.0"; the bug had appeared in
+ 0.7.36.
+
+
+Changes with nginx 0.7.42 16 Mar 2009
+
+ *) Change: now the "Invalid argument" error returned by
+ setsockopt(TCP_NODELAY) on Solaris, is ignored.
+
+ *) Change: now if a file specified in a "auth_basic_user_file" directive
+ is absent, then the 403 error is returned instead of the 500 one.
+
+ *) Feature: the "auth_basic_user_file" directive supports variables.
+ Thanks to Kirill A. Korinskiy.
+
+ *) Feature: the "listen" directive supports the "ipv6only" parameter.
+ Thanks to Zhang Hua.
+
+ *) Bugfix: in an "alias" directive with references to captures of
+ regular expressions; the bug had appeared in 0.7.40.
+
+ *) Bugfix: compatibility with Tru64 UNIX.
+ Thanks to Dustin Marquess.
+
+ *) Bugfix: nginx could not be built without PCRE library; the bug had
+ appeared in 0.7.41.
+
+
+Changes with nginx 0.7.41 11 Mar 2009
+
+ *) Bugfix: a segmentation fault might occur in worker process, if a
+ "server_name" or a "location" directives had captures in regular
+ expressions; the issue had appeared in 0.7.40.
+ Thanks to Vladimir Sopot.
+
+
+Changes with nginx 0.7.40 09 Mar 2009
+
+ *) Feature: the "location" directive supports captures in regular
+ expressions.
+
+ *) Feature: an "alias" directive with capture references may be used
+ inside a location given by a regular expression with captures.
+
+ *) Feature: the "server_name" directive supports captures in regular
+ expressions.
+
+ *) Workaround: the ngx_http_autoindex_module did not show the trailing
+ slash in directories on XFS filesystem; the issue had appeared in
+ 0.7.15.
+ Thanks to Dmitry Kuzmenko.
+
+
+Changes with nginx 0.7.39 02 Mar 2009
+
+ *) Bugfix: large response with SSI might hang, if gzipping was enabled;
+ the bug had appeared in 0.7.28.
+ Thanks to Artem Bokhan.
+
+ *) Bugfix: a segmentation fault might occur in worker process, if short
+ static variants are used in a "try_files" directive.
+
+
+Changes with nginx 0.7.38 23 Feb 2009
+
+ *) Feature: authentication failures logging.
+
+ *) Bugfix: name/password in auth_basic_user_file were ignored after odd
+ number of empty lines.
+ Thanks to Alexander Zagrebin.
+
+ *) Bugfix: a segmentation fault occurred in a master process, if long
+ path was used in unix domain socket; the bug had appeared in 0.7.36.
+
+
+Changes with nginx 0.7.37 21 Feb 2009
+
+ *) Bugfix: directives using upstreams did not work; the bug had appeared
+ in 0.7.36.
+
+
+Changes with nginx 0.7.36 21 Feb 2009
+
+ *) Feature: a preliminary IPv6 support; the "listen" directive of the
+ HTTP module supports IPv6.
+
+ *) Bugfix: the $ancient_browser variable did not work for browsers
+ preset by a "modern_browser" directives.
+
+
+Changes with nginx 0.7.35 16 Feb 2009
+
+ *) Bugfix: a "ssl_engine" directive did not use a SSL-accelerator for
+ asymmetric ciphers.
+ Thanks to Marcin Gozdalik.
+
+ *) Bugfix: a "try_files" directive set MIME type depending on an
+ original request extension.
+
+ *) Bugfix: "*domain.tld" names were handled incorrectly in
+ "server_name", "valid_referers", and "map" directives, if
+ ".domain.tld" and ".subdomain.domain.tld" wildcards were used;
+ the bug had appeared in 0.7.9.
+
+
+Changes with nginx 0.7.34 10 Feb 2009
+
+ *) Feature: the "off" parameter of the "if_modified_since" directive.
+
+ *) Feature: now nginx sends an HELO/EHLO command after a XCLIENT
+ command.
+ Thanks to Maxim Dounin.
+
+ *) Feature: Microsoft specific "AUTH LOGIN with User Name" mode support
+ in mail proxy server.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: in a redirect rewrite directive original arguments were
+ concatenated with new arguments by a "?" rather than an "&";
+ the bug had appeared in 0.1.18.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: nginx could not be built on AIX.
+
+
+Changes with nginx 0.7.33 02 Feb 2009
+
+ *) Bugfix: a double response might be returned if the epoll or rtsig
+ methods are used and a redirect was returned to a request with body.
+ Thanks to Eden Li.
+
+ *) Bugfix: the $sent_http_location variable was empty for some redirects
+ types.
+
+ *) Bugfix: a segmentation fault might occur in worker process if
+ "resolver" directive was used in SMTP proxy.
+
+
+Changes with nginx 0.7.32 26 Jan 2009
+
+ *) Feature: now a directory existence testing can be set explicitly in
+ the "try_files" directive.
+
+ *) Bugfix: fastcgi_store stored files not always.
+
+ *) Bugfix: in geo ranges.
+
+ *) Bugfix: in shared memory allocations if nginx was built without
+ debugging.
+ Thanks to Andrey Kvasov.
+
+
+Changes with nginx 0.7.31 19 Jan 2009
+
+ *) Change: now the "try_files" directive tests files only and ignores
+ directories.
+
+ *) Feature: the "fastcgi_split_path_info" directive.
+
+ *) Bugfixes in an "Expect" request header line support.
+
+ *) Bugfixes in geo ranges.
+
+ *) Bugfix: in a miss case ngx_http_memcached_module returned the "END"
+ line as response body instead of default 404 page body; the bug had
+ appeared in 0.7.18.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: while SMTP proxying nginx issued message "250 2.0.0 OK"
+ instead of "235 2.0.0 OK"; the bug had appeared in 0.7.22.
+ Thanks to Maxim Dounin.
+
+
+Changes with nginx 0.7.30 24 Dec 2008
+
+ *) Bugfix: a segmentation fault occurred in worker process, if variables
+ were used in the "fastcgi_pass" or "proxy_pass" directives and host
+ name must be resolved; the bug had appeared in 0.7.29.
+
+
+Changes with nginx 0.7.29 24 Dec 2008
+
+ *) Bugfix: the "fastcgi_pass" and "proxy_pass" directives did not
+ support variables if unix domain sockets were used.
+
+ *) Bugfixes in subrequest processing; the bugs had appeared in 0.7.25.
+
+ *) Bugfix: a "100 Continue" response was issued for HTTP/1.0 requests;
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: in memory allocation in the ngx_http_gzip_filter_module on
+ Cygwin.
+
+
+Changes with nginx 0.7.28 22 Dec 2008
+
+ *) Change: in memory allocation in the ngx_http_gzip_filter_module.
+
+ *) Change: the default "gzip_buffers" directive values have been changed
+ to 32 4k or 16 8k from 4 4k/8k.
+
+
+Changes with nginx 0.7.27 15 Dec 2008
+
+ *) Feature: the "try_files" directive.
+
+ *) Feature: variables support in the "fastcgi_pass" directive.
+
+ *) Feature: now the $geo variable may get an address from a variable.
+ Thanks to Andrei Nigmatulin.
+
+ *) Feature: now a location's modifier may be used without space before
+ name.
+
+ *) Feature: the $upstream_response_length variable.
+
+ *) Bugfix: now a "add_header" directive does not add an empty value.
+
+ *) Bugfix: if zero length static file was requested, then nginx just
+ closed connection; the bug had appeared in 0.7.25.
+
+ *) Bugfix: a MOVE method could not move file in non-existent directory.
+
+ *) Bugfix: a segmentation fault occurred in worker process, if no one
+ named location was defined in server, but some one was used in an
+ error_page directive.
+ Thanks to Sergey Bochenkov.
+
+
+Changes with nginx 0.7.26 08 Dec 2008
+
+ *) Bugfix: in subrequest processing; the bug had appeared in 0.7.25.
+
+
+Changes with nginx 0.7.25 08 Dec 2008
+
+ *) Change: in subrequest processing.
+
+ *) Change: now POSTs without "Content-Length" header line are allowed.
+
+ *) Bugfix: now the "limit_req" and "limit_conn" directives log a
+ prohibition reason.
+
+ *) Bugfix: in the "delete" parameter of the "geo" directive.
+
+
+Changes with nginx 0.7.24 01 Dec 2008
+
+ *) Feature: the "if_modified_since" directive.
+
+ *) Bugfix: nginx did not process a FastCGI server response, if the
+ server send too many messages to stderr before response.
+
+ *) Bugfix: the "$cookie_..." variables did not work in the SSI and the
+ perl module.
+
+
+Changes with nginx 0.7.23 27 Nov 2008
+
+ *) Feature: the "delete" and "ranges" parameters in the "geo" directive.
+
+ *) Feature: speeding up loading of geo base with large number of values.
+
+ *) Feature: decrease of memory required for geo base load.
+
+
+Changes with nginx 0.7.22 20 Nov 2008
+
+ *) Feature: the "none" parameter in the "smtp_auth" directive.
+ Thanks to Maxim Dounin.
+
+ *) Feature: the "$cookie_..." variables.
+
+ *) Bugfix: the "directio" directive did not work in XFS filesystem.
+
+ *) Bugfix: the resolver did not understand big DNS responses.
+ Thanks to Zyb.
+
+
+Changes with nginx 0.7.21 11 Nov 2008
+
+ *) Changes in the ngx_http_limit_req_module.
+
+ *) Feature: the EXSLT support in the ngx_http_xslt_module.
+ Thanks to Denis F. Latypoff.
+
+ *) Workaround: compatibility with glibc 2.3.
+ Thanks to Eric Benson and Maxim Dounin.
+
+ *) Bugfix: nginx could not run on MacOSX 10.4 and earlier; the bug had
+ appeared in 0.7.6.
+
+
+Changes with nginx 0.7.20 10 Nov 2008
+
+ *) Changes in the ngx_http_gzip_filter_module.
+
+ *) Feature: the ngx_http_limit_req_module.
+
+ *) Bugfix: worker processes might exit on a SIGBUS signal on sparc and
+ ppc platforms; the bug had appeared in 0.7.3.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: the "proxy_pass http://host/some:uri" directives did not
+ work; the bug had appeared in 0.7.12.
+
+ *) Bugfix: in HTTPS mode requests might fail with the "bad write retry"
+ error.
+
+ *) Bugfix: the ngx_http_secure_link_module did not work inside
+ locations, whose names are less than 3 characters.
+
+ *) Bugfix: $server_addr variable might have no value.
+
+
+Changes with nginx 0.7.19 13 Oct 2008
+
+ *) Bugfix: version number update.
+
+
+Changes with nginx 0.7.18 13 Oct 2008
+
+ *) Change: the "underscores_in_headers" directive; now nginx does not
+ allows underscores in a client request header line names.
+
+ *) Feature: the ngx_http_secure_link_module.
+
+ *) Feature: the "real_ip_header" directive supports any header.
+
+ *) Feature: the "log_subrequest" directive.
+
+ *) Feature: the $realpath_root variable.
+
+ *) Feature: the "http_502" and "http_504" parameters of the
+ "proxy_next_upstream" directive.
+
+ *) Bugfix: the "http_503" parameter of the "proxy_next_upstream" or
+ "fastcgi_next_upstream" directives did not work.
+
+ *) Bugfix: nginx might send a "Transfer-Encoding: chunked" header line
+ for HEAD requests.
+
+ *) Bugfix: now accept threshold depends on worker_connections.
+
+
+Changes with nginx 0.7.17 15 Sep 2008
+
+ *) Feature: now the "directio" directive works on Linux.
+
+ *) Feature: the $pid variable.
+
+ *) Bugfix: the "directio" optimization that had appeared in 0.7.15 did
+ not work with open_file_cache.
+
+ *) Bugfix: the "access_log" with variables did not work on Linux; the
+ bug had appeared in 0.7.7.
+
+ *) Bugfix: the ngx_http_charset_module did not understand quoted charset
+ name received from backend.
+
+
+Changes with nginx 0.7.16 08 Sep 2008
+
+ *) Bugfix: nginx could not be built on 64-bit platforms; the bug had
+ appeared in 0.7.15.
+
+
+Changes with nginx 0.7.15 08 Sep 2008
+
+ *) Feature: the ngx_http_random_index_module.
+
+ *) Feature: the "directio" directive has been optimized for file
+ requests starting from arbitrary position.
+
+ *) Feature: the "directio" directive turns off sendfile if it is
+ necessary.
+
+ *) Feature: now nginx allows underscores in a client request header line
+ names.
+
+
+Changes with nginx 0.7.14 01 Sep 2008
+
+ *) Change: now the ssl_certificate and ssl_certificate_key directives
+ have no default values.
+
+ *) Feature: the "listen" directive supports the "ssl" parameter.
+
+ *) Feature: now nginx takes into account a time zone change while
+ reconfiguration on FreeBSD and Linux.
+
+ *) Bugfix: the "listen" directive parameters such as "backlog",
+ "rcvbuf", etc. were not set, if a default server was not the first
+ one.
+
+ *) Bugfix: if URI part captured by a "rewrite" directive was used as a
+ query string, then the query string was not escaped.
+
+ *) Bugfix: configuration file validity test improvements.
+
+
+Changes with nginx 0.7.13 26 Aug 2008
+
+ *) Bugfix: nginx could not be built on Linux and Solaris; the bug had
+ appeared in 0.7.12.
+
+
+Changes with nginx 0.7.12 26 Aug 2008
+
+ *) Feature: the "server_name" directive supports empty name "".
+
+ *) Feature: the "gzip_disable" directive supports special "msie6" mask.
+
+ *) Bugfix: if the "max_fails=0" parameter was used in upstream with
+ several servers, then a worker process exited on a SIGFPE signal.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: a request body was dropped while redirection via an
+ "error_page" directive.
+
+ *) Bugfix: a full response was returned for request method HEAD while
+ redirection via an "error_page" directive.
+
+ *) Bugfix: the $r->header_in() method did not return value of the
+ "Host", "User-Agent", and "Connection" request header lines; the bug
+ had appeared in 0.7.0.
+
+
+Changes with nginx 0.7.11 18 Aug 2008
+
+ *) Change: now ngx_http_charset_module does not work by default with
+ text/css MIME type.
+
+ *) Feature: now nginx returns the 405 status code for POST method
+ requesting a static file only if the file exists.
+
+ *) Feature: the "proxy_ssl_session_reuse" directive.
+
+ *) Bugfix: a "proxy_pass" directive without URI part might use original
+ request after the "X-Accel-Redirect" redirection was used.
+
+ *) Bugfix: if a directory has search only rights and the first index
+ file was absent, then nginx returned the 500 status code.
+
+ *) Bugfix: in inclusive locations; the bugs had appeared in 0.7.1.
+
+
+Changes with nginx 0.7.10 13 Aug 2008
+
+ *) Bugfix: in the "addition_types", "charset_types", "gzip_types",
+ "ssi_types", "sub_filter_types", and "xslt_types" directives; the
+ bugs had appeared in 0.7.9.
+
+ *) Bugfix: of recursive error_page for 500 status code.
+
+ *) Bugfix: now the ngx_http_realip_module sets address not for whole
+ keepalive connection, but for each request passed via the connection.
+
+
+Changes with nginx 0.7.9 12 Aug 2008
+
+ *) Change: now ngx_http_charset_module works by default with following
+ MIME types: text/html, text/css, text/xml, text/plain,
+ text/vnd.wap.wml, application/x-javascript, and application/rss+xml.
+
+ *) Feature: the "charset_types" and "addition_types" directives.
+
+ *) Feature: now the "gzip_types", "ssi_types", and "sub_filter_types"
+ directives use hash.
+
+ *) Feature: the ngx_cpp_test_module.
+
+ *) Feature: the "expires" directive supports daily time.
+
+ *) Feature: the ngx_http_xslt_module improvements and bug fixing.
+ Thanks to Denis F. Latypoff and Maxim Dounin.
+
+ *) Bugfix: the "log_not_found" directive did not work for index files
+ tests.
+
+ *) Bugfix: HTTPS connections might hang, if kqueue, epoll, rtsig, or
+ eventport methods were used; the bug had appeared in 0.7.7.
+
+ *) Bugfix: if the "server_name", "valid_referers", and "map" directives
+ used an "*.domain.tld" wildcard and exact name "domain.tld" was not
+ set, then the exact name was matched by the wildcard; the bug had
+ appeared in 0.3.18.
+
+
+Changes with nginx 0.7.8 04 Aug 2008
+
+ *) Feature: the ngx_http_xslt_module.
+
+ *) Feature: the "$arg_..." variables.
+
+ *) Feature: Solaris directio support.
+ Thanks to Ivan Debnar.
+
+ *) Bugfix: now if FastCGI server sends a "Location" header line without
+ status line, then nginx uses 302 status code.
+ Thanks to Maxim Dounin.
+
+
+Changes with nginx 0.7.7 30 Jul 2008
+
+ *) Change: now the EAGAIN error returned by connect() is not considered
+ as temporary error.
+
+ *) Change: now the $ssl_client_cert variable value is a certificate with
+ TAB character intended before each line except first one; an
+ unchanged certificate is available in the $ssl_client_raw_cert
+ variable.
+
+ *) Feature: the "ask" parameter in the "ssl_verify_client" directive.
+
+ *) Feature: byte-range processing improvements.
+ Thanks to Maxim Dounin.
+
+ *) Feature: the "directio" directive.
+ Thanks to Jiang Hong.
+
+ *) Feature: MacOSX 10.5 sendfile() support.
+
+ *) Bugfix: now in MacOSX and Cygwin locations are tested in case
+ insensitive mode; however, the compare is provided by single-byte
+ locales only.
+
+ *) Bugfix: mail proxy SSL connections hanged, if select, poll, or
+ /dev/poll methods were used.
+
+ *) Bugfix: UTF-8 encoding usage in the ngx_http_autoindex_module.
+
+
+Changes with nginx 0.7.6 07 Jul 2008
+
+ *) Bugfix: now if variables are used in the "access_log" directive a
+ request root existence is always tested.
+
+ *) Bugfix: the ngx_http_flv_module did not support several values in a
+ query string.
+
+
+Changes with nginx 0.7.5 01 Jul 2008
+
+ *) Bugfixes in variables support in the "access_log" directive; the bugs
+ had appeared in 0.7.4.
+
+ *) Bugfix: nginx could not be built --without-http_gzip_module; the bug
+ had appeared in 0.7.3.
+ Thanks to Kirill A. Korinskiy.
+
+ *) Bugfix: if sub_filter and SSI were used together, then responses
+ might were transferred incorrectly.
+
+
+Changes with nginx 0.7.4 30 Jun 2008
+
+ *) Feature: variables support in the "access_log" directive.
+
+ *) Feature: the "open_log_file_cache" directive.
+
+ *) Feature: the -g switch.
+
+ *) Feature: the "Expect" request header line support.
+
+ *) Bugfix: large SSI inclusions might be truncated.
+
+
+Changes with nginx 0.7.3 23 Jun 2008
+
+ *) Change: the "rss" extension MIME type has been changed to
+ "application/rss+xml".
+
+ *) Change: now the "gzip_vary" directive turned on issues a
+ "Vary: Accept-Encoding" header line for uncompressed responses too.
+
+ *) Feature: now the "rewrite" directive does a redirect automatically if
+ the "https://" protocol is used.
+
+ *) Bugfix: the "proxy_pass" directive did not work with the HTTPS
+ protocol; the bug had appeared in 0.6.9.
+
+
+Changes with nginx 0.7.2 16 Jun 2008
+
+ *) Feature: now nginx supports EDH key exchange ciphers.
+
+ *) Feature: the "ssl_dhparam" directive.
+
+ *) Feature: the $ssl_client_cert variable.
+ Thanks to Manlio Perillo.
+
+ *) Bugfix: after changing URI via a "rewrite" directive nginx did not
+ search a new location; the bug had appeared in 0.7.1.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: nginx could not be built without PCRE library; the bug had
+ appeared in 0.7.1.
+
+ *) Bugfix: when a request to a directory was redirected with the slash
+ added, nginx dropped a query string from the original request.
+
+
+Changes with nginx 0.7.1 26 May 2008
+
+ *) Change: now locations are searched in a tree.
+
+ *) Change: the "optimize_server_names" directive was canceled due to the
+ "server_name_in_redirect" directive introduction.
+
+ *) Change: some long deprecated directives are not supported anymore.
+
+ *) Change: the "none" parameter in the "ssl_session_cache" directive;
+ now this is default parameter.
+ Thanks to Rob Mueller.
+
+ *) Bugfix: worker processes might not catch reconfiguration and log
+ rotation signals.
+
+ *) Bugfix: nginx could not be built on latest Fedora 9 Linux.
+ Thanks to Roxis.
+
+
+Changes with nginx 0.7.0 19 May 2008
+
+ *) Change: now the 0x00-0x1F, '"' and '\' characters are escaped as \xXX
+ in an access_log.
+ Thanks to Maxim Dounin.
+
+ *) Change: now nginx allows several "Host" request header line.
+
+ *) Feature: the "modified" flag in the "expires" directive.
+
+ *) Feature: the $uid_got and $uid_set variables may be used at any
+ request processing stage.
+
+ *) Feature: the $hostname variable.
+ Thanks to Andrei Nigmatulin.
+
+ *) Feature: DESTDIR support.
+ Thanks to Todd A. Fisher and Andras Voroskoi.
+
+ *) Bugfix: a segmentation fault might occur in worker process on Linux,
+ if keepalive was enabled.
+
+
+Changes with nginx 0.6.31 12 May 2008
+
+ *) Bugfix: nginx did not process FastCGI response if header was at the
+ end of FastCGI record; the bug had appeared in 0.6.2.
+ Thanks to Sergey Serov.
+
+ *) Bugfix: a segmentation fault might occur in worker process if a file
+ was deleted and the "open_file_cache_errors" directive was off.
+
+
+Changes with nginx 0.6.30 29 Apr 2008
+
+ *) Change: now if an "include" directive pattern does not match any
+ file, then nginx does not issue an error.
+
+ *) Feature: now the time in directives may be specified without spaces,
+ for example, "1h50m".
+
+ *) Bugfix: memory leaks if the "ssl_verify_client" directive was on.
+ Thanks to Chavelle Vincent.
+
+ *) Bugfix: the "sub_filter" directive might set text to change into
+ output.
+
+ *) Bugfix: the "error_page" directive did not take into account
+ arguments in redirected URI.
+
+ *) Bugfix: now nginx always opens files in binary mode under Cygwin.
+
+ *) Bugfix: nginx could not be built on OpenBSD; the bug had appeared in
+ 0.6.15.
+
+
+Changes with nginx 0.6.29 18 Mar 2008
+
+ *) Feature: the ngx_google_perftools_module.
+
+ *) Bugfix: the ngx_http_perl_module could not be built on 64-bit
+ platforms; the bug had appeared in 0.6.27.
+
+
+Changes with nginx 0.6.28 13 Mar 2008
+
+ *) Bugfix: the rtsig method could not be built; the bug had appeared in
+ 0.6.27.
+
+
+Changes with nginx 0.6.27 12 Mar 2008
+
+ *) Change: now by default the rtsig method is not built on
+ Linux 2.6.18+.
+
+ *) Change: now a request method is not changed while redirection to a
+ named location via an "error_page" directive.
+
+ *) Feature: the "resolver" and "resolver_timeout" directives in SMTP
+ proxy.
+
+ *) Feature: the "post_action" directive supports named locations.
+
+ *) Bugfix: a segmentation fault occurred in worker process, if a request
+ was redirected from proxy, FastCGI, or memcached location to static
+ named locations.
+
+ *) Bugfix: browsers did not repeat SSL handshake if there is no valid
+ client certificate in first handshake.
+ Thanks to Alexander V. Inyukhin.
+
+ *) Bugfix: if response code 495-497 was redirected via an "error_page"
+ directive without code change, then nginx tried to allocate too many
+ memory.
+
+ *) Bugfix: memory leak in long-lived non buffered connections.
+
+ *) Bugfix: memory leak in resolver.
+
+ *) Bugfix: a segmentation fault occurred in worker process, if a request
+ was redirected from proxy, FastCGI, or memcached location to static
+ named locations.
+
+ *) Bugfix: in the $proxy_host and $proxy_port variables caching.
+ Thanks to Sergey Bochenkov.
+
+ *) Bugfix: a "proxy_pass" directive with variables used incorrectly the
+ same port as in another "proxy_pass" directive with the same host
+ name and without variables.
+ Thanks to Sergey Bochenkov.
+
+ *) Bugfix: an alert "sendmsg() failed (9: Bad file descriptor)" on some
+ 64-bit platforms while reconfiguration.
+
+ *) Bugfix: a segmentation fault occurred in worker process, if empty
+ stub block was used second time in SSI.
+
+ *) Bugfix: in copying URI part contained escaped symbols into arguments.
+
+
+Changes with nginx 0.6.26 11 Feb 2008
+
+ *) Bugfix: the "proxy_store" and "fastcgi_store" directives did not
+ check a response length.
+
+ *) Bugfix: a segmentation fault occurred in worker process, if big value
+ was used in a "expires" directive.
+ Thanks to Joaquin Cuenca Abela.
+
+ *) Bugfix: nginx incorrectly detected cache line size on Pentium 4.
+ Thanks to Gena Makhomed.
+
+ *) Bugfix: in proxied or FastCGI subrequests a client original method
+ was used instead of the GET method.
+
+ *) Bugfix: socket leak in HTTPS mode if deferred accept was used.
+ Thanks to Ben Maurer.
+
+ *) Bugfix: nginx issued the bogus error message "SSL_shutdown() failed
+ (SSL: )"; the bug had appeared in 0.6.23.
+
+ *) Bugfix: in HTTPS mode requests might fail with the "bad write retry"
+ error; the bug had appeared in 0.6.23.
+
+
+Changes with nginx 0.6.25 08 Jan 2008
+
+ *) Change: now the "server_name_in_redirect" directive is used instead
+ of the "server_name" directive's special "*" parameter.
+
+ *) Change: now wildcard and regex names can be used as main name in a
+ "server_name" directive.
+
+ *) Change: the "satisfy_any" directive was replaced by the "satisfy"
+ directive.
+
+ *) Workaround: old worker processes might hog CPU after reconfiguration
+ if they was run under Linux OpenVZ.
+
+ *) Feature: the "min_delete_depth" directive.
+
+ *) Bugfix: the COPY and MOVE methods did not work with single files.
+
+ *) Bugfix: the ngx_http_gzip_static_module did not allow the
+ ngx_http_dav_module to work; the bug had appeared in 0.6.23.
+
+ *) Bugfix: socket leak in HTTPS mode if deferred accept was used.
+ Thanks to Ben Maurer.
+
+ *) Bugfix: nginx could not be built without PCRE library; the bug had
+ appeared in 0.6.23.
+
+
+Changes with nginx 0.6.24 27 Dec 2007
+
+ *) Bugfix: a segmentation fault might occur in worker process if HTTPS
+ was used; the bug had appeared in 0.6.23.
+
+
+Changes with nginx 0.6.23 27 Dec 2007
+
+ *) Change: the "off" parameter in the "ssl_session_cache" directive; now
+ this is default parameter.
+
+ *) Change: the "open_file_cache_retest" directive was renamed to the
+ "open_file_cache_valid".
+
+ *) Feature: the "open_file_cache_min_uses" directive.
+
+ *) Feature: the ngx_http_gzip_static_module.
+
+ *) Feature: the "gzip_disable" directive.
+
+ *) Feature: the "memcached_pass" directive may be used inside the "if"
+ block.
+
+ *) Bugfix: a segmentation fault occurred in worker process, if the
+ "memcached_pass" and "if" directives were used in the same location.
+
+ *) Bugfix: if a "satisfy_any on" directive was used and not all access
+ and auth modules directives were set, then other given access and
+ auth directives were not tested;
+
+ *) Bugfix: regex parameters in a "valid_referers" directive were not
+ inherited from previous level.
+
+ *) Bugfix: a "post_action" directive did run if a request was completed
+ with 499 status code.
+
+ *) Bugfix: optimization of 16K buffer usage in a SSL connection.
+ Thanks to Ben Maurer.
+
+ *) Bugfix: the STARTTLS in SMTP mode did not work.
+ Thanks to Oleg Motienko.
+
+ *) Bugfix: in HTTPS mode requests might fail with the "bad write retry"
+ error; the bug had appeared in 0.5.13.
+
+
+Changes with nginx 0.6.22 19 Dec 2007
+
+ *) Change: now all ngx_http_perl_module methods return values copied to
+ perl's allocated memory.
+
+ *) Bugfix: if nginx was built with ngx_http_perl_module, the perl before
+ 5.8.6 was used, and perl supported threads, then during
+ reconfiguration the master process aborted; the bug had appeared in
+ 0.5.9.
+ Thanks to Boris Zhmurov.
+
+ *) Bugfix: the ngx_http_perl_module methods may get invalid values of
+ the regex captures.
+
+ *) Bugfix: a segmentation fault occurred in worker process, if the
+ $r->has_request_body() method was called for a request whose small
+ request body was already received.
+
+ *) Bugfix: large_client_header_buffers did not freed before going to
+ keep-alive state.
+ Thanks to Olexander Shtepa.
+
+ *) Bugfix: the last address was missed in the $upstream_addr variable;
+ the bug had appeared in 0.6.18.
+
+ *) Bugfix: the "fastcgi_catch_stderr" directive did return error code;
+ now it returns 502 code, that can be rerouted to a next server using
+ the "fastcgi_next_upstream invalid_header" directive.
+
+ *) Bugfix: a segmentation fault occurred in master process if the
+ "fastcgi_catch_stderr" directive was used; the bug had appeared in
+ 0.6.10.
+ Thanks to Manlio Perillo.
+
+
+Changes with nginx 0.6.21 03 Dec 2007
+
+ *) Change: if variable values used in a "proxy_pass" directive contain
+ IP-addresses only, then a "resolver" directive is not mandatory.
+
+ *) Bugfix: a segmentation fault might occur in worker process if a
+ "proxy_pass" directive with URI-part was used; the bug had appeared
+ in 0.6.19.
+
+ *) Bugfix: if resolver was used on platform that does not support
+ kqueue, then nginx issued an alert "name is out of response".
+ Thanks to Andrei Nigmatulin.
+
+ *) Bugfix: if the $server_protocol was used in FastCGI parameters and a
+ request line length was near to the "client_header_buffer_size"
+ directive value, then nginx issued an alert "fastcgi: the request
+ record is too big".
+
+ *) Bugfix: if a plain text HTTP/0.9 version request was made to HTTPS
+ server, then nginx returned usual response.
+
+
+Changes with nginx 0.6.20 28 Nov 2007
+
+ *) Bugfix: a segmentation fault might occur in worker process if a
+ "proxy_pass" directive with URI-part was used; the bug had appeared
+ in 0.6.19.
+
+
+Changes with nginx 0.6.19 27 Nov 2007
+
+ *) Bugfix: the 0.6.18 version could not be built.
+
+
+Changes with nginx 0.6.18 27 Nov 2007
+
+ *) Change: now the ngx_http_userid_module adds start time microseconds
+ to the cookie field contains a pid value.
+
+ *) Change: now the full request line instead of URI only is written to
+ error_log.
+
+ *) Feature: variables support in the "proxy_pass" directive.
+
+ *) Feature: the "resolver" and "resolver_timeout" directives.
+
+ *) Feature: now the directive "add_header last-modified ''" deletes a
+ "Last-Modified" response header line.
+
+ *) Bugfix: the "limit_rate" directive did not allow to use full
+ throughput, even if limit value was very high.
+
+
+Changes with nginx 0.6.17 15 Nov 2007
+
+ *) Feature: the "If-Range" request header line support.
+ Thanks to Alexander V. Inyukhin.
+
+ *) Bugfix: URL double escaping in a redirect of the "msie_refresh"
+ directive; the bug had appeared in 0.6.4.
+
+ *) Bugfix: the "autoindex" directive did not work with the "alias /"
+ directive.
+
+ *) Bugfix: a segmentation fault might occur in worker process if
+ subrequests were used.
+
+ *) Bugfix: the big responses may be transferred truncated if SSL and
+ gzip were used.
+
+ *) Bugfix: the $status variable was equal to 0 if a proxied server
+ returned response in HTTP/0.9 version.
+
+
+Changes with nginx 0.6.16 29 Oct 2007
+
+ *) Change: now the uname(2) is used on Linux instead of procfs.
+ Thanks to Ilya Novikov.
+
+ *) Bugfix: if the "?" character was in a "error_page" directive, then it
+ was escaped in a proxied request; the bug had appeared in 0.6.11.
+
+ *) Bugfix: compatibility with mget.
+
+
+Changes with nginx 0.6.15 22 Oct 2007
+
+ *) Feature: Cygwin compatibility.
+ Thanks to Vladimir Kutakov.
+
+ *) Feature: the "merge_slashes" directive.
+
+ *) Feature: the "gzip_vary" directive.
+
+ *) Feature: the "server_tokens" directive.
+
+ *) Bugfix: nginx did not unescape URI in the "include" SSI command.
+
+ *) Bugfix: the segmentation fault was occurred on start or while
+ reconfiguration if variable was used in the "charset" or
+ "source_charset" directives.
+
+ *) Bugfix: nginx returned the 400 response on requests like
+ "GET http://www.domain.com HTTP/1.0".
+ Thanks to James Oakley.
+
+ *) Bugfix: if request with request body was redirected using the
+ "error_page" directive, then nginx tried to read the request body
+ again; the bug had appeared in 0.6.7.
+
+ *) Bugfix: a segmentation fault occurred in worker process if no
+ server_name was explicitly defined for server processing request; the
+ bug had appeared in 0.6.7.
+
+
+Changes with nginx 0.6.14 15 Oct 2007
+
+ *) Change: now by default the "echo" SSI command uses entity encoding.
+
+ *) Feature: the "encoding" parameter in the "echo" SSI command.
+
+ *) Feature: the "access_log" directive may be used inside the
+ "limit_except" block.
+
+ *) Bugfix: if all upstream servers were failed, then all servers had got
+ weight the was equal one until servers became alive; the bug had
+ appeared in 0.6.6.
+
+ *) Bugfix: a segmentation fault occurred in worker process if
+ $date_local and $date_gmt were used outside the
+ ngx_http_ssi_filter_module.
+
+ *) Bugfix: a segmentation fault might occur in worker process if debug
+ log was enabled.
+ Thanks to Andrei Nigmatulin.
+
+ *) Bugfix: ngx_http_memcached_module did not set
+ $upstream_response_time.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: a worker process may got caught in an endless loop, if the
+ memcached was used.
+
+ *) Bugfix: nginx supported low case only "close" and "keep-alive" values
+ in the "Connection" request header line; the bug had appeared in
+ 0.6.11.
+
+ *) Bugfix: sub_filter did not work with empty substitution.
+
+ *) Bugfix: in sub_filter parsing.
+
+
+Changes with nginx 0.6.13 24 Sep 2007
+
+ *) Bugfix: nginx did not close directory file on HEAD request if
+ autoindex was used.
+ Thanks to Arkadiusz Patyk.
+
+
+Changes with nginx 0.6.12 21 Sep 2007
+
+ *) Change: mail proxy was split on three modules: pop3, imap and smtp.
+
+ *) Feature: the --without-mail_pop3_module, --without-mail_imap_module,
+ and --without-mail_smtp_module configuration parameters.
+
+ *) Feature: the "smtp_greeting_delay" and "smtp_client_buffer"
+ directives of the ngx_mail_smtp_module.
+
+ *) Bugfix: the trailing wildcards did not work; the bug had appeared in
+ 0.6.9.
+
+ *) Bugfix: nginx could not start on Solaris if the shared PCRE library
+ located in non-standard place was used.
+
+ *) Bugfix: the "proxy_hide_header" and "fastcgi_hide_header" directives
+ did not hide response header lines whose name was longer than 32
+ characters.
+ Thanks to Manlio Perillo.
+
+
+Changes with nginx 0.6.11 11 Sep 2007
+
+ *) Bugfix: active connection counter always increased if mail proxy was
+ used.
+
+ *) Bugfix: if backend returned response header only using non-buffered
+ proxy, then nginx closed backend connection on timeout.
+
+ *) Bugfix: nginx did not support several "Connection" request header
+ lines.
+
+ *) Bugfix: if the "max_fails" was set for upstream server, then after
+ first failure server weight was always one; the bug had appeared in
+ 0.6.6.
+
+
+Changes with nginx 0.6.10 03 Sep 2007
+
+ *) Feature: the "open_file_cache", "open_file_cache_retest", and
+ "open_file_cache_errors" directives.
+
+ *) Bugfix: socket leak; the bug had appeared in 0.6.7.
+
+ *) Bugfix: a charset set by the "charset" directive was not appended to
+ the "Content-Type" header set by $r->send_http_header().
+
+ *) Bugfix: a segmentation fault might occur in worker process if
+ /dev/poll method was used.
+
+
+Changes with nginx 0.6.9 28 Aug 2007
+
+ *) Bugfix: a worker process may got caught in an endless loop, if the
+ HTTPS protocol was used; the bug had appeared in 0.6.7.
+
+ *) Bugfix: if server listened on two addresses or ports and trailing
+ wildcard was used, then nginx did not run.
+
+ *) Bugfix: the "ip_hash" directive might incorrectly mark servers as
+ down.
+
+ *) Bugfix: nginx could not be built on amd64; the bug had appeared in
+ 0.6.8.
+
+
+Changes with nginx 0.6.8 20 Aug 2007
+
+ *) Change: now nginx tries to set the "worker_priority",
+ "worker_rlimit_nofile", "worker_rlimit_core", and
+ "worker_rlimit_sigpending" without super-user privileges.
+
+ *) Change: now nginx escapes space and "%" in request to a mail proxy
+ authentication server.
+
+ *) Change: now nginx escapes "%" in $memcached_key variable.
+
+ *) Bugfix: nginx used path relative to configuration prefix for
+ non-absolute configuration file path specified in the "-c" key; the
+ bug had appeared in 0.6.6.
+
+ *) Bugfix: nginx did not work on FreeBSD/sparc64.
+
+
+Changes with nginx 0.6.7 15 Aug 2007
+
+ *) Change: now the paths specified in the "include",
+ "auth_basic_user_file", "perl_modules", "ssl_certificate",
+ "ssl_certificate_key", and "ssl_client_certificate" directives are
+ relative to directory of nginx configuration file nginx.conf, but not
+ to nginx prefix directory.
+
+ *) Change: the --sysconfdir=PATH option in configure was canceled.
+
+ *) Change: the special make target "upgrade1" was defined for online
+ upgrade of 0.1.x versions.
+
+ *) Feature: the "server_name" and "valid_referers" directives support
+ regular expressions.
+
+ *) Feature: the "server" directive in the "upstream" context supports
+ the "backup" parameter.
+
+ *) Feature: the ngx_http_perl_module supports the
+ $r->discard_request_body.
+
+ *) Feature: the "add_header Last-Modified ..." directive changes the
+ "Last-Modified" response header line.
+
+ *) Bugfix: if a response different than 200 was returned to a request
+ with body and connection went to the keep-alive state after the
+ request, then nginx returned 400 for the next request.
+
+ *) Bugfix: a segmentation fault occurred in worker process if invalid
+ address was set in the "auth_http" directive.
+
+ *) Bugfix: now nginx uses default listen backlog value 511 on all
+ platforms except FreeBSD.
+ Thanks to Jiang Hong.
+
+ *) Bugfix: a worker process may got caught in an endless loop, if a
+ "server" inside "upstream" block was marked as "down"; the bug had
+ appeared in 0.6.6.
+
+ *) Bugfix: now Solaris sendfilev() is not used to transfer the client
+ request body to FastCGI-server via the unix domain socket.
+
+
+Changes with nginx 0.6.6 30 Jul 2007
+
+ *) Feature: the --sysconfdir=PATH option in configure.
+
+ *) Feature: named locations.
+
+ *) Feature: the $args variable can be set with the "set" directive.
+
+ *) Feature: the $is_args variable.
+
+ *) Bugfix: fair big weight upstream balancer.
+
+ *) Bugfix: if a client has closed connection to mail proxy then nginx
+ might not close connection to backend.
+
+ *) Bugfix: if the same host without specified port was used as backend
+ for HTTP and HTTPS, then nginx used only one port - 80 or 443.
+
+ *) Bugfix: fix building on Solaris/amd64 by Sun Studio 11 and early
+ versions; the bug had appeared in 0.6.4.
+
+
+Changes with nginx 0.6.5 23 Jul 2007
+
+ *) Feature: $nginx_version variable.
+ Thanks to Nick S. Grechukh.
+
+ *) Feature: the mail proxy supports AUTHENTICATE in IMAP mode.
+ Thanks to Maxim Dounin.
+
+ *) Feature: the mail proxy supports STARTTLS in SMTP mode.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: now nginx escapes space in $memcached_key variable.
+
+ *) Bugfix: nginx was incorrectly built by Sun Studio on Solaris/amd64.
+ Thanks to Jiang Hong.
+
+ *) Bugfix: of minor potential bugs.
+ Thanks to Coverity's Scan.
+
+
+Changes with nginx 0.6.4 17 Jul 2007
+
+ *) Security: the "msie_refresh" directive allowed XSS.
+ Thanks to Maxim Boguk.
+
+ *) Change: the "proxy_store" and "fastcgi_store" directives were
+ changed.
+
+ *) Feature: the "proxy_store_access" and "fastcgi_store_access"
+ directives.
+
+ *) Bugfix: nginx did not work on Solaris/sparc64 if it was built by Sun
+ Studio.
+ Thanks to Andrei Nigmatulin.
+
+ *) Workaround: for Sun Studio 12.
+ Thanks to Jiang Hong.
+
+
+Changes with nginx 0.6.3 12 Jul 2007
+
+ *) Feature: the "proxy_store" and "fastcgi_store" directives.
+
+ *) Bugfix: a segmentation fault might occur in worker process if the
+ "auth_http_header" directive was used.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: a segmentation fault occurred in worker process if the
+ CRAM-MD5 authentication method was used, but it was not enabled.
+
+ *) Bugfix: a segmentation fault might occur in worker process when the
+ HTTPS protocol was used in the "proxy_pass" directive.
+
+ *) Bugfix: a segmentation fault might occur in worker process if the
+ eventport method was used.
+
+ *) Bugfix: the "proxy_ignore_client_abort" and
+ "fastcgi_ignore_client_abort" directives did not work; the bug had
+ appeared in 0.5.13.
+
+
+Changes with nginx 0.6.2 09 Jul 2007
+
+ *) Bugfix: if the FastCGI header was split in records, then nginx passed
+ garbage in the header to a client.
+
+
+Changes with nginx 0.6.1 17 Jun 2007
+
+ *) Bugfix: in SSI parsing.
+
+ *) Bugfix: if remote SSI subrequest was used, then posterior local file
+ subrequest might transferred to client in wrong order.
+
+ *) Bugfix: large SSI inclusions buffered in temporary files were
+ truncated.
+
+ *) Bugfix: the perl $$ variable value in ngx_http_perl_module was equal
+ to the master process identification number.
+
+
+Changes with nginx 0.6.0 14 Jun 2007
+
+ *) Feature: the "server_name", "map", and "valid_referers" directives
+ support the "www.example.*" wildcards.
+
+
+Changes with nginx 0.5.25 11 Jun 2007
+
+ *) Bugfix: nginx could not be built with the
+ --without-http_rewrite_module parameter; the bug had appeared in
+ 0.5.24.
+
+
+Changes with nginx 0.5.24 06 Jun 2007
+
+ *) Security: the "ssl_verify_client" directive did not work if request
+ was made using HTTP/0.9.
+
+ *) Bugfix: a part of response body might be passed uncompressed if gzip
+ was used; the bug had appeared in 0.5.23.
+
+
+Changes with nginx 0.5.23 04 Jun 2007
+
+ *) Feature: the ngx_http_ssl_module supports Server Name Indication TLS
+ extension.
+
+ *) Feature: the "fastcgi_catch_stderr" directive.
+ Thanks to Nick S. Grechukh, OWOX project.
+
+ *) Bugfix: a segmentation fault occurred in master process if two
+ virtual servers should bind() to the overlapping ports.
+
+ *) Bugfix: if nginx was built with ngx_http_perl_module and perl
+ supported threads, then during second reconfiguration the error
+ messages "panic: MUTEX_LOCK" and "perl_parse() failed" were issued.
+
+ *) Bugfix: in the HTTPS protocol in the "proxy_pass" directive.
+
+
+Changes with nginx 0.5.22 29 May 2007
+
+ *) Bugfix: a big request body might not be passed to backend; the bug
+ had appeared in 0.5.21.
+
+
+Changes with nginx 0.5.21 28 May 2007
+
+ *) Bugfix: if server has more than about ten locations, then regex
+ locations might be chosen not in that order as they were specified.
+
+ *) Bugfix: a worker process may got caught in an endless loop on 64-bit
+ platform, if the 33-rd or next in succession backend has failed.
+ Thanks to Anton Povarov.
+
+ *) Bugfix: a bus error might occur on Solaris/sparc64 if the PCRE
+ library was used.
+ Thanks to Andrei Nigmatulin.
+
+ *) Bugfix: in the HTTPS protocol in the "proxy_pass" directive.
+
+
+Changes with nginx 0.5.20 07 May 2007
+
+ *) Feature: the "sendfile_max_chunk" directive.
+
+ *) Feature: the "$http_...", "$sent_http_...", and "$upstream_http_..."
+ variables may be changed using the "set" directive.
+
+ *) Bugfix: a segmentation fault might occur in worker process if the SSI
+ command 'if expr="$var = /"' was used.
+
+ *) Bugfix: trailing boundary of multipart range response was transferred
+ incorrectly.
+ Thanks to Evan Miller.
+
+ *) Bugfix: nginx did not work on Solaris/sparc64 if it was built by Sun
+ Studio.
+ Thanks to Andrei Nigmatulin.
+
+ *) Bugfix: the ngx_http_perl_module could not be built by Solaris make.
+ Thanks to Andrei Nigmatulin.
+
+
+Changes with nginx 0.5.19 24 Apr 2007
+
+ *) Change: now the $request_time variable has millisecond precision.
+
+ *) Change: the method $r->rflush of ngx_http_perl_module was renamed to
+ the $r->flush.
+
+ *) Feature: the $upstream_addr variable.
+
+ *) Feature: the "proxy_headers_hash_max_size" and
+ "proxy_headers_hash_bucket_size" directives.
+ Thanks to Volodymyr Kostyrko.
+
+ *) Bugfix: the files more than 2G could not be transferred using
+ sendfile and limit_rate on 64-bit platforms.
+
+ *) Bugfix: the files more than 2G could not be transferred using
+ sendfile on 64-bit Linux.
+
+
+Changes with nginx 0.5.18 19 Apr 2007
+
+ *) Feature: the ngx_http_sub_filter_module.
+
+ *) Feature: the "$upstream_http_..." variables.
+
+ *) Feature: now the $upstream_status and $upstream_response_time
+ variables keep data about all upstreams before X-Accel-Redirect.
+
+ *) Bugfix: a segmentation fault occurred in master process after first
+ reconfiguration and receiving any signal if nginx was built with
+ ngx_http_perl_module and perl did not support multiplicity; the bug
+ had appeared in 0.5.9.
+
+ *) Bugfix: if perl did not support multiplicity, then after
+ reconfiguration perl code did not work; the bug had appeared in
+ 0.3.38.
+
+
+Changes with nginx 0.5.17 02 Apr 2007
+
+ *) Change: now nginx always returns the 405 status for the TRACE method.
+
+ *) Feature: now nginx supports the "include" directive inside the
+ "types" block.
+
+ *) Bugfix: the $document_root variable usage in the "root" and "alias"
+ directives is disabled: this caused recursive stack overflow.
+
+ *) Bugfix: in the HTTPS protocol in the "proxy_pass" directive.
+
+ *) Bugfix: in some cases non-cacheable variables (such as $uri variable)
+ returned old cached value.
+
+
+Changes with nginx 0.5.16 26 Mar 2007
+
+ *) Bugfix: the C-class network was not used as hash key in the "ip_hash"
+ directive.
+ Thanks to Pavel Yarkovoy.
+
+ *) Bugfix: a segmentation fault might occur in worker process if a
+ charset was set in the "Content-Type" header line and the line has
+ trailing ";"; the bug had appeared in 0.3.50.
+
+ *) Bugfix: the "[alert] zero size buf" error when FastCGI server was
+ used and a request body written in a temporary file was multiple of
+ 32K.
+
+ *) Bugfix: nginx could not be built on Solaris without the --with-debug
+ option; the bug had appeared in 0.5.15.
+
+
+Changes with nginx 0.5.15 19 Mar 2007
+
+ *) Feature: the mail proxy supports authenticated SMTP proxying and the
+ "smtp_auth", "smtp_capabilities", and "xclient" directives.
+ Thanks to Anton Yuzhaninov and Maxim Dounin.
+
+ *) Feature: now the keep-alive connections are closed just after
+ receiving the reconfiguration signal.
+
+ *) Change: the "imap" and "auth" directives were renamed to the "mail"
+ and "pop3_auth" directives.
+
+ *) Bugfix: a segmentation fault occurred in worker process if the
+ CRAM-MD5 authentication method was used and the APOP method was
+ disabled.
+
+ *) Bugfix: if the "starttls only" directive was used in POP3 protocol,
+ then nginx allowed authentication without switching to the SSL mode.
+
+ *) Bugfix: worker processes did not exit after reconfiguration and did
+ not rotate logs if the eventport method was used.
+
+ *) Bugfix: a worker process may got caught in an endless loop, if the
+ "ip_hash" directive was used.
+
+ *) Bugfix: now nginx does not log some alerts if eventport or /dev/poll
+ methods are used.
+
+
+Changes with nginx 0.5.14 23 Feb 2007
+
+ *) Bugfix: nginx ignored superfluous closing "}" in the end of
+ configuration file.
+
+
+Changes with nginx 0.5.13 19 Feb 2007
+
+ *) Feature: the COPY and MOVE methods.
+
+ *) Bugfix: the ngx_http_realip_module set garbage for requests passed
+ via keep-alive connection.
+
+ *) Bugfix: nginx did not work on big-endian 64-bit Linux.
+ Thanks to Andrei Nigmatulin.
+
+ *) Bugfix: now when IMAP/POP3 proxy receives too long command it closes
+ the connection right away, but not after timeout.
+
+ *) Bugfix: if the "epoll" method was used and a client closed a
+ connection prematurely, then nginx closed the connection after a send
+ timeout only.
+
+ *) Bugfix: nginx could not be built on platforms different from i386,
+ amd64, sparc, and ppc; the bug had appeared in 0.5.8.
+
+
+Changes with nginx 0.5.12 12 Feb 2007
+
+ *) Bugfix: nginx could not be built on platforms different from i386,
+ amd64, sparc, and ppc; the bug had appeared in 0.5.8.
+
+ *) Bugfix: a segmentation fault might occur in worker process if the
+ temporary files were used while working with FastCGI server; the bug
+ had appeared in 0.5.8.
+
+ *) Bugfix: a segmentation fault might occur in worker process if the
+ $fastcgi_script_name variable was logged.
+
+ *) Bugfix: ngx_http_perl_module could not be built on Solaris.
+
+
+Changes with nginx 0.5.11 05 Feb 2007
+
+ *) Feature: now configure detects system PCRE library in MacPorts.
+ Thanks to Chris McGrath.
+
+ *) Bugfix: the response was incorrect if several ranges were requested;
+ the bug had appeared in 0.5.6.
+
+ *) Bugfix: the "create_full_put_path" directive could not create the
+ intermediate directories if no "dav_access" directive was set.
+ Thanks to Evan Miller.
+
+ *) Bugfix: the "0" response code might be logged in the access_log
+ instead of the "400" and "408" error codes.
+
+ *) Bugfix: a segmentation fault might occur in worker process if nginx
+ was built with -O2 optimization.
+
+
+Changes with nginx 0.5.10 26 Jan 2007
+
+ *) Bugfix: while online executable file upgrade the new master process
+ did not inherit the listening sockets; the bug had appeared in 0.5.9.
+
+ *) Bugfix: a segmentation fault might occur in worker process if nginx
+ was built with -O2 optimization; the bug had appeared in 0.5.1.
+
+
+Changes with nginx 0.5.9 25 Jan 2007
+
+ *) Change: now the ngx_http_memcached_module uses the $memcached_key
+ variable value as a key.
+
+ *) Feature: the $memcached_key variable.
+
+ *) Feature: the "clean" parameter in the "client_body_in_file_only"
+ directive.
+
+ *) Feature: the "env" directive.
+
+ *) Feature: the "sendfile" directive is available inside the "if" block.
+
+ *) Feature: now on failure of the writing to access nginx logs a message
+ to error_log, but not more often than once a minute.
+
+ *) Bugfix: the "access_log off" directive did not always turn off the
+ logging.
+
+
+Changes with nginx 0.5.8 19 Jan 2007
+
+ *) Bugfix: a segmentation fault might occur if
+ "client_body_in_file_only on" was used and a request body was small.
+
+ *) Bugfix: a segmentation fault occurred if
+ "client_body_in_file_only on" and "proxy_pass_request_body off" or
+ "fastcgi_pass_request_body off" directives were used, and nginx
+ switched to a next upstream.
+
+ *) Bugfix: if the "proxy_buffering off" directive was used and a client
+ connection was non-active, then the connection was closed after send
+ timeout; the bug had appeared in 0.4.7.
+
+ *) Bugfix: if the "epoll" method was used and a client closed a
+ connection prematurely, then nginx closed the connection after a send
+ timeout only.
+
+ *) Bugfix: the "[alert] zero size buf" error when FastCGI server was
+ used.
+
+ *) Bugfixes in the "limit_zone" directive.
+
+
+Changes with nginx 0.5.7 15 Jan 2007
+
+ *) Feature: the ssl_session_cache storage optimization.
+
+ *) Bugfixes in the "ssl_session_cache" and "limit_zone" directives.
+
+ *) Bugfix: the segmentation fault was occurred on start or while
+ reconfiguration if the "ssl_session_cache" or "limit_zone" directives
+ were used on 64-bit platforms.
+
+ *) Bugfix: a segmentation fault occurred if the "add_before_body" or
+ "add_after_body" directives were used and there was no "Content-Type"
+ header line in response.
+
+ *) Bugfix: the OpenSSL library was always built with the threads
+ support.
+ Thanks to Den Ivanov.
+
+ *) Bugfix: the PCRE-6.5+ library and the icc compiler compatibility.
+
+
+Changes with nginx 0.5.6 09 Jan 2007
+
+ *) Change: now the ngx_http_index_module ignores all methods except the
+ GET, HEAD, and POST methods.
+
+ *) Feature: the ngx_http_limit_zone_module.
+
+ *) Feature: the $binary_remote_addr variable.
+
+ *) Feature: the "ssl_session_cache" directives of the
+ ngx_http_ssl_module and ngx_imap_ssl_module.
+
+ *) Feature: the DELETE method supports recursive removal.
+
+ *) Bugfix: the byte-ranges were transferred incorrectly if the
+ $r->sendfile() was used.
+
+
+Changes with nginx 0.5.5 24 Dec 2006
+
+ *) Change: the -v switch does not show compiler information any more.
+
+ *) Feature: the -V switch.
+
+ *) Feature: the "worker_rlimit_core" directive supports size in K, M,
+ and G.
+
+ *) Bugfix: the nginx.pm module now could be installed by an unprivileged
+ user.
+
+ *) Bugfix: a segmentation fault might occur if the $r->request_body or
+ $r->request_body_file methods were used.
+
+ *) Bugfix: the ppc platform specific bugs.
+
+
+Changes with nginx 0.5.4 15 Dec 2006
+
+ *) Feature: the "perl" directive may be used inside the "limit_except"
+ block.
+
+ *) Bugfix: the ngx_http_dav_module required the "Date" request header
+ line for the DELETE method.
+
+ *) Bugfix: if one only parameter was used in the "dav_access" directive,
+ then nginx might report about configuration error.
+
+ *) Bugfix: a segmentation fault might occur if the $host variable was
+ used; the bug had appeared in 0.4.14.
+
+
+Changes with nginx 0.5.3 13 Dec 2006
+
+ *) Feature: the ngx_http_perl_module supports the $r->status,
+ $r->log_error, and $r->sleep methods.
+
+ *) Feature: the $r->variable method supports variables that do not exist
+ in nginx configuration.
+
+ *) Bugfix: the $r->has_request_body method did not work.
+
+
+Changes with nginx 0.5.2 11 Dec 2006
+
+ *) Bugfix: if the "proxy_pass" directive used the name of the "upstream"
+ block, then nginx tried to resolve the name; the bug had appeared in
+ 0.5.1.
+
+
+Changes with nginx 0.5.1 11 Dec 2006
+
+ *) Bugfix: the "post_action" directive might not run after a
+ unsuccessful completion of a request.
+
+ *) Workaround: for Eudora for Mac; the bug had appeared in 0.4.11.
+ Thanks to Bron Gondwana.
+
+ *) Bugfix: if the "upstream" name was used in the "fastcgi_pass", then
+ the message "no port in upstream" was issued; the bug had appeared in
+ 0.5.0.
+
+ *) Bugfix: if the "proxy_pass" and "fastcgi_pass" directives used the
+ same servers but different ports, then these directives uses the
+ first described port; the bug had appeared in 0.5.0.
+
+ *) Bugfix: if the "proxy_pass" and "fastcgi_pass" directives used the
+ unix domain sockets, then these directives used first described
+ socket; the bug had appeared in 0.5.0.
+
+ *) Bugfix: ngx_http_auth_basic_module ignored the user if it was in the
+ last line in the password file and there was no the carriage return,
+ the line feed, or the ":" symbol after the password.
+
+ *) Bugfix: the $upstream_response_time variable might be equal to
+ "0.000", although response time was more than 1 millisecond.
+
+
+Changes with nginx 0.5.0 04 Dec 2006
+
+ *) Change: the parameters in the "%name" form in the "log_format"
+ directive are not supported anymore.
+
+ *) Change: the "proxy_upstream_max_fails",
+ "proxy_upstream_fail_timeout", "fastcgi_upstream_max_fails",
+ "fastcgi_upstream_fail_timeout", "memcached_upstream_max_fails", and
+ "memcached_upstream_fail_timeout" directives are not supported
+ anymore.
+
+ *) Feature: the "server" directive in the "upstream" context supports
+ the "max_fails", "fail_timeout", and "down" parameters.
+
+ *) Feature: the "ip_hash" directive inside the "upstream" block.
+
+ *) Feature: the WAIT status in the "Auth-Status" header line of the
+ IMAP/POP3 proxy authentication server response.
+
+ *) Bugfix: nginx could not be built on 64-bit platforms; the bug had
+ appeared in 0.4.14.
+
+
+Changes with nginx 0.4.14 27 Nov 2006
+
+ *) Feature: the "proxy_pass_error_message" directive in IMAP/POP3 proxy.
+
+ *) Feature: now configure detects system PCRE library on FreeBSD, Linux,
+ and NetBSD.
+
+ *) Bugfix: ngx_http_perl_module did not work with perl built with the
+ threads support; the bug had appeared in 0.3.38.
+
+ *) Bugfix: ngx_http_perl_module did not work if perl was called
+ recursively.
+
+ *) Bugfix: nginx ignored a host name in a request line.
+
+ *) Bugfix: a worker process may got caught in an endless loop, if a
+ FastCGI server sent too many data to the stderr.
+
+ *) Bugfix: the $upstream_response_time variable may be negative if the
+ system time was changed backward.
+
+ *) Bugfix: the "Auth-Login-Attempt" parameter was not sent to IMAP/POP3
+ proxy authentication server when POP3 was used.
+
+ *) Bugfix: a segmentation fault might occur if connect to IMAP/POP3
+ proxy authentication server failed.
+
+
+Changes with nginx 0.4.13 15 Nov 2006
+
+ *) Feature: the "proxy_pass" directive may be used inside the
+ "limit_except" block.
+
+ *) Feature: the "limit_except" directive supports all WebDAV methods.
+
+ *) Bugfix: if the "add_before_body" directive was used without the
+ "add_after_body" directive, then a response did not transferred
+ complete.
+
+ *) Bugfix: a large request body did not receive if the epoll method and
+ the deferred accept() were used.
+
+ *) Bugfix: a charset could not be set for ngx_http_autoindex_module
+ responses; the bug had appeared in 0.3.50.
+
+ *) Bugfix: the "[alert] zero size buf" error when FastCGI server was
+ used;
+
+ *) Bugfix: the --group= configuration parameter was ignored.
+ Thanks to Thomas Moschny.
+
+ *) Bugfix: the 50th subrequest in SSI response did not work; the bug had
+ appeared in 0.3.50.
+
+
+Changes with nginx 0.4.12 31 Oct 2006
+
+ *) Feature: the ngx_http_perl_module supports the $r->variable method.
+
+ *) Bugfix: if a big static file was included using SSI in a response,
+ then the response may be transferred incomplete.
+
+ *) Bugfix: nginx did not omit the "#fragment" part in URI.
+
+
+Changes with nginx 0.4.11 25 Oct 2006
+
+ *) Feature: the POP3 proxy supports the AUTH LOGIN PLAIN and CRAM-MD5.
+
+ *) Feature: the ngx_http_perl_module supports the $r->allow_ranges
+ method.
+
+ *) Bugfix: if the APOP was enabled in the POP3 proxy, then the USER/PASS
+ commands might not work; the bug had appeared in 0.4.10.
+
+
+Changes with nginx 0.4.10 23 Oct 2006
+
+ *) Feature: the POP3 proxy supports the APOP command.
+
+ *) Bugfix: if the select, poll or /dev/poll methods were used, then
+ while waiting authentication server response the IMAP/POP3 proxy
+ hogged CPU.
+
+ *) Bugfix: a segmentation fault might occur if the $server_addr variable
+ was used in the "map" directive.
+
+ *) Bugfix: the ngx_http_flv_module did not support the byte ranges for
+ full responses; the bug had appeared in 0.4.7.
+
+ *) Bugfix: nginx could not be built on Debian amd64; the bug had
+ appeared in 0.4.9.
+
+
+Changes with nginx 0.4.9 13 Oct 2006
+
+ *) Feature: the "set" parameter in the "include" SSI command.
+
+ *) Feature: the ngx_http_perl_module now tests the nginx.pm module
+ version.
+
+
+Changes with nginx 0.4.8 11 Oct 2006
+
+ *) Bugfix: if an "include" SSI command were before another "include" SSI
+ command with a "wait" parameter, then the "wait" parameter might not
+ work.
+
+ *) Bugfix: the ngx_http_flv_module added the FLV header to the full
+ responses.
+ Thanks to Alexey Kovyrin.
+
+
+Changes with nginx 0.4.7 10 Oct 2006
+
+ *) Feature: the ngx_http_flv_module.
+
+ *) Feature: the $request_body_file variable.
+
+ *) Feature: the "charset" and "source_charset" directives support the
+ variables.
+
+ *) Bugfix: if an "include" SSI command were before another "include" SSI
+ command with a "wait" parameter, then the "wait" parameter might not
+ work.
+
+ *) Bugfix: if the "proxy_buffering off" directive was used or while
+ working with memcached the connections might not be closed on
+ timeout.
+
+ *) Bugfix: nginx did not run on 64-bit platforms except amd64, sparc64,
+ and ppc64.
+
+
+Changes with nginx 0.4.6 06 Oct 2006
+
+ *) Bugfix: nginx did not run on 64-bit platforms except amd64, sparc64,
+ and ppc64.
+
+ *) Bugfix: nginx sent the chunked response for HTTP/1.1 request,
+ if its length was set by text string in the
+ $r->headers_out("Content-Length", ...) method.
+
+ *) Bugfix: after redirecting error by an "error_page" directive any
+ ngx_http_rewrite_module directive returned this error code; the bug
+ had appeared in 0.4.4.
+
+
+Changes with nginx 0.4.5 02 Oct 2006
+
+ *) Bugfix: nginx could not be built on Linux and Solaris; the bug had
+ appeared in 0.4.4.
+
+
+Changes with nginx 0.4.4 02 Oct 2006
+
+ *) Feature: the $scheme variable.
+
+ *) Feature: the "expires" directive supports the "max" parameter.
+
+ *) Feature: the "include" directive supports the "*" mask.
+ Thanks to Jonathan Dance.
+
+ *) Bugfix: the "return" directive always overrode the "error_page"
+ response code redirected by the "error_page" directive.
+
+ *) Bugfix: a segmentation fault occurred if zero-length body was in PUT
+ method.
+
+ *) Bugfix: the redirect was changed incorrectly if the variables were
+ used in the "proxy_redirect" directive.
+
+
+Changes with nginx 0.4.3 26 Sep 2006
+
+ *) Change: now the 499 error could not be redirected using an
+ "error_page" directive.
+
+ *) Feature: the Solaris 10 event ports support.
+
+ *) Feature: the ngx_http_browser_module.
+
+ *) Bugfix: a segmentation fault may occur while redirecting the 400
+ error to the proxied server using a "proxy_pass" directive.
+
+ *) Bugfix: a segmentation fault occurred if an unix domain socket was
+ used in a "proxy_pass" directive; the bug had appeared in 0.3.47.
+
+ *) Bugfix: SSI did work with memcached and nonbuffered responses.
+
+ *) Workaround: of the Sun Studio PAUSE hardware capability bug.
+
+
+Changes with nginx 0.4.2 14 Sep 2006
+
+ *) Bugfix: the O_NOATIME flag support on Linux was canceled; the bug had
+ appeared in 0.4.1.
+
+
+Changes with nginx 0.4.1 14 Sep 2006
+
+ *) Bugfix: the DragonFlyBSD compatibility.
+ Thanks to Pavel Nazarov.
+
+ *) Workaround: of bug in 64-bit Linux sendfile(), when file is more than
+ 2G.
+
+ *) Feature: now on Linux nginx uses O_NOATIME flag for static requests.
+ Thanks to Yusuf Goolamabbas.
+
+
+Changes with nginx 0.4.0 30 Aug 2006
+
+ *) Change in internal API: the HTTP modules initialization was moved
+ from the init module phase to the HTTP postconfiguration phase.
+
+ *) Change: now the request body is not read beforehand for the
+ ngx_http_perl_module: it's required to start the reading using the
+ $r->has_request_body method.
+
+ *) Feature: the ngx_http_perl_module supports the DECLINED return code.
+
+ *) Feature: the ngx_http_dav_module supports the incoming "Date" header
+ line for the PUT method.
+
+ *) Feature: the "ssi" directive is available inside the "if" block.
+
+ *) Bugfix: a segmentation fault occurred if there was an "index"
+ directive with variables and the first index name was without
+ variables; the bug had appeared in 0.1.29.
+
+
+Changes with nginx 0.3.61 28 Aug 2006
+
+ *) Change: now the "tcp_nodelay" directive is turned on by default.
+
+ *) Feature: the "msie_refresh" directive.
+
+ *) Feature: the "recursive_error_pages" directive.
+
+ *) Bugfix: the "rewrite" directive returned incorrect redirect, if the
+ redirect had the captured escaped symbols from original URI.
+
+
+Changes with nginx 0.3.60 18 Aug 2006
+
+ *) Bugfix: a worker process may got caught in an endless loop while an
+ error redirection; the bug had appeared in 0.3.59.
+
+
+Changes with nginx 0.3.59 16 Aug 2006
+
+ *) Feature: now is possible to do several redirection using the
+ "error_page" directive.
+
+ *) Bugfix: the "dav_access" directive did not support three parameters.
+
+ *) Bugfix: the "error_page" directive did not changes the "Content-Type"
+ header line after the "X-Accel-Redirect" was used; the bug had
+ appeared in 0.3.58.
+
+
+Changes with nginx 0.3.58 14 Aug 2006
+
+ *) Feature: the "error_page" directive supports the variables.
+
+ *) Change: now the procfs interface instead of sysctl is used on Linux.
+
+ *) Change: now the "Content-Type" header line is inherited from first
+ response when the "X-Accel-Redirect" was used.
+
+ *) Bugfix: the "error_page" directive did not redirect the 413 error.
+
+ *) Bugfix: the trailing "?" did not remove old arguments if no new
+ arguments were added to a rewritten URI.
+
+ *) Bugfix: nginx could not run on 64-bit FreeBSD 7.0-CURRENT.
+
+
+Changes with nginx 0.3.57 09 Aug 2006
+
+ *) Feature: the $ssl_client_serial variable.
+
+ *) Bugfix: in the "!-e" operator of the "if" directive.
+ Thanks to Andrian Budanstov.
+
+ *) Bugfix: while a client certificate verification nginx did not send to
+ a client the required certificates information.
+
+ *) Bugfix: the $document_root variable did not support the variables in
+ the "root" directive.
+
+
+Changes with nginx 0.3.56 04 Aug 2006
+
+ *) Feature: the "dav_access" directive.
+
+ *) Feature: the "if" directive supports the "-d", "!-d", "-e", "!-e",
+ "-x", and "!-x" operators.
+
+ *) Bugfix: a segmentation fault occurred if a request returned a
+ redirect and some sent to client header lines were logged in the
+ access log.
+
+
+Changes with nginx 0.3.55 28 Jul 2006
+
+ *) Feature: the "stub" parameter in the "include" SSI command.
+
+ *) Feature: the "block" SSI command.
+
+ *) Feature: the unicode2nginx script was added to contrib.
+
+ *) Bugfix: if a "root" was specified by variable only, then the root was
+ relative to a server prefix.
+
+ *) Bugfix: if the request contained "//" or "/./" and escaped symbols
+ after them, then the proxied request was sent unescaped.
+
+ *) Bugfix: the $r->header_in("Cookie") of the ngx_http_perl_module now
+ returns all "Cookie" header lines.
+
+ *) Bugfix: a segmentation fault occurred if
+ "client_body_in_file_only on" was used and nginx switched to a next
+ upstream.
+
+ *) Bugfix: on some condition while reconfiguration character codes
+ inside the "charset_map" may be treated invalid; the bug had appeared
+ in 0.3.50.
+
+
+Changes with nginx 0.3.54 11 Jul 2006
+
+ *) Feature: nginx now logs the subrequest information to the error log.
+
+ *) Feature: the "proxy_next_upstream", "fastcgi_next_upstream", and
+ "memcached_next_upstream" directives support the "off" parameter.
+
+ *) Feature: the "debug_connection" directive supports the CIDR address
+ form.
+
+ *) Bugfix: if a response of proxied server or FastCGI server was
+ converted from UTF-8 or back, then it may be transferred incomplete.
+
+ *) Bugfix: the $upstream_response_time variable had the time of the
+ first request to a backend only.
+
+ *) Bugfix: nginx could not be built on amd64 platform; the bug had
+ appeared in 0.3.53.
+
+
+Changes with nginx 0.3.53 07 Jul 2006
+
+ *) Change: the "add_header" directive adds the string to 204, 301, and
+ 302 responses.
+
+ *) Feature: the "server" directive in the "upstream" context supports
+ the "weight" parameter.
+
+ *) Feature: the "server_name" directive supports the "*" wildcard.
+
+ *) Feature: nginx supports the request body size more than 2G.
+
+ *) Bugfix: if a client was successfully authorized using "satisfy_any
+ on", then anyway the message "access forbidden by rule" was written
+ in the log.
+
+ *) Bugfix: the "PUT" method may erroneously not create a file and return
+ the 409 code.
+
+ *) Bugfix: if the IMAP/POP3 backend returned an error, then nginx
+ continued proxying anyway.
+
+
+Changes with nginx 0.3.52 03 Jul 2006
+
+ *) Change: the ngx_http_index_module behavior for the "POST /" requests
+ is reverted to the 0.3.40 version state: the module now does not
+ return the 405 error.
+
+ *) Bugfix: the worker process may got caught in an endless loop if the
+ limit rate was used; the bug had appeared in 0.3.37.
+
+ *) Bugfix: ngx_http_charset_module logged "unknown charset" alert, even
+ if the recoding was not needed; the bug had appeared in 0.3.50.
+
+ *) Bugfix: if a code response of the PUT request was 409, then a
+ temporary file was not removed.
+
+
+Changes with nginx 0.3.51 30 Jun 2006
+
+ *) Bugfix: the "<" symbols might disappeared some conditions in the SSI;
+ the bug had appeared in 0.3.50.
+
+
+Changes with nginx 0.3.50 28 Jun 2006
+
+ *) Change: the "proxy_redirect_errors" and "fastcgi_redirect_errors"
+ directives was renamed to the "proxy_intercept_errors" and
+ "fastcgi_intercept_errors" directives.
+
+ *) Feature: the ngx_http_charset_module supports the recoding from the
+ single byte encodings to the UTF-8 encoding and back.
+
+ *) Feature: the "X-Accel-Charset" response header line is supported in
+ proxy and FastCGI mode.
+
+ *) Bugfix: the "\" escape symbol in the "\"" and "\'" pairs in the SSI
+ command was removed only if the command also has the "$" symbol.
+
+ *) Bugfix: the "