Repository: dsuryd/dotnetify-react-demo-vs2017
Branch: master
Commit: c1f80d7cdb75
Files: 280
Total size: 5.3 MB
Directory structure:
gitextract_j6oj_ypb/
├── .gitattributes
├── .gitignore
├── LICENSE
├── MicrofrontendTemplate/
│ ├── .gitignore
│ ├── .template.config/
│ │ └── template.json
│ ├── Microfrontend.sln
│ ├── Portal/
│ │ ├── Portal.csproj
│ │ ├── Properties/
│ │ │ └── launchSettings.json
│ │ ├── appsettings.json
│ │ ├── client/
│ │ │ ├── auth.js
│ │ │ ├── components/
│ │ │ │ ├── App.js
│ │ │ │ ├── Landing.js
│ │ │ │ ├── Login.js
│ │ │ │ └── Portal.js
│ │ │ ├── index.js
│ │ │ └── loader.js
│ │ ├── package.json
│ │ ├── run.bat
│ │ ├── server/
│ │ │ ├── Controllers/
│ │ │ │ └── LoginController.cs
│ │ │ ├── Program.cs
│ │ │ └── Startup.cs
│ │ ├── tempkey.rsa
│ │ ├── webpack.config.js
│ │ └── wwwroot/
│ │ ├── 404.html
│ │ └── index.html
│ ├── README.md
│ ├── ReactDashboardApp/
│ │ ├── Properties/
│ │ │ └── launchSettings.json
│ │ ├── README.md
│ │ ├── ReactDashboardApp.csproj
│ │ ├── appsettings.json
│ │ ├── client/
│ │ │ ├── components/
│ │ │ │ ├── ActivitiesCard.js
│ │ │ │ ├── Dashboard.js
│ │ │ │ └── InfoCard.js
│ │ │ └── index.js
│ │ ├── package.json
│ │ ├── run.bat
│ │ ├── server/
│ │ │ ├── Program.cs
│ │ │ ├── Services/
│ │ │ │ └── MockLiveDataService.cs
│ │ │ ├── Startup.cs
│ │ │ └── ViewModels/
│ │ │ └── Dashboard.cs
│ │ ├── webpack.config.js
│ │ └── wwwroot/
│ │ └── index.html
│ ├── ReactFormApp/
│ │ ├── Properties/
│ │ │ └── launchSettings.json
│ │ ├── README.md
│ │ ├── ReactFormApp.csproj
│ │ ├── appsettings.json
│ │ ├── client/
│ │ │ ├── components/
│ │ │ │ ├── AddressForm.js
│ │ │ │ ├── BasicInfoForm.js
│ │ │ │ ├── Form.js
│ │ │ │ └── NewCustomerDialog.js
│ │ │ └── index.js
│ │ ├── package.json
│ │ ├── run.bat
│ │ ├── server/
│ │ │ ├── Program.cs
│ │ │ ├── Services/
│ │ │ │ ├── Customer.cs
│ │ │ │ ├── CustomerFormData.cs
│ │ │ │ └── CustomerRepository.cs
│ │ │ ├── Startup.cs
│ │ │ └── ViewModels/
│ │ │ ├── AddressForm.cs
│ │ │ ├── CustomerForm.cs
│ │ │ ├── NewCustomerForm.cs
│ │ │ ├── PersonForm.cs
│ │ │ └── PhoneForm.cs
│ │ ├── webpack.config.js
│ │ └── wwwroot/
│ │ └── index.html
│ ├── ReactTodoApp/
│ │ ├── Properties/
│ │ │ └── launchSettings.json
│ │ ├── README.md
│ │ ├── ReactTodoApp.csproj
│ │ ├── appsettings.json
│ │ ├── client/
│ │ │ ├── components/
│ │ │ │ └── TodoList.js
│ │ │ └── index.js
│ │ ├── package.json
│ │ ├── run.bat
│ │ ├── server/
│ │ │ ├── Program.cs
│ │ │ ├── Startup.cs
│ │ │ └── ViewModels/
│ │ │ └── TodoList.cs
│ │ ├── webpack.config.js
│ │ └── wwwroot/
│ │ └── index.html
│ ├── Shared/
│ │ ├── IdentityServer/
│ │ │ ├── IdentityServerClient.cs
│ │ │ ├── IdentityServerConfig.cs
│ │ │ └── IdentityServerSettings.cs
│ │ └── Shared.csproj
│ ├── VueTodoApp/
│ │ ├── Properties/
│ │ │ └── launchSettings.json
│ │ ├── README.md
│ │ ├── VueTodoApp.csproj
│ │ ├── appsettings.json
│ │ ├── client/
│ │ │ ├── components/
│ │ │ │ └── TodoList.vue
│ │ │ └── index.js
│ │ ├── package.json
│ │ ├── run.bat
│ │ ├── server/
│ │ │ ├── Program.cs
│ │ │ ├── Startup.cs
│ │ │ └── ViewModels/
│ │ │ └── TodoList.cs
│ │ ├── webpack.config.js
│ │ └── wwwroot/
│ │ └── index.html
│ ├── global.json
│ ├── heroku-deploy/
│ │ ├── Portal/
│ │ │ ├── Dockerfile
│ │ │ ├── appsettings.json
│ │ │ ├── build.bat
│ │ │ ├── deploy.bat
│ │ │ └── excludedfiles.txt
│ │ ├── ReactDashboardApp/
│ │ │ ├── Dockerfile
│ │ │ ├── appsettings.json
│ │ │ ├── build.bat
│ │ │ ├── deploy.bat
│ │ │ └── excludedfiles.txt
│ │ └── nginx/
│ │ ├── Dockerfile
│ │ ├── deploy.bat
│ │ └── nginx.conf
│ ├── nginx/
│ │ ├── .gitignore
│ │ ├── conf/
│ │ │ ├── fastcgi.conf
│ │ │ ├── fastcgi_params
│ │ │ ├── koi-utf
│ │ │ ├── koi-win
│ │ │ ├── mime.types
│ │ │ ├── nginx.conf
│ │ │ ├── scgi_params
│ │ │ ├── uwsgi_params
│ │ │ └── win-utf
│ │ ├── contrib/
│ │ │ ├── README
│ │ │ ├── geo2nginx.pl
│ │ │ ├── unicode2nginx/
│ │ │ │ ├── koi-utf
│ │ │ │ ├── unicode-to-nginx.pl
│ │ │ │ └── win-utf
│ │ │ └── vim/
│ │ │ ├── ftdetect/
│ │ │ │ └── nginx.vim
│ │ │ ├── ftplugin/
│ │ │ │ └── nginx.vim
│ │ │ ├── indent/
│ │ │ │ └── nginx.vim
│ │ │ └── syntax/
│ │ │ └── nginx.vim
│ │ ├── docs/
│ │ │ ├── CHANGES
│ │ │ ├── CHANGES.ru
│ │ │ ├── LICENSE
│ │ │ ├── OpenSSL.LICENSE
│ │ │ ├── PCRE.LICENCE
│ │ │ ├── README
│ │ │ └── zlib.LICENSE
│ │ ├── html/
│ │ │ ├── 50x.html
│ │ │ └── index.html
│ │ ├── run.bat
│ │ └── stop.bat
│ └── run.bat
├── README.md
├── ReactTemplate/
│ ├── README.md
│ ├── content/
│ │ ├── .gitignore
│ │ ├── .template.config/
│ │ │ └── template.json
│ │ ├── client/
│ │ │ ├── app.tsx
│ │ │ ├── auth.ts
│ │ │ ├── components/
│ │ │ │ ├── BasePage.tsx
│ │ │ │ ├── Header.tsx
│ │ │ │ ├── Sidebar.tsx
│ │ │ │ ├── dashboard/
│ │ │ │ │ ├── InfoBox.tsx
│ │ │ │ │ ├── RecentActivities.tsx
│ │ │ │ │ ├── ServerUsage.tsx
│ │ │ │ │ ├── Traffic.tsx
│ │ │ │ │ └── Utilization.tsx
│ │ │ │ └── table/
│ │ │ │ ├── InlineEdit.tsx
│ │ │ │ └── Pagination.tsx
│ │ │ ├── routes.tsx
│ │ │ ├── styles/
│ │ │ │ ├── app.css
│ │ │ │ ├── styles.ts
│ │ │ │ └── theme-default.ts
│ │ │ └── views/
│ │ │ ├── App.tsx
│ │ │ ├── AppLayout.tsx
│ │ │ ├── Dashboard.tsx
│ │ │ ├── FormPage.tsx
│ │ │ ├── LoginPage.tsx
│ │ │ └── TablePage.tsx
│ │ ├── package.json
│ │ ├── projectName.csproj
│ │ ├── projectName.sln
│ │ ├── server/
│ │ │ ├── AuthServer.cs
│ │ │ ├── Program.cs
│ │ │ ├── Services/
│ │ │ │ ├── EmployeeService.cs
│ │ │ │ ├── MockLiveDataService.cs
│ │ │ │ └── employees.json
│ │ │ └── ViewModels/
│ │ │ ├── AppLayout.cs
│ │ │ ├── Dashboard.cs
│ │ │ ├── Form.cs
│ │ │ └── Table.cs
│ │ ├── tsconfig.json
│ │ ├── webpack.config.js
│ │ └── wwwroot/
│ │ ├── 404.html
│ │ └── index.html
│ └── template.nuspec
└── _archive/
├── HelloWorld/
│ ├── HelloWorld.cs
│ ├── HelloWorld.csproj
│ ├── HelloWorld.sln
│ ├── Program.cs
│ ├── Properties/
│ │ └── launchSettings.json
│ ├── Startup.cs
│ ├── package.json
│ ├── src/
│ │ ├── HelloWorld.jsx
│ │ └── app.js
│ ├── webpack.config.js
│ └── wwwroot/
│ ├── bundle.js
│ └── index.html
├── LiveChart/
│ ├── IISPublishingSteps.md
│ ├── LiveChart.cs
│ ├── LiveChart.csproj
│ ├── LiveChart.sln
│ ├── Program.cs
│ ├── Properties/
│ │ └── launchSettings.json
│ ├── Startup.cs
│ ├── compilerconfig.json
│ ├── compilerconfig.json.defaults
│ ├── package.json
│ ├── src/
│ │ ├── LiveChart.jsx
│ │ └── app.js
│ ├── webpack.config.js
│ └── wwwroot/
│ ├── bundle.js
│ └── index.html
├── README.md
├── ReactTemplateTS/
│ ├── .editorconfig
│ ├── README.md
│ ├── content/
│ │ ├── .babelrc
│ │ ├── .gitignore
│ │ ├── .template.config/
│ │ │ └── template.json
│ │ ├── client/
│ │ │ ├── app.tsx
│ │ │ ├── auth.tsx
│ │ │ ├── components/
│ │ │ │ ├── BasePage.tsx
│ │ │ │ ├── Header.tsx
│ │ │ │ ├── Sidebar.tsx
│ │ │ │ ├── dashboard/
│ │ │ │ │ ├── InfoBox.tsx
│ │ │ │ │ ├── RecentActivities.tsx
│ │ │ │ │ ├── ServerUsage.tsx
│ │ │ │ │ ├── Traffic.tsx
│ │ │ │ │ └── Utilization.tsx
│ │ │ │ └── table/
│ │ │ │ ├── InlineEdit.tsx
│ │ │ │ └── Pagination.tsx
│ │ │ ├── routes.tsx
│ │ │ ├── styles/
│ │ │ │ ├── app.css
│ │ │ │ ├── styles.ts
│ │ │ │ └── theme-default.ts
│ │ │ └── views/
│ │ │ ├── App.tsx
│ │ │ ├── AppLayout.tsx
│ │ │ ├── Dashboard.tsx
│ │ │ ├── FormPage.tsx
│ │ │ ├── LoginPage.tsx
│ │ │ └── TablePage.tsx
│ │ ├── dotnetify_react_template.csproj
│ │ ├── dotnetify_react_template.sln
│ │ ├── images.d.ts
│ │ ├── package.json
│ │ ├── server/
│ │ │ ├── AuthServer.cs
│ │ │ ├── Program.cs
│ │ │ ├── Services/
│ │ │ │ ├── EmployeeService.cs
│ │ │ │ ├── MockLiveDataService.cs
│ │ │ │ └── employees.json
│ │ │ ├── Startup.cs
│ │ │ └── ViewModels/
│ │ │ ├── AppLayout.cs
│ │ │ ├── Dashboard.cs
│ │ │ ├── Form.cs
│ │ │ └── Table.cs
│ │ ├── tsconfig.json
│ │ ├── webpack.config.js
│ │ └── wwwroot/
│ │ └── index.html
│ └── template.nuspec
└── Routing/
├── DotNetify.ServerSideRender.cs
├── Program.cs
├── Properties/
│ └── launchSettings.json
├── Routing.csproj
├── Routing.sln
├── Startup.cs
├── ViewModels/
│ ├── Index.cs
│ ├── Page1.cs
│ └── Page2.cs
├── compilerconfig.json
├── compilerconfig.json.defaults
├── package.json
├── src/
│ ├── Index.js
│ ├── Index.jsx
│ ├── app.js
│ └── app.server.js
├── webpack.config.js
└── wwwroot/
├── Index.html
├── Page1.js
├── Page1.jsx
├── Page2.js
├── Page2.jsx
├── Page3.html
└── bundle.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp
###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary
###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary
###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
project.lock.json
artifacts/
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignoreable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio Code
.vscode/
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
/ReactTemplate/content/wwwroot/dist
**/Typings
**/*.tgz
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: MicrofrontendTemplate/.gitignore
================================================
### App ###
dist/
### Code ###
# Visual Studio Code - https://code.visualstudio.com/
.settings/
.vscode/
jsconfig.json
### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Typescript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
#*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
### VisualStudio ###
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
*.vs
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Uncomment the next line to ignore your web deploy settings.
# By default, sensitive information, such as encrypted password
# should be stored in the .pubxml.user file.
#*.pubxml
*.pubxml.user
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Typescript v1 declaration files
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
### VisualStudio Patch ###
# By default, sensitive information, such as encrypted password
# should be stored in the .pubxml.user file.
ASP.NET Demo/WebApplication.Knockout/Scripts/lib
# End of https://www.gitignore.io/api/node,code,visualstudio
================================================
FILE: MicrofrontendTemplate/Microfrontend.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28307.572
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Portal", "Portal\Portal.csproj", "{3A4AEABB-3F8D-4442-B844-5C63975AFF76}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactDashboardApp", "ReactDashboardApp\ReactDashboardApp.csproj", "{B90BE04D-66A7-44B7-AEFF-CD41AA38CEFF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactFormApp", "ReactFormApp\ReactFormApp.csproj", "{D0EB7EA1-5ACF-4E55-A637-63AA19F6A785}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Shared", "Shared\Shared.csproj", "{6FF33A2C-7C94-4943-8F3F-24BAB26447F6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactTodoApp", "ReactTodoApp\ReactTodoApp.csproj", "{4B835F6E-C512-48B3-86CD-C41298A6B04D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VueTodoApp", "VueTodoApp\VueTodoApp.csproj", "{8C57EFD7-FD0E-4B9F-9CA8-2B7866F0DE5E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3A4AEABB-3F8D-4442-B844-5C63975AFF76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3A4AEABB-3F8D-4442-B844-5C63975AFF76}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3A4AEABB-3F8D-4442-B844-5C63975AFF76}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3A4AEABB-3F8D-4442-B844-5C63975AFF76}.Release|Any CPU.Build.0 = Release|Any CPU
{B90BE04D-66A7-44B7-AEFF-CD41AA38CEFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B90BE04D-66A7-44B7-AEFF-CD41AA38CEFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B90BE04D-66A7-44B7-AEFF-CD41AA38CEFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B90BE04D-66A7-44B7-AEFF-CD41AA38CEFF}.Release|Any CPU.Build.0 = Release|Any CPU
{D0EB7EA1-5ACF-4E55-A637-63AA19F6A785}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D0EB7EA1-5ACF-4E55-A637-63AA19F6A785}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D0EB7EA1-5ACF-4E55-A637-63AA19F6A785}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D0EB7EA1-5ACF-4E55-A637-63AA19F6A785}.Release|Any CPU.Build.0 = Release|Any CPU
{6FF33A2C-7C94-4943-8F3F-24BAB26447F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6FF33A2C-7C94-4943-8F3F-24BAB26447F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6FF33A2C-7C94-4943-8F3F-24BAB26447F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6FF33A2C-7C94-4943-8F3F-24BAB26447F6}.Release|Any CPU.Build.0 = Release|Any CPU
{4B835F6E-C512-48B3-86CD-C41298A6B04D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4B835F6E-C512-48B3-86CD-C41298A6B04D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4B835F6E-C512-48B3-86CD-C41298A6B04D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4B835F6E-C512-48B3-86CD-C41298A6B04D}.Release|Any CPU.Build.0 = Release|Any CPU
{8C57EFD7-FD0E-4B9F-9CA8-2B7866F0DE5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8C57EFD7-FD0E-4B9F-9CA8-2B7866F0DE5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8C57EFD7-FD0E-4B9F-9CA8-2B7866F0DE5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8C57EFD7-FD0E-4B9F-9CA8-2B7866F0DE5E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BA286E46-A723-4519-AC1B-4D323C6C5AD9}
EndGlobalSection
EndGlobal
================================================
FILE: MicrofrontendTemplate/Portal/Portal.csproj
================================================
netcoreapp3.1Portal%(DistFiles.Identity)PreserveNewest
================================================
FILE: MicrofrontendTemplate/Portal/Properties/launchSettings.json
================================================
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:5000/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"dev": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5000/"
},
"prod": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production"
},
"applicationUrl": "http://localhost:5000/"
}
}
}
================================================
FILE: MicrofrontendTemplate/Portal/appsettings.json
================================================
{
"IdentityServer": {
"Uri": "http://localhost:5000"
}
}
================================================
FILE: MicrofrontendTemplate/Portal/client/auth.js
================================================
const url = '/api/login';
export const signIn = (username, password) => {
return fetch(url, {
method: 'post',
body: 'username=' + username + '&password=' + password,
headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' }
})
.then(response => {
if (!response.ok) throw new Error(response.status);
return response.json();
})
.then(token => window.sessionStorage.setItem('access_token', token.access_token));
};
export const signOut = () => {
window.sessionStorage.removeItem('access_token');
window.location.href = '/';
};
export const validateToken = token => {
return fetch(url + '/validate', {
method: 'post',
body: 'token=' + token,
headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' }
}).then(response => response.ok);
};
export const getAccessToken = () => {
return window.sessionStorage.getItem('access_token');
};
export const getAuthHeaders = _ => ({
headers: { Authorization: 'Bearer ' + getAccessToken() },
exceptionHandler: _ => signOut()
});
================================================
FILE: MicrofrontendTemplate/Portal/client/components/App.js
================================================
import { Fragment, useState, useEffect } from 'react';
import { getAccessToken, validateToken } from '../auth';
import Portal from './Portal';
import Landing from './Landing';
export const CompanyLogo = styled.a`
display: flex;
align-items: center;
margin-left: 1rem;
background-image: url(https://dotnetify.net/content/images/dotnetify-logo.png);
background-size: 100% 100%;
width: 200px;
height: 39px;
`;
const App = _ => {
const [ accessToken ] = useState(getAccessToken());
const [ validatingToken, setValidatingToken ] = useState(null);
const [ loggedIn, setLoggedIn ] = useState(false);
useEffect(() => {
if (validatingToken === null) {
setValidatingToken(!!accessToken);
if (accessToken) {
validateToken(accessToken).then(valid => {
setLoggedIn(valid);
setValidatingToken(false);
});
}
}
});
if (validatingToken !== false) return ;
return loggedIn ? : setLoggedIn(true)} />;
};
export default App;
================================================
FILE: MicrofrontendTemplate/Portal/client/components/Landing.js
================================================
import { Main, Header, Alert, Panel, Section, withTheme } from 'dotnetify-elements';
import { CompanyLogo } from './App';
import Login from './Login';
const imagePanelCss = `
position: relative;
margin-bottom: 6rem;
img { width: 100vw; height: 400px; }
a {
position: relative;
color: #fff;
font-size: 8pt;
float: right;
margin-top: -1rem;
padding-right: .5rem;
}
`;
const Landing = ({ onLoggedIn }) => (
{/*
Why using Panel instead pf div? Think of Panels as super-divs: flex by default, automatically
add gaps between child elements, support scss-like syntax for nesting styles, and support many
shorthands to make manipulating layout easier!
*/}
To sign in, enter username guest with password dotnetify.
Micro-Frontend Demo
This is an SPA that's dynamically composed of smaller, independently deployable apps written in React and Vue;
each communicates with a cross-platform .NET Core (C#) back-end, using SignalR to facilitate real-time update.
About
DotNetify glues all these together with simple, lightweight, yet powerful abstractions that make developing complex
web applications a breeze! For documentation, visit{' '}
https://dotnetify.net
Like this project? Leave a star on{' '}
the project's Github page
. Use the issues forum to ask questions, report bugs, or suggest new features.
## DotNetify - Micro-Frontend Demo
### How to Run
If on Windows, type `run` from the command prompt to start the portal and the nginx API gateway. Wait until the portal app started, then type `run apps` to start all the apps. Alternatively, you can start them one at a time by going to an app's folder and type `run prod`. Open the website at http://localhost:8080.
If not on Windows, you can't use the Windows-based nginx from this repo. Either install one for your system and copy the configuration `conf/nginx.conf`, or just run the portal and the apps in development mode below.
### Running In Dev Mode
Go the the Portal folder and type `npm i` followed by `dotnet run`. Then go to each app's folder and do the same thing. They will start in development mode. Open the website at http://localhost:5000.
In development mode, authentication is disabled so you can run the app as stand-alone, and hot module reload is also enabled. The app's port is specified in `Properties/launchsettings.json`.
================================================
FILE: MicrofrontendTemplate/ReactDashboardApp/Properties/launchSettings.json
================================================
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:5060/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"dev": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5060/"
},
"prod": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production"
},
"applicationUrl": "http://localhost:5060/"
}
}
}
================================================
FILE: MicrofrontendTemplate/ReactDashboardApp/README.md
================================================
## How to run:
Start the Portal first (app requires an auth server), then execute `run.bat [dev|prod]`.
================================================
FILE: MicrofrontendTemplate/ReactDashboardApp/ReactDashboardApp.csproj
================================================
netcoreapp3.1ReactDashboardApp%(DistFiles.Identity)PreserveNewest
================================================
FILE: MicrofrontendTemplate/ReactDashboardApp/appsettings.json
================================================
{
"IdentityServer": {
"Uri": "http://localhost:5000"
}
}
================================================
FILE: MicrofrontendTemplate/ReactDashboardApp/client/components/ActivitiesCard.js
================================================
import React from 'react';
import styled from 'styled-components';
import { Card, Cell, Element, Panel } from 'dotnetify-elements';
const panelCss = `
overflow-x: hidden;
.cell { border: none; }
.cell-body { padding: .5rem 0 }
`;
const statusColors = [ '', 'silver', 'limegreen', 'red', 'gray', 'orange' ];
const userIconColors = [ '#00ce6f', '#a95df0', '#2ea7eb' ];
const UserIcon = styled.span`
width: 25px;
height: 25px;
border-radius: 50%;
color: white;
background: ${props => props.color};
font-weight: bold;
margin-right: 1rem;
text-align: center;
`;
const StatusIcon = styled.span`
height: 14px;
width: 14px;
margin-left: 1rem;
background-color: ${props => statusColors[props.status]};
border-radius: 50%;
display: inline-block;
`;
const Activity = ({ person }) => {
const initial = person.PersonName[0].toUpperCase();
const iconColor = userIconColors[initial.charCodeAt(0) % 3];
return (
{initial}
{person.PersonName}
{person.Status}
);
};
export default class ActivitiesCard extends Element {
render() {
const activities = this.value || [];
return (
Activities
{activities.map((person, idx) => )}
);
}
}
================================================
FILE: MicrofrontendTemplate/ReactDashboardApp/client/components/Dashboard.js
================================================
import React from 'react';
import { Card, Frame, Panel, VMContext, withTheme } from 'dotnetify-elements';
import { BarChart, LineChart, PieChart } from 'dotnetify-elements';
import InfoCard from './InfoCard';
import ActivitiesCard from './ActivitiesCard';
const infoPanelCss = `
flex: 1 1 20%;
@media (max-width: 1280px) { flex: 1 1 40%; }
@media (max-width: 880px) { flex: 1 1 100%; }
`;
/* You can access the 'vm' object from VMContext by handling the 'onConnected' event. */
const handleConnected = (vm, initialState) => console.log(vm, initialState);
const Dashboard = _ => (
0}>
{ItemsLeft} item{ItemsLeft > 1 && 's'} left
);
}
}
export default withTheme(TodoList);
================================================
FILE: MicrofrontendTemplate/ReactTodoApp/client/index.js
================================================
import { createWebComponent } from 'dotnetify-elements/web-components/Core';
import TodoList from './components/TodoList';
const elementName = 'react-todo-app';
createWebComponent(TodoList, elementName);
export default document.createElement(elementName);
================================================
FILE: MicrofrontendTemplate/ReactTodoApp/package.json
================================================
{
"version": "1.0.0",
"name": "react-todo-app",
"private": true,
"scripts": {
"build": "webpack",
"prod": "webpack --mode production"
},
"babel": {
"presets": [
"env",
"react"
],
"plugins": [
"babel-plugin-styled-components",
"babel-plugin-transform-class-properties",
"babel-plugin-transform-object-rest-spread"
]
},
"dependencies": {
"dotnetify": "^4.0.0",
"dotnetify-elements": "^1.1.0",
"react": "^16.9.0",
"react-dom": "^16.9.0",
"styled-components": "^4.3.2"
},
"devDependencies": {
"aspnet-webpack": "~3.0.0",
"babel-core": "~6.26.3",
"babel-loader": "~7.1.4",
"babel-plugin-styled-components": "~1.5.1",
"babel-plugin-transform-class-properties": "~6.24.1",
"babel-plugin-transform-object-rest-spread": "~6.26.0",
"babel-preset-env": "~1.7.0",
"babel-preset-react": "~6.24.1",
"copy-webpack-plugin": "^5.0.4",
"css-loader": "~0.28.11",
"file-loader": "~1.1.11",
"style-loader": "~0.21.0",
"url-loader": "~1.0.1",
"webpack": "~4.12.0",
"webpack-bundle-analyzer": "^3.0.3",
"webpack-cli": "~3.0.8",
"webpack-dev-middleware": "~3.1.3",
"webpack-hot-middleware": "~2.22.2"
}
}
================================================
FILE: MicrofrontendTemplate/ReactTodoApp/run.bat
================================================
@echo off
if not exist node_modules call npm i
if "%1" == "prod" goto :prod
call npm run build
dotnet run
exit
:prod
call npm run prod
dotnet run --launch-profile prod
================================================
FILE: MicrofrontendTemplate/ReactTodoApp/server/Program.cs
================================================
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
namespace ReactTodoApp
{
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.Build();
}
}
================================================
FILE: MicrofrontendTemplate/ReactTodoApp/server/Startup.cs
================================================
using DotNetify;
using DotNetify.Security;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.SpaServices.Webpack;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.IdentityModel.Tokens;
using Shared;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
namespace ReactTodoApp
{
public class Startup
{
private readonly IConfiguration _config;
public Startup(IConfiguration config)
{
_config = config;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
services.AddMemoryCache();
services.AddSignalR();
services.AddDotNetify();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors(builder => builder
.AllowAnyMethod()
.AllowAnyHeader()
.AllowAnyOrigin()
.AllowCredentials());
app.UseWebSockets();
app.UseSignalR(routes => routes.MapDotNetifyHub());
app.UseDotNetify(config =>
{
if (env.IsProduction())
{
IEnumerable keys;
using (var client = HttpClientFactory.Create())
{
var identityServerSettings = _config.GetSection(IdentityServerSettings.SectionName).Get();
keys = IdentityServerClient.GetIssuerSigningKeysAsync(client, identityServerSettings).GetAwaiter().GetResult();
}
// Middleware to do authenticate token in incoming request headers.
config.UseJwtBearerAuthentication(new TokenValidationParameters
{
IssuerSigningKeys = keys,
ValidateIssuerSigningKey = true,
ValidateAudience = false,
ValidateIssuer = false,
ValidateLifetime = true,
ClockSkew = TimeSpan.FromSeconds(0)
});
// Filter to check whether user has permission to access view models with [Authorize] attribute.
config.UseFilter();
}
else
config.UseDeveloperLogging();
});
if (env.IsDevelopment())
{
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true,
HotModuleReplacementClientOptions = new Dictionary { { "reload", "true" } },
});
}
app.UseFileServer();
app.Run(async (context) =>
{
using (var reader = new StreamReader(File.OpenRead("wwwroot/index.html")))
await context.Response.WriteAsync(reader.ReadToEnd());
});
}
}
}
================================================
FILE: MicrofrontendTemplate/ReactTodoApp/server/ViewModels/TodoList.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reactive.Linq;
using DotNetify;
using DotNetify.Security;
namespace ReactTodoApp
{
[Authorize]
public class TodoList : MulticastVM
{
private static List _todos = new List();
public class Todo
{
public int Id { get; set; }
public string Text { get; set; }
public bool Done { get; set; }
}
public List Todos => _todos;
public string Todos_itemKey => nameof(Todo.Id);
public int ItemsLeft => Todos.Count(x => !x.Done);
public Action Add => text =>
{
var todo = new Todo { Id = text.GetHashCode(), Text = text };
if(!Todos.Any(x => x.Id == todo.Id))
{
Todos.Add(todo);
this.AddList(nameof(Todos), todo);
Changed(nameof(ItemsLeft));
}
};
public Action Update => update =>
{
var todo = Todos.Find(x => x.Id == update.Id);
if(todo != null)
{
if(string.IsNullOrWhiteSpace(update.Text))
Remove(update.Id);
else
{
todo.Text = update.Text;
todo.Done = update.Done;
this.UpdateList(nameof(Todos), todo);
Changed(nameof(ItemsLeft));
}
}
};
public Action Remove => id =>
{
var todo = Todos.Find(x => x.Id == id);
if(todo != null)
{
Todos.Remove(todo);
this.RemoveList(nameof(Todos), id);
Changed(nameof(ItemsLeft));
}
};
}
}
================================================
FILE: MicrofrontendTemplate/ReactTodoApp/webpack.config.js
================================================
'use strict';
const webpack = require('webpack');
const CopyPlugin = require('copy-webpack-plugin');
module.exports = {
mode: 'development',
entry: {
app: './client/index.js'
},
output: {
filename: '[name].js',
path: __dirname + '/wwwroot/dist',
publicPath: '/dist/',
libraryTarget: 'umd'
},
resolve: {
modules: [ 'client', 'node_modules' ],
extensions: [ '.js', '.jsx' ]
},
module: {
rules: [
{ test: /\.jsx?$/, use: 'babel-loader', exclude: /node_modules/ },
{ test: /\.css$/, use: [ 'css-loader?minimize' ] },
{ test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader' }
]
},
externals: {
dotnetify: 'dotnetify',
'dotnetify-elements': 'dotNetifyElements',
'styled-components': 'styled'
},
devtool: 'source-map',
plugins: [
new webpack.ContextReplacementPlugin(/moment[/\\]locale$/, /en/),
new CopyPlugin([
{ from: 'node_modules/dotnetify/dist/dotnetify-react.min.js' },
{ from: 'node_modules/dotnetify-elements/lib/basic-elements.bundle.js' },
{ from: 'node_modules/styled-components/dist/styled-components.min.js' }
])
]
};
================================================
FILE: MicrofrontendTemplate/ReactTodoApp/wwwroot/index.html
================================================
ReactTodoApp
================================================
FILE: MicrofrontendTemplate/Shared/IdentityServer/IdentityServerClient.cs
================================================
using IdentityModel;
using IdentityModel.Client;
using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Security.Cryptography;
using System.Threading.Tasks;
namespace Shared
{
public class IdentityServerClient
{
public static async Task RequestClientCredentialsTokenAsync(HttpClient client, IdentityServerSettings settings)
{
var disco = await client.GetDiscoveryDocumentAsync(settings.Uri);
return await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
{
Address = disco.TokenEndpoint,
ClientId = IdentityServerConfig.MyClientId,
ClientSecret = IdentityServerConfig.MyClientSecret,
Scope = IdentityServerConfig.MyApiResource
});
}
public static async Task IntrospectTokenAsync(HttpClient client, IdentityServerSettings settings, string token)
{
var disco = await client.GetDiscoveryDocumentAsync(settings.Uri);
return await client.IntrospectTokenAsync(new TokenIntrospectionRequest
{
Address = disco.IntrospectionEndpoint,
Token = token,
ClientId = IdentityServerConfig.MyApiResource,
ClientSecret = IdentityServerConfig.MyClientSecret
});
}
public static async Task> GetIssuerSigningKeysAsync(HttpClient client, IdentityServerSettings settings)
{
var disco = await client.GetDiscoveryDocumentAsync(settings.Uri);
if(disco?.KeySet == null)
throw new Exception("Failed to get signing keys. Make sure the Portal is running.");
var keys = new List();
foreach(var webKey in disco.KeySet.Keys)
{
var key = new RsaSecurityKey(new RSAParameters
{
Exponent = Base64Url.Decode(webKey.E),
Modulus = Base64Url.Decode(webKey.N)
});
key.KeyId = webKey.Kid;
keys.Add(key);
}
return keys;
}
}
}
================================================
FILE: MicrofrontendTemplate/Shared/IdentityServer/IdentityServerConfig.cs
================================================
using System.Collections.Generic;
using IdentityServer4.Models;
namespace Shared
{
public class IdentityServerConfig
{
public static readonly string MyClientId = "dotNetifyDemo";
public static readonly string MyClientSecret = "secret";
public static readonly string MyApiResource = "demo";
public static IEnumerable GetClients()
{
return new List
{
new Client
{
ClientId = MyClientId,
AllowedGrantTypes = GrantTypes.ClientCredentials,
ClientSecrets = { new Secret(MyClientSecret.Sha256()) },
AllowedScopes = { MyApiResource }
}
};
}
public static IEnumerable GetApiResources()
{
return new List
{
new ApiResource(MyApiResource, "DotNetify Demo") { ApiSecrets = { new Secret(MyClientSecret.Sha256()) } }
};
}
}
}
================================================
FILE: MicrofrontendTemplate/Shared/IdentityServer/IdentityServerSettings.cs
================================================
namespace Shared
{
public class IdentityServerSettings
{
public static readonly string SectionName = "IdentityServer";
public string Uri { get; set; }
}
}
================================================
FILE: MicrofrontendTemplate/Shared/Shared.csproj
================================================
netstandard2.0
================================================
FILE: MicrofrontendTemplate/VueTodoApp/Properties/launchSettings.json
================================================
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:5020/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"dev": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5020/"
},
"prod": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production"
},
"applicationUrl": "http://localhost:5020/"
}
}
}
================================================
FILE: MicrofrontendTemplate/VueTodoApp/README.md
================================================
## How to run:
Start the Portal first (app requires an auth server), then execute `run.bat [dev|prod]`.
================================================
FILE: MicrofrontendTemplate/VueTodoApp/VueTodoApp.csproj
================================================
netcoreapp2.1VueTodoApp%(DistFiles.Identity)PreserveNewest
================================================
FILE: MicrofrontendTemplate/VueTodoApp/appsettings.json
================================================
{
"IdentityServer": {
"Uri": "http://localhost:5000"
}
}
================================================
FILE: MicrofrontendTemplate/VueTodoApp/client/components/TodoList.vue
================================================
{{error.message}}
Multicast Todo List
cancel
================================================
FILE: MicrofrontendTemplate/VueTodoApp/client/index.js
================================================
import Vue from 'vue';
import vueCustomElement from 'vue-custom-element';
import TodoList from './components/TodoList.vue';
const elementName = 'vue-todo-app';
Vue.use(vueCustomElement);
Vue.customElement(elementName, TodoList, {
shadow: false, // Don't use shadow-DOM so global css can affect the inner Vue component.
destroyTimeout: 1 // Immediately destroy the Vue component when the custom element is detached.
});
export default document.createElement(elementName);
================================================
FILE: MicrofrontendTemplate/VueTodoApp/package.json
================================================
{
"version": "1.0.0",
"name": "vue-todo-app",
"private": true,
"scripts": {
"build": "webpack",
"prod": "webpack --mode production"
},
"dependencies": {
"dotnetify": "^4.0.0",
"dotnetify-elements": "^1.1.0",
"vue": "^2.5.22",
"vue-custom-element": "^3.2.9"
},
"devDependencies": {
"aspnet-webpack": "~3.0.0",
"babel-core": "~6.26.3",
"babel-loader": "~7.1.4",
"babel-preset-env": "~1.7.0",
"copy-webpack-plugin": "^5.0.4",
"css-loader": "^3.2.0",
"node-sass": "~4.9.4",
"sass-loader": "~7.1.0",
"url-loader": "~1.0.1",
"vue-loader": "^15.4.2",
"vue-template-compiler": "^2.5.22",
"webpack": "~4.12.0",
"webpack-bundle-analyzer": "^3.0.3",
"webpack-cli": "~3.0.8",
"webpack-dev-middleware": "~3.1.3",
"webpack-hot-middleware": "~2.22.2"
}
}
================================================
FILE: MicrofrontendTemplate/VueTodoApp/run.bat
================================================
@echo off
if not exist node_modules call npm i
if "%1" == "prod" goto :prod
call npm run build
dotnet run
exit
:prod
call npm run prod
dotnet run --launch-profile prod
================================================
FILE: MicrofrontendTemplate/VueTodoApp/server/Program.cs
================================================
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
namespace VueTodoApp
{
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.Build();
}
}
================================================
FILE: MicrofrontendTemplate/VueTodoApp/server/Startup.cs
================================================
using DotNetify;
using DotNetify.Security;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.SpaServices.Webpack;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.IdentityModel.Tokens;
using Shared;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
namespace VueTodoApp
{
public class Startup
{
private readonly IConfiguration _config;
public Startup(IConfiguration config)
{
_config = config;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
services.AddMemoryCache();
services.AddSignalR();
services.AddDotNetify();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors(builder => builder
.AllowAnyMethod()
.AllowAnyHeader()
.AllowAnyOrigin()
.AllowCredentials());
app.UseWebSockets();
app.UseSignalR(routes => routes.MapDotNetifyHub());
app.UseDotNetify(config =>
{
if (env.IsProduction())
{
IEnumerable keys;
using (var client = HttpClientFactory.Create())
{
var identityServerSettings = _config.GetSection(IdentityServerSettings.SectionName).Get();
keys = IdentityServerClient.GetIssuerSigningKeysAsync(client, identityServerSettings).GetAwaiter().GetResult();
}
// Middleware to do authenticate token in incoming request headers.
config.UseJwtBearerAuthentication(new TokenValidationParameters
{
IssuerSigningKeys = keys,
ValidateIssuerSigningKey = true,
ValidateAudience = false,
ValidateIssuer = false,
ValidateLifetime = true,
ClockSkew = TimeSpan.FromSeconds(0)
});
// Filter to check whether user has permission to access view models with [Authorize] attribute.
config.UseFilter();
}
else
config.UseDeveloperLogging();
});
if (env.IsDevelopment())
{
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true,
HotModuleReplacementClientOptions = new Dictionary { { "reload", "true" } },
});
}
app.UseFileServer();
app.Run(async (context) =>
{
using (var reader = new StreamReader(File.OpenRead("wwwroot/index.html")))
await context.Response.WriteAsync(reader.ReadToEnd());
});
}
}
}
================================================
FILE: MicrofrontendTemplate/VueTodoApp/server/ViewModels/TodoList.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reactive.Linq;
using DotNetify;
using DotNetify.Security;
namespace VueTodoApp
{
[Authorize]
public class TodoList : MulticastVM
{
private static List _todos = new List();
public class Todo
{
public int Id { get; set; }
public string Text { get; set; }
public bool Done { get; set; }
}
public List Todos => _todos;
public string Todos_itemKey => nameof(Todo.Id);
public int ItemsLeft => Todos.Count(x => !x.Done);
public Action Add => text =>
{
var todo = new Todo { Id = text.GetHashCode(), Text = text };
if (!Todos.Any(x => x.Id == todo.Id))
{
Todos.Add(todo);
this.AddList(nameof(Todos), todo);
Changed(nameof(ItemsLeft));
}
};
public Action Update => update =>
{
var todo = Todos.Find(x => x.Id == update.Id);
if (todo != null)
{
if (string.IsNullOrWhiteSpace(update.Text))
Remove(update.Id);
else
{
todo.Text = update.Text;
todo.Done = update.Done;
this.UpdateList(nameof(Todos), todo);
Changed(nameof(ItemsLeft));
}
}
};
public Action Remove => id =>
{
var todo = Todos.Find(x => x.Id == id);
if (todo != null)
{
Todos.Remove(todo);
this.RemoveList(nameof(Todos), id);
Changed(nameof(ItemsLeft));
}
};
}
}
================================================
FILE: MicrofrontendTemplate/VueTodoApp/webpack.config.js
================================================
'use strict';
const webpack = require('webpack');
const CopyPlugin = require('copy-webpack-plugin');
const { VueLoaderPlugin } = require('vue-loader');
module.exports = {
mode: 'development',
entry: {
app: './client/index.js'
},
output: {
filename: '[name].js',
path: __dirname + '/wwwroot/dist',
publicPath: '/dist/',
libraryTarget: 'umd'
},
resolve: {
modules: [ 'client', 'node_modules' ],
alias: { vue$: 'vue/dist/vue.esm.js' }
},
module: {
rules: [
{ test: /\.vue$/, use: 'vue-loader' },
{ test: /\.js?$/, loader: 'babel-loader', query: { presets: [ 'env' ] } },
{ test: /\.scss$/, use: [ 'vue-style-loader', 'css-loader', 'sass-loader' ] },
{ test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader' }
]
},
externals: {
'dotnetify-elements': 'dotNetifyElements'
},
devtool: 'source-map',
plugins: [
new VueLoaderPlugin(),
new webpack.ContextReplacementPlugin(/moment[/\\]locale$/, /en/),
new CopyPlugin([
{ from: 'node_modules/dotnetify/dist/dotnetify-vue.min.js' },
{ from: 'node_modules/dotnetify-elements/lib/basic-web-components.bundle.js' }
])
]
};
================================================
FILE: MicrofrontendTemplate/VueTodoApp/wwwroot/index.html
================================================
VueTodoApp
================================================
FILE: MicrofrontendTemplate/global.json
================================================
{
"sdk": {
"version": "3.1.201"
}
}
================================================
FILE: MicrofrontendTemplate/heroku-deploy/Portal/Dockerfile
================================================
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
LABEL stage=build
WORKDIR /src
COPY ./__tmp__ .
# Install node.js
RUN apt-get update -yq \
&& apt-get install curl gnupg -yq \
&& curl -sL https://deb.nodesource.com/setup_12.x | bash \
&& apt-get install nodejs -yq
RUN dotnet publish ./Portal/Portal.csproj -c Release -o /app
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build /app .
ARG aspnetenv=Production
ENV ASPNETCORE_ENVIRONMENT ${aspnetenv}
CMD ASPNETCORE_URLS=http://*:$PORT dotnet Portal.dll
================================================
FILE: MicrofrontendTemplate/heroku-deploy/Portal/appsettings.json
================================================
{
"IdentityServer": {
"Uri": "http://dotnetify-mfe.herokuapp.com"
}
}
================================================
FILE: MicrofrontendTemplate/heroku-deploy/Portal/build.bat
================================================
@echo off
set env=Production
if "%1"=="" goto :next
set env=%1
:next
echo --- Copy source code
xcopy ..\..\Portal\*.* .\__tmp__\Portal\ /q /s /e /d /y /exclude:excludedfiles.txt
xcopy ..\..\Shared\*.* .\__tmp__\Shared\ /q /s /e /d /y /exclude:excludedfiles.txt
echo --- Remove any existing image
docker rmi portal -f
echo --- Build a new image
docker build -t portal -f ./Dockerfile . --build-arg aspnetenv=%env%
echo --- Remove build images
docker image prune -f --filter label=stage=build
rd __tmp__ /q /s
echo --- Run a container on port 5000
docker run -it --rm -p:5000:80 --name portal_5000 portal
================================================
FILE: MicrofrontendTemplate/heroku-deploy/Portal/deploy.bat
================================================
@echo off
echo --- Copy source code
xcopy ..\..\Portal\*.* .\__tmp__\Portal\ /q /s /e /d /y /exclude:excludedfiles.txt
xcopy ..\..\Shared\*.* .\__tmp__\Shared\ /q /s /e /d /y /exclude:excludedfiles.txt
xcopy appsettings.json .\__tmp__\Portal\ /q /y
call heroku container:push web -a dotnetify-portal
call heroku container:release web -a dotnetify-portal
rd __tmp__ /q /s
================================================
FILE: MicrofrontendTemplate/heroku-deploy/Portal/excludedfiles.txt
================================================
.vssscc
.vspscc
.log
.user
\obj\
\bin\
\Properties\
\node_modules\
\coverage\
\wwwroot\dist\
================================================
FILE: MicrofrontendTemplate/heroku-deploy/ReactDashboardApp/Dockerfile
================================================
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
LABEL stage=build
WORKDIR /src
COPY ./__tmp__ .
# Install node.js
RUN apt-get update -yq \
&& apt-get install curl gnupg -yq \
&& curl -sL https://deb.nodesource.com/setup_12.x | bash \
&& apt-get install nodejs -yq
RUN dotnet publish ./ReactDashboardApp/ReactDashboardApp.csproj -c Release -o /app
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build /app .
ARG aspnetenv=Production
ENV ASPNETCORE_ENVIRONMENT ${aspnetenv}
CMD ASPNETCORE_URLS=http://*:$PORT dotnet ReactDashboardApp.dll
================================================
FILE: MicrofrontendTemplate/heroku-deploy/ReactDashboardApp/appsettings.json
================================================
{
"IdentityServer": {
"Uri": "http://dotnetify-mfe.herokuapp.com"
}
}
================================================
FILE: MicrofrontendTemplate/heroku-deploy/ReactDashboardApp/build.bat
================================================
@echo off
set env=Production
if "%1"=="" goto :next
set env=%1
:next
echo --- Copy source code
xcopy ..\..\ReactDashboardApp\*.* .\__tmp__\ReactDashboardApp\ /q /s /e /d /y /exclude:excludedfiles.txt
xcopy ..\..\Shared\*.* .\__tmp__\Shared\ /q /s /e /d /y /exclude:excludedfiles.txt
echo --- Remove any existing image
docker rmi dashboard -f
echo --- Build a new image
docker build -t portal -f ./Dockerfile . --build-arg aspnetenv=%env%
echo --- Remove build images
docker image prune -f --filter label=stage=build
rd __tmp__ /q /s
echo --- Run a container on port 5060
docker run -it --rm -p:5060:80 --name dashboard_5060 dashboard
================================================
FILE: MicrofrontendTemplate/heroku-deploy/ReactDashboardApp/deploy.bat
================================================
@echo off
echo --- Copy source code
xcopy ..\..\ReactDashboardApp\*.* .\__tmp__\ReactDashboardApp\ /q /s /e /d /y /exclude:excludedfiles.txt
xcopy ..\..\Shared\*.* .\__tmp__\Shared\ /q /s /e /d /y /exclude:excludedfiles.txt
xcopy appsettings.json .\__tmp__\ReactDashboardApp\ /q /y
call heroku container:push web -a dotnetify-dashboard
call heroku container:release web -a dotnetify-dashboard
rd __tmp__ /q /s
================================================
FILE: MicrofrontendTemplate/heroku-deploy/ReactDashboardApp/excludedfiles.txt
================================================
.vssscc
.vspscc
.log
.user
\obj\
\bin\
\Properties\
\node_modules\
\coverage\
\wwwroot\dist\
================================================
FILE: MicrofrontendTemplate/heroku-deploy/nginx/Dockerfile
================================================
FROM nginx:alpine
COPY ./nginx.conf /etc/nginx
CMD sed -i -e 's/$PORT/'"$PORT"'/g' /etc/nginx/nginx.conf && nginx -g 'daemon off;'
================================================
FILE: MicrofrontendTemplate/heroku-deploy/nginx/deploy.bat
================================================
@echo off
call heroku container:push web -a dotnetify-mfe
call heroku container:release web -a dotnetify-mfe
================================================
FILE: MicrofrontendTemplate/heroku-deploy/nginx/nginx.conf
================================================
worker_processes 1;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
server {
listen $PORT;
server_name localhost;
location / {
proxy_pass http://dotnetify-portal.herokuapp.com;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Host dotnetify-portal.herokuapp.com;
proxy_cache_bypass $http_upgrade;
}
location /app1 {
rewrite ^/app1/(.*) /$1 break;
proxy_pass http://dotnetify-dashboard.herokuapp.com;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Host dotnetify-dashboard.herokuapp.com;
proxy_cache_bypass $http_upgrade;
}
# location /app2 {
# rewrite ^/app2/(.*) /$1 break;
# proxy_pass http://hostip:5070;
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection $http_connection;
# proxy_set_header Host $host;
# proxy_cache_bypass $http_upgrade;
# }
# location /app3 {
# rewrite ^/app3/(.*) /$1 break;
# proxy_pass http://hostip:5010;
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection $http_connection;
# proxy_set_header Host $host;
# proxy_cache_bypass $http_upgrade;
# }
# location /app4 {
# rewrite ^/app4/(.*) /$1 break;
# proxy_pass http://hostip:5020;
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection $http_connection;
# proxy_set_header Host $host;
# proxy_cache_bypass $http_upgrade;
# }
}
}
================================================
FILE: MicrofrontendTemplate/nginx/.gitignore
================================================
logs
================================================
FILE: MicrofrontendTemplate/nginx/conf/fastcgi.conf
================================================
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;
================================================
FILE: MicrofrontendTemplate/nginx/conf/fastcgi_params
================================================
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;
================================================
FILE: MicrofrontendTemplate/nginx/conf/koi-utf
================================================
# 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
}
================================================
FILE: MicrofrontendTemplate/nginx/conf/koi-win
================================================
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
}
================================================
FILE: MicrofrontendTemplate/nginx/conf/mime.types
================================================
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;
font/woff woff;
font/woff2 woff2;
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;
}
================================================
FILE: MicrofrontendTemplate/nginx/conf/nginx.conf
================================================
worker_processes 1;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
server {
listen 8080;
server_name localhost;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /app1 {
rewrite ^/app1/(.*) /$1 break;
proxy_pass http://localhost:5060;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /app2 {
rewrite ^/app2/(.*) /$1 break;
proxy_pass http://localhost:5070;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /app3 {
rewrite ^/app3/(.*) /$1 break;
proxy_pass http://localhost:5010;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /app4 {
rewrite ^/app4/(.*) /$1 break;
proxy_pass http://localhost:5020;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
}
================================================
FILE: MicrofrontendTemplate/nginx/conf/scgi_params
================================================
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;
================================================
FILE: MicrofrontendTemplate/nginx/conf/uwsgi_params
================================================
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;
================================================
FILE: MicrofrontendTemplate/nginx/conf/win-utf
================================================
# 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
}
================================================
FILE: MicrofrontendTemplate/nginx/contrib/README
================================================
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/.
================================================
FILE: MicrofrontendTemplate/nginx/contrib/geo2nginx.pl
================================================
#!/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";
}
================================================
FILE: MicrofrontendTemplate/nginx/contrib/unicode2nginx/koi-utf
================================================
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
}
================================================
FILE: MicrofrontendTemplate/nginx/contrib/unicode2nginx/unicode-to-nginx.pl
================================================
#!/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: '$_'";
}
}
###############################################################################
================================================
FILE: MicrofrontendTemplate/nginx/contrib/unicode2nginx/win-utf
================================================
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
}
================================================
FILE: MicrofrontendTemplate/nginx/contrib/vim/ftdetect/nginx.vim
================================================
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
================================================
FILE: MicrofrontendTemplate/nginx/contrib/vim/ftplugin/nginx.vim
================================================
setlocal commentstring=#\ %s
================================================
FILE: MicrofrontendTemplate/nginx/contrib/vim/indent/nginx.vim
================================================
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#
================================================
FILE: MicrofrontendTemplate/nginx/contrib/vim/syntax/nginx.vim
================================================
" 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 limit_zone
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 ssl
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 api
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_claim_set
syn keyword ngxDirective contained auth_jwt_header_set
syn keyword ngxDirective contained auth_jwt_key_file
syn keyword ngxDirective contained auth_jwt_key_request
syn keyword ngxDirective contained auth_jwt_leeway
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_socket_keepalive
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_socket_keepalive
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 keyval
syn keyword ngxDirective contained keyval_zone
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 memcached_socket_keepalive
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_limit_rate
syn keyword ngxDirective contained mp4_limit_rate_after
syn keyword ngxDirective contained mp4_max_buffer_size
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_requests
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_socket_keepalive
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
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_socket_keepalive
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_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_early_data
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_socket_keepalive
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
syn keyword ngxDirective contained zone_sync
syn keyword ngxDirective contained zone_sync_buffers
syn keyword ngxDirective contained zone_sync_connect_retry_interval
syn keyword ngxDirective contained zone_sync_connect_timeout
syn keyword ngxDirective contained zone_sync_interval
syn keyword ngxDirective contained zone_sync_recv_buffer_size
syn keyword ngxDirective contained zone_sync_server
syn keyword ngxDirective contained zone_sync_ssl
syn keyword ngxDirective contained zone_sync_ssl_certificate
syn keyword ngxDirective contained zone_sync_ssl_certificate_key
syn keyword ngxDirective contained zone_sync_ssl_ciphers
syn keyword ngxDirective contained zone_sync_ssl_crl
syn keyword ngxDirective contained zone_sync_ssl_name
syn keyword ngxDirective contained zone_sync_ssl_password_file
syn keyword ngxDirective contained zone_sync_ssl_protocols
syn keyword ngxDirective contained zone_sync_ssl_server_name
syn keyword ngxDirective contained zone_sync_ssl_trusted_certificate
syn keyword ngxDirective contained zone_sync_ssl_verify
syn keyword ngxDirective contained zone_sync_ssl_verify_depth
syn keyword ngxDirective contained zone_sync_timeout
" 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_lock
syn keyword ngxDirectiveThirdParty contained dav_ext_lock_zone
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_parent_dir
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_credentials
syn keyword ngxDirectiveThirdParty contained nchan_access_control_allow_origin
syn keyword ngxDirectiveThirdParty contained nchan_authorize_request
syn keyword ngxDirectiveThirdParty contained nchan_benchmark
syn keyword ngxDirectiveThirdParty contained nchan_benchmark_channels
syn keyword ngxDirectiveThirdParty contained nchan_benchmark_message_padding_bytes
syn keyword ngxDirectiveThirdParty contained nchan_benchmark_messages_per_channel_per_minute
syn keyword ngxDirectiveThirdParty contained nchan_benchmark_publisher_distribution
syn keyword ngxDirectiveThirdParty contained nchan_benchmark_subscriber_distribution
syn keyword ngxDirectiveThirdParty contained nchan_benchmark_subscribers_per_channel
syn keyword ngxDirectiveThirdParty contained nchan_benchmark_time
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_connect_timeout
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_nostore_fastpublish
syn keyword ngxDirectiveThirdParty contained nchan_redis_optimize_target
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_subscribe_weights
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_sa_restart
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_admin_panel_auth_type
syn keyword ngxDirectiveThirdParty contained passenger_admin_panel_password
syn keyword ngxDirectiveThirdParty contained passenger_admin_panel_url
syn keyword ngxDirectiveThirdParty contained passenger_admin_panel_username
syn keyword ngxDirectiveThirdParty contained passenger_anonymous_telemetry_proxy
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_log_file
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_anonymous_telemetry
syn keyword ngxDirectiveThirdParty contained passenger_disable_security_update_check
syn keyword ngxDirectiveThirdParty contained passenger_document_root
syn keyword ngxDirectiveThirdParty contained passenger_dump_config_manifest
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_monitor_log_file
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_filter_max_node
syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_histogram_buckets
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 accounting
syn keyword ngxDirectiveThirdParty contained accounting_id
syn keyword ngxDirectiveThirdParty contained accounting_interval
syn keyword ngxDirectiveThirdParty contained accounting_log
syn keyword ngxDirectiveThirdParty contained 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"
================================================
FILE: MicrofrontendTemplate/nginx/docs/CHANGES
================================================
Changes with nginx 1.16.0 23 Apr 2019
*) 1.16.x stable branch.
Changes with nginx 1.15.12 16 Apr 2019
*) Bugfix: a segmentation fault might occur in a worker process if
variables were used in the "ssl_certificate" or "ssl_certificate_key"
directives and OCSP stapling was enabled.
Changes with nginx 1.15.11 09 Apr 2019
*) Bugfix: in the "ssl_stapling_file" directive on Windows.
Changes with nginx 1.15.10 26 Mar 2019
*) Change: when using a hostname in the "listen" directive nginx now
creates listening sockets for all addresses the hostname resolves to
(previously, only the first address was used).
*) Feature: port ranges in the "listen" directive.
*) Feature: loading of SSL certificates and secret keys from variables.
*) Workaround: the $ssl_server_name variable might be empty when using
OpenSSL 1.1.1.
*) Bugfix: nginx/Windows could not be built with Visual Studio 2015 or
newer; the bug had appeared in 1.15.9.
Changes with nginx 1.15.9 26 Feb 2019
*) Feature: variables support in the "ssl_certificate" and
"ssl_certificate_key" directives.
*) Feature: the "poll" method is now available on Windows when using
Windows Vista or newer.
*) Bugfix: if the "select" method was used on Windows and an error
occurred while establishing a backend connection, nginx waited for
the connection establishment timeout to expire.
*) Bugfix: the "proxy_upload_rate" and "proxy_download_rate" directives
in the stream module worked incorrectly when proxying UDP datagrams.
Changes with nginx 1.15.8 25 Dec 2018
*) Feature: the $upstream_bytes_sent variable.
Thanks to Piotr Sikora.
*) Feature: new directives in vim syntax highlighting scripts.
Thanks to Gena Makhomed.
*) Bugfix: in the "proxy_cache_background_update" directive.
*) Bugfix: in the "geo" directive when using unix domain listen sockets.
*) Workaround: the "ignoring stale global SSL error ... bad length"
alerts might appear in logs when using the "ssl_early_data" directive
with OpenSSL.
*) Bugfix: in nginx/Windows.
*) Bugfix: in the ngx_http_autoindex_module on 32-bit platforms.
Changes with nginx 1.15.7 27 Nov 2018
*) Feature: the "proxy_requests" directive in the stream module.
*) Feature: the "delay" parameter of the "limit_req" directive.
Thanks to Vladislav Shabanov and Peter Shchuchkin.
*) Bugfix: memory leak on errors during reconfiguration.
*) Bugfix: in the $upstream_response_time, $upstream_connect_time, and
$upstream_header_time variables.
*) Bugfix: a segmentation fault might occur in a worker process if the
ngx_http_mp4_module was used on 32-bit platforms.
Changes with nginx 1.15.6 06 Nov 2018
*) Security: when using HTTP/2 a client might cause excessive memory
consumption (CVE-2018-16843) and CPU usage (CVE-2018-16844).
*) Security: processing of a specially crafted mp4 file with the
ngx_http_mp4_module might result in worker process memory disclosure
(CVE-2018-16845).
*) Feature: the "proxy_socket_keepalive", "fastcgi_socket_keepalive",
"grpc_socket_keepalive", "memcached_socket_keepalive",
"scgi_socket_keepalive", and "uwsgi_socket_keepalive" directives.
*) Bugfix: if nginx was built with OpenSSL 1.1.0 and used with OpenSSL
1.1.1, the TLS 1.3 protocol was always enabled.
*) Bugfix: working with gRPC backends might result in excessive memory
consumption.
Changes with nginx 1.15.5 02 Oct 2018
*) Bugfix: a segmentation fault might occur in a worker process when
using OpenSSL 1.1.0h or newer; the bug had appeared in 1.15.4.
*) Bugfix: of minor potential bugs.
Changes with nginx 1.15.4 25 Sep 2018
*) Feature: now the "ssl_early_data" directive can be used with OpenSSL.
*) Bugfix: in the ngx_http_uwsgi_module.
Thanks to Chris Caputo.
*) Bugfix: connections with some gRPC backends might not be cached when
using the "keepalive" directive.
*) Bugfix: a socket leak might occur when using the "error_page"
directive to redirect early request processing errors, notably errors
with code 400.
*) Bugfix: the "return" directive did not change the response code when
returning errors if the request was redirected by the "error_page"
directive.
*) Bugfix: standard error pages and responses of the
ngx_http_autoindex_module module used the "bgcolor" attribute, and
might be displayed incorrectly when using custom color settings in
browsers.
Thanks to Nova DasSarma.
*) Change: the logging level of the "no suitable key share" and "no
suitable signature algorithm" SSL errors has been lowered from "crit"
to "info".
Changes with nginx 1.15.3 28 Aug 2018
*) Feature: now TLSv1.3 can be used with BoringSSL.
*) Feature: the "ssl_early_data" directive, currently available with
BoringSSL.
*) Feature: the "keepalive_timeout" and "keepalive_requests" directives
in the "upstream" block.
*) Bugfix: the ngx_http_dav_module did not truncate destination file
when copying a file over an existing one with the COPY method.
*) Bugfix: the ngx_http_dav_module used zero access rights on the
destination file and did not preserve file modification time when
moving a file between different file systems with the MOVE method.
*) Bugfix: the ngx_http_dav_module used default access rights when
copying a file with the COPY method.
*) Workaround: some clients might not work when using HTTP/2; the bug
had appeared in 1.13.5.
*) Bugfix: nginx could not be built with LibreSSL 2.8.0.
Changes with nginx 1.15.2 24 Jul 2018
*) Feature: the $ssl_preread_protocol variable in the
ngx_stream_ssl_preread_module.
*) Feature: now when using the "reset_timedout_connection" directive
nginx will reset connections being closed with the 444 code.
*) Change: a logging level of the "http request", "https proxy request",
"unsupported protocol", and "version too low" SSL errors has been
lowered from "crit" to "info".
*) Bugfix: DNS requests were not resent if initial sending of a request
failed.
*) Bugfix: the "reuseport" parameter of the "listen" directive was
ignored if the number of worker processes was specified after the
"listen" directive.
*) Bugfix: when using OpenSSL 1.1.0 or newer it was not possible to
switch off "ssl_prefer_server_ciphers" in a virtual server if it was
switched on in the default server.
*) Bugfix: SSL session reuse with upstream servers did not work with the
TLS 1.3 protocol.
Changes with nginx 1.15.1 03 Jul 2018
*) Feature: the "random" directive inside the "upstream" block.
*) Feature: improved performance when using the "hash" and "ip_hash"
directives with the "zone" directive.
*) Feature: the "reuseport" parameter of the "listen" directive now uses
SO_REUSEPORT_LB on FreeBSD 12.
*) Bugfix: HTTP/2 server push did not work if SSL was terminated by a
proxy server in front of nginx.
*) Bugfix: the "tcp_nopush" directive was always used on backend
connections.
*) Bugfix: sending a disk-buffered request body to a gRPC backend might
fail.
Changes with nginx 1.15.0 05 Jun 2018
*) Change: the "ssl" directive is deprecated; the "ssl" parameter of the
"listen" directive should be used instead.
*) Change: now nginx detects missing SSL certificates during
configuration testing when using the "ssl" parameter of the "listen"
directive.
*) Feature: now the stream module can handle multiple incoming UDP
datagrams from a client within a single session.
*) Bugfix: it was possible to specify an incorrect response code in the
"proxy_cache_valid" directive.
*) Bugfix: nginx could not be built by gcc 8.1.
*) Bugfix: logging to syslog stopped on local IP address changes.
*) Bugfix: nginx could not be built by clang with CUDA SDK installed;
the bug had appeared in 1.13.8.
*) Bugfix: "getsockopt(TCP_FASTOPEN) ... failed" messages might appear
in logs during binary upgrade when using unix domain listen sockets
on FreeBSD.
*) Bugfix: nginx could not be built on Fedora 28 Linux.
*) Bugfix: request processing rate might exceed configured rate when
using the "limit_req" directive.
*) Bugfix: in handling of client addresses when using unix domain listen
sockets to work with datagrams on Linux.
*) Bugfix: in memory allocation error handling.
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 "
```
### Documentation
Documentation and live demo are available at [http://dotnetify.net/react](http://dotnetify.net/react).
### Credits
The UI layout was adapted from the [work by @rafaelhz](https://github.com/rafaelhz/react-material-admin-template).
================================================
FILE: ReactTemplate/content/.gitignore
================================================
# See https://help.github.com/ignore-files/ for more about ignoring files.
# dependencies
/node_modules
/bin
/obj
#Visual Studio
.vs
.vscode
*.csproj.user
/Properties/launchSettings.json
# misc
.DS_Store
.env
npm-debug.log*
yarn-debug.log*
yarn-error.log*
wwwroot/dist
#Typescript
/typings
================================================
FILE: ReactTemplate/content/client/app.tsx
================================================
import React from 'react';
import ReactDOM from 'react-dom';
import App from './routes';
import 'flexboxgrid/css/flexboxgrid.css';
import './styles/app.css';
ReactDOM.render(, document.getElementById('App'));
================================================
FILE: ReactTemplate/content/client/auth.ts
================================================
class Auth {
url = '/token';
signIn(username: string, password: string): Promise {
return fetch(this.url, {
method: 'post',
mode: 'no-cors',
body: 'username=' + username + '&password=' + password + '&grant_type=password&client_id=dotnetifydemo',
headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' },
})
.then(response => {
if (!response.ok) throw new Error(`${response.status}`);
return response.json();
})
.then(token => {
window.sessionStorage.setItem('access_token', token.access_token);
});
}
signOut() {
window.sessionStorage.removeItem('access_token');
window.location.href = '/';
}
getAccessToken(): string {
return window.sessionStorage.getItem('access_token');
}
hasAccessToken(): boolean {
return this.getAccessToken() != null;
}
}
export default new Auth();
================================================
FILE: ReactTemplate/content/client/components/BasePage.tsx
================================================
import React from 'react';
import Paper from '@material-ui/core/Paper';
import Divider from '@material-ui/core/Divider';
import globalStyles from '../styles/styles';
export interface IBasePageProps {
title: string;
navigation: string;
children: React.ReactNode;
}
export default function BasePage({ title, navigation, children }: IBasePageProps) {
return (