[-]
[+]
|
Changed |
_service
|
@@ -2,6 +2,6 @@
<service name="download_url">
<param name="host">nginx.org</param>
<param name="protocol">http</param>
- <param name="path">/download/nginx-1.11.13.tar.gz</param>
+ <param name="path">/download/nginx-1.13.1.tar.gz</param>
</service>
-<service name="download_url"><param name="host">nginx.org</param><param name="protocol">http</param><param name="path">/download/nginx-1.11.8.tar.gz</param></service><service name="download_url"><param name="host">nginx.org</param><param name="protocol">http</param><param name="path">/download/nginx-1.11.9.tar.gz</param></service></services>
\ No newline at end of file
+<service name="download_url"><param name="host">nginx.org</param><param name="protocol">http</param><param name="path">/download/nginx-1.13.1.tar.gz</param></service><service name="download_url"><param name="host">www.openssl.org</param><param name="protocol">https</param><param name="path">/source/openssl-1.1.0f.tar.gz</param></service></services>
\ No newline at end of file
|
|
Deleted |
_service:download_url:nginx-1.11.8.tar.gz
^
|
|
Deleted |
_service:download_url:nginx-1.11.9.tar.gz
^
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/CHANGES
^
|
@@ -1,4 +1,57 @@
+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",
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/CHANGES.ru
^
|
@@ -1,4 +1,57 @@
+Изменения в nginx 1.13.1 30.05.2017
+
+ *) Добавление: теперь в качестве параметра директивы set_real_ip_from
+ можно указывать имя хоста.
+
+ *) Добавление: улучшения в скриптах подсветки синтаксиса для vim.
+
+ *) Добавление: директива worker_cpu_affinity теперь работает на
+ DragonFly BSD.
+ Спасибо Sepherosa Ziehau.
+
+ *) Исправление: SSL renegotiation в соединениях к бэкендам не работал
+ при использовании OpenSSL до 1.1.0.
+
+ *) Изменение: nginx не собирался с Oracle Developer Studio 12.5.
+
+ *) Изменение: теперь cache manager пропускает заблокированные записи при
+ очистке кэша по max_size.
+
+ *) Исправление: клиентские SSL-соединения сразу закрывались, если
+ использовался отложенный accept и параметр proxy_protocol директивы
+ listen.
+
+ *) Исправление: в директиве proxy_cache_background_update.
+
+ *) Изменение: теперь директива tcp_nodelay устанавливает опцию
+ TCP_NODELAY перед SSL handshake.
+
+
+Изменения в nginx 1.13.0 25.04.2017
+
+ *) Изменение: теперь SSL renegotiation допускается в соединениях к
+ бэкендам.
+
+ *) Добавление: параметры rcvbuf и sndbuf директив listen в почтовом
+ прокси-сервере и модуле stream.
+
+ *) Добавление: директивы return и error_page теперь могут использоваться
+ для возврата перенаправлений с кодом 308.
+ Спасибо Simon Leblanc.
+
+ *) Добавление: параметр TLSv1.3 в директиве ssl_protocols.
+
+ *) Добавление: при логгировании сигналов теперь указывается PID
+ отправившего сигнал процесса.
+
+ *) Исправление: в обработке ошибок выделения памяти.
+
+ *) Исправление: если сервер в модуле stream слушал на wildcard-адресе,
+ исходящий адрес ответного UDP-пакета мог отличаться от адреса
+ назначения исходного пакета.
+
+
Изменения в nginx 1.11.13 04.04.2017
*) Добавление: параметр http_429 в директивах proxy_next_upstream,
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/auto/cc/conf
^
|
@@ -178,21 +178,25 @@
fi
- ngx_feature="gcc builtin atomic operations"
- ngx_feature_name=NGX_HAVE_GCC_ATOMIC
- ngx_feature_run=yes
- ngx_feature_incs=
- ngx_feature_path=
- ngx_feature_libs=
- ngx_feature_test="long n = 0;
- if (!__sync_bool_compare_and_swap(&n, 0, 1))
- return 1;
- if (__sync_fetch_and_add(&n, 1) != 1)
- return 1;
- if (n != 2)
- return 1;
- __sync_synchronize();"
- . auto/feature
+ if [ "$NGX_CC_NAME" = "sunc" ]; then
+ echo "checking for gcc builtin atomic operations ... disabled"
+ else
+ ngx_feature="gcc builtin atomic operations"
+ ngx_feature_name=NGX_HAVE_GCC_ATOMIC
+ ngx_feature_run=yes
+ ngx_feature_incs=
+ ngx_feature_path=
+ ngx_feature_libs=
+ ngx_feature_test="long n = 0;
+ if (!__sync_bool_compare_and_swap(&n, 0, 1))
+ return 1;
+ if (__sync_fetch_and_add(&n, 1) != 1)
+ return 1;
+ if (n != 2)
+ return 1;
+ __sync_synchronize();"
+ . auto/feature
+ fi
if [ "$NGX_CC_NAME" = "ccc" ]; then
@@ -209,7 +213,7 @@
var(0, buf, \"%d\", 1);
if (buf[0] != '1') return 1"
. auto/feature
- fi
+ fi
ngx_feature="gcc variadic macros"
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/auto/cc/sunc
^
|
@@ -8,7 +8,10 @@
# Sun C 5.9 SunOS_i386 2007/05/03 Sun Studio 12
# Sun C 5.9 SunOS_sparc 2007/05/03
# Sun C 5.10 SunOS_i386 2009/06/03 Sun Studio 12.1
-# Sun C 5.11 SunOS_i386 2010/08/13 Sun Studio 12.2
+# Sun C 5.11 SunOS_i386 2010/08/13 Oracle Solaris Studio 12.2
+# Sun C 5.12 SunOS_i386 2011/11/16 Oracle Solaris Studio 12.3
+# Sun C 5.13 SunOS_i386 2014/10/20 Oracle Solaris Studio 12.4
+# Sun C 5.14 SunOS_i386 2016/05/31 Oracle Developer Studio 12.5
NGX_SUNC_VER=`$CC -V 2>&1 | grep 'Sun C' 2>&1 \
| sed -e 's/^.* Sun C \(.*\)/\1/'`
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/auto/os/darwin
^
|
@@ -17,6 +17,9 @@
MAIN_LINK=
MODULE_LINK="-shared -Wl,-undefined,dynamic_lookup"
+CC_AUX_FLAGS="$CC_AUX_FLAGS -D__APPLE_USE_RFC_3542"
+
+
# kqueue
echo " + kqueue found"
@@ -86,7 +89,6 @@
# sendfile()
-CC_AUX_FLAGS="$CC_AUX_FLAGS"
ngx_feature="sendfile()"
ngx_feature_name="NGX_HAVE_SENDFILE"
ngx_feature_run=yes
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/auto/os/linux
^
|
@@ -157,20 +157,6 @@
. auto/feature
-# sched_setaffinity()
-
-ngx_feature="sched_setaffinity()"
-ngx_feature_name="NGX_HAVE_SCHED_SETAFFINITY"
-ngx_feature_run=no
-ngx_feature_incs="#include <sched.h>"
-ngx_feature_path=
-ngx_feature_libs=
-ngx_feature_test="cpu_set_t mask;
- CPU_ZERO(&mask);
- sched_setaffinity(0, sizeof(cpu_set_t), &mask)"
-. auto/feature
-
-
# crypt_r()
ngx_feature="crypt_r()"
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/auto/unix
^
|
@@ -300,6 +300,18 @@
fi
+ngx_feature="sched_setaffinity()"
+ngx_feature_name="NGX_HAVE_SCHED_SETAFFINITY"
+ngx_feature_run=no
+ngx_feature_incs="#include <sched.h>"
+ngx_feature_path=
+ngx_feature_libs=
+ngx_feature_test="cpu_set_t mask;
+ CPU_ZERO(&mask);
+ sched_setaffinity(0, sizeof(cpu_set_t), &mask)"
+. auto/feature
+
+
ngx_feature="SO_SETFIB"
ngx_feature_name="NGX_HAVE_SETFIB"
ngx_feature_run=no
@@ -394,6 +406,19 @@
. auto/feature
+# BSD way to set IPv4 datagram source address
+
+ngx_feature="IP_SENDSRCADDR"
+ngx_feature_name="NGX_HAVE_IP_SENDSRCADDR"
+ngx_feature_run=no
+ngx_feature_incs="#include <sys/socket.h>
+ #include <netinet/in.h>"
+ngx_feature_path=
+ngx_feature_libs=
+ngx_feature_test="setsockopt(0, IPPROTO_IP, IP_SENDSRCADDR, NULL, 0)"
+. auto/feature
+
+
# Linux way to get IPv4 datagram destination address
ngx_feature="IP_PKTINFO"
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/contrib/vim/syntax/nginx.vim
^
|
@@ -5,2115 +5,2145 @@
finish
end
-setlocal iskeyword+=.
-setlocal iskeyword+=/
-setlocal iskeyword+=:
+" general syntax
-syn match ngxVariable '\$\(\w\+\|{\w\+}\)'
-syn match ngxVariableBlock '\$\(\w\+\|{\w\+}\)' contained
+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\+' contained
syn match ngxVariableString '\$\(\w\+\|{\w\+}\)' contained
-syn region ngxBlock start=+^+ end=+{+ skip=+\${+ contains=ngxComment,ngxDirectiveBlock,ngxVariableBlock,ngxString oneline
-syn region ngxString start=+[^:a-zA-Z>!\\@]\z(["']\)+lc=1 end=+\z1+ skip=+\\\\\|\\\z1+ contains=ngxVariableString
-syn match ngxComment ' *#.*$'
-
-syn keyword ngxBoolean on
-syn keyword ngxBoolean off
-
-syn keyword ngxDirectiveBlock http contained
-syn keyword ngxDirectiveBlock mail contained
-syn keyword ngxDirectiveBlock events contained
-syn keyword ngxDirectiveBlock server contained
-syn keyword ngxDirectiveBlock types contained
-syn keyword ngxDirectiveBlock location contained
-syn keyword ngxDirectiveBlock upstream contained
-syn keyword ngxDirectiveBlock charset_map contained
-syn keyword ngxDirectiveBlock limit_except contained
-syn keyword ngxDirectiveBlock if contained
-syn keyword ngxDirectiveBlock geo contained
-syn keyword ngxDirectiveBlock map contained
-syn keyword ngxDirectiveBlock split_clients contained
-
-syn keyword ngxDirectiveImportant include
-syn keyword ngxDirectiveImportant root
-syn keyword ngxDirectiveImportant server
-syn keyword ngxDirectiveImportant server_name
-syn keyword ngxDirectiveImportant listen contained
-syn region ngxDirectiveImportantListen matchgroup=ngxDirectiveImportant start=+listen+ skip=+\\\\\|\\\;+ end=+;+he=e-1 contains=ngxListenOptions,ngxString
-syn keyword ngxDirectiveImportant internal
-syn keyword ngxDirectiveImportant proxy_pass
-syn keyword ngxDirectiveImportant memcached_pass
-syn keyword ngxDirectiveImportant fastcgi_pass
-syn keyword ngxDirectiveImportant scgi_pass
-syn keyword ngxDirectiveImportant uwsgi_pass
-syn keyword ngxDirectiveImportant try_files
-
-syn keyword ngxListenOptions default_server contained
-syn keyword ngxListenOptions ssl contained
-syn keyword ngxListenOptions http2 contained
-syn keyword ngxListenOptions spdy contained
-syn keyword ngxListenOptions proxy_protocol contained
-syn keyword ngxListenOptions setfib contained
-syn keyword ngxListenOptions fastopen contained
-syn keyword ngxListenOptions backlog contained
-syn keyword ngxListenOptions rcvbuf contained
-syn keyword ngxListenOptions sndbuf contained
-syn keyword ngxListenOptions accept_filter contained
-syn keyword ngxListenOptions deferred contained
-syn keyword ngxListenOptions bind contained
-syn keyword ngxListenOptions ipv6only contained
-syn keyword ngxListenOptions reuseport contained
-syn keyword ngxListenOptions so_keepalive contained
-syn keyword ngxListenOptions keepidle contained
-
-syn keyword ngxDirectiveControl break
-syn keyword ngxDirectiveControl return
-syn keyword ngxDirectiveControl rewrite
-syn keyword ngxDirectiveControl set
-
-syn keyword ngxDirectiveError error_page
-syn keyword ngxDirectiveError post_action
-
-syn keyword ngxDirectiveDeprecated connections
-syn keyword ngxDirectiveDeprecated imap
-syn keyword ngxDirectiveDeprecated limit_zone
-syn keyword ngxDirectiveDeprecated mysql_test
-syn keyword ngxDirectiveDeprecated open_file_cache_retest
-syn keyword ngxDirectiveDeprecated optimize_server_names
-syn keyword ngxDirectiveDeprecated satisfy_any
-syn keyword ngxDirectiveDeprecated so_keepalive
-
-syn keyword ngxDirective absolute_redirect
-syn keyword ngxDirective accept_mutex
-syn keyword ngxDirective accept_mutex_delay
-syn keyword ngxDirective acceptex_read
-syn keyword ngxDirective access_log
-syn keyword ngxDirective add_after_body
-syn keyword ngxDirective add_before_body
-syn keyword ngxDirective add_header
-syn keyword ngxDirective addition_types
-syn keyword ngxDirective aio
-syn keyword ngxDirective aio_write
-syn keyword ngxDirective alias
-syn keyword ngxDirective allow
-syn keyword ngxDirective ancient_browser
-syn keyword ngxDirective ancient_browser_value
-syn keyword ngxDirective auth_basic
-syn keyword ngxDirective auth_basic_user_file
-syn keyword ngxDirective auth_http
-syn keyword ngxDirective auth_http_header
-syn keyword ngxDirective auth_http_pass_client_cert
-syn keyword ngxDirective auth_http_timeout
-syn keyword ngxDirective auth_jwt
-syn keyword ngxDirective auth_jwt_key_file
-syn keyword ngxDirective auth_request
-syn keyword ngxDirective auth_request_set
-syn keyword ngxDirective autoindex
-syn keyword ngxDirective autoindex_exact_size
-syn keyword ngxDirective autoindex_format
-syn keyword ngxDirective autoindex_localtime
-syn keyword ngxDirective charset
-syn keyword ngxDirective charset_map
-syn keyword ngxDirective charset_types
-syn keyword ngxDirective chunked_transfer_encoding
-syn keyword ngxDirective client_body_buffer_size
-syn keyword ngxDirective client_body_in_file_only
-syn keyword ngxDirective client_body_in_single_buffer
-syn keyword ngxDirective client_body_temp_path
-syn keyword ngxDirective client_body_timeout
-syn keyword ngxDirective client_header_buffer_size
-syn keyword ngxDirective client_header_timeout
-syn keyword ngxDirective client_max_body_size
-syn keyword ngxDirective connection_pool_size
-syn keyword ngxDirective create_full_put_path
-syn keyword ngxDirective daemon
-syn keyword ngxDirective dav_access
-syn keyword ngxDirective dav_methods
-syn keyword ngxDirective debug_connection
-syn keyword ngxDirective debug_points
-syn keyword ngxDirective default_type
-syn keyword ngxDirective degradation
-syn keyword ngxDirective degrade
-syn keyword ngxDirective deny
-syn keyword ngxDirective devpoll_changes
-syn keyword ngxDirective devpoll_events
-syn keyword ngxDirective directio
-syn keyword ngxDirective directio_alignment
-syn keyword ngxDirective disable_symlinks
-syn keyword ngxDirective empty_gif
-syn keyword ngxDirective env
-syn keyword ngxDirective epoll_events
-syn keyword ngxDirective error_log
-syn keyword ngxDirective etag
-syn keyword ngxDirective eventport_events
-syn keyword ngxDirective expires
-syn keyword ngxDirective f4f
-syn keyword ngxDirective f4f_buffer_size
-syn keyword ngxDirective fastcgi_bind
-syn keyword ngxDirective fastcgi_buffer_size
-syn keyword ngxDirective fastcgi_buffering
-syn keyword ngxDirective fastcgi_buffers
-syn keyword ngxDirective fastcgi_busy_buffers_size
-syn keyword ngxDirective fastcgi_cache
-syn keyword ngxDirective fastcgi_cache_bypass
-syn keyword ngxDirective fastcgi_cache_key
-syn keyword ngxDirective fastcgi_cache_lock
-syn keyword ngxDirective fastcgi_cache_lock_age
-syn keyword ngxDirective fastcgi_cache_lock_timeout
-syn keyword ngxDirective fastcgi_cache_max_range_offset
-syn keyword ngxDirective fastcgi_cache_methods
-syn keyword ngxDirective fastcgi_cache_min_uses
-syn keyword ngxDirective fastcgi_cache_path
-syn keyword ngxDirective fastcgi_cache_purge
-syn keyword ngxDirective fastcgi_cache_revalidate
-syn keyword ngxDirective fastcgi_cache_use_stale
-syn keyword ngxDirective fastcgi_cache_valid
-syn keyword ngxDirective fastcgi_catch_stderr
-syn keyword ngxDirective fastcgi_connect_timeout
-syn keyword ngxDirective fastcgi_force_ranges
-syn keyword ngxDirective fastcgi_hide_header
-syn keyword ngxDirective fastcgi_ignore_client_abort
-syn keyword ngxDirective fastcgi_ignore_headers
-syn keyword ngxDirective fastcgi_index
-syn keyword ngxDirective fastcgi_intercept_errors
-syn keyword ngxDirective fastcgi_keep_conn
-syn keyword ngxDirective fastcgi_limit_rate
-syn keyword ngxDirective fastcgi_max_temp_file_size
-syn keyword ngxDirective fastcgi_next_upstream
-syn keyword ngxDirective fastcgi_next_upstream_timeout
-syn keyword ngxDirective fastcgi_next_upstream_tries
-syn keyword ngxDirective fastcgi_no_cache
-syn keyword ngxDirective fastcgi_param
-syn keyword ngxDirective fastcgi_pass_header
-syn keyword ngxDirective fastcgi_pass_request_body
-syn keyword ngxDirective fastcgi_pass_request_headers
-syn keyword ngxDirective fastcgi_read_timeout
-syn keyword ngxDirective fastcgi_request_buffering
-syn keyword ngxDirective fastcgi_send_lowat
-syn keyword ngxDirective fastcgi_send_timeout
-syn keyword ngxDirective fastcgi_split_path_info
-syn keyword ngxDirective fastcgi_store
-syn keyword ngxDirective fastcgi_store_access
-syn keyword ngxDirective fastcgi_temp_file_write_size
-syn keyword ngxDirective fastcgi_temp_path
-syn keyword ngxDirective flv
-syn keyword ngxDirective geoip_city
-syn keyword ngxDirective geoip_country
-syn keyword ngxDirective geoip_org
-syn keyword ngxDirective geoip_proxy
-syn keyword ngxDirective geoip_proxy_recursive
-syn keyword ngxDirective google_perftools_profiles
-syn keyword ngxDirective gunzip
-syn keyword ngxDirective gunzip_buffers
-syn keyword ngxDirective gzip
-syn keyword ngxDirective gzip_buffers
-syn keyword ngxDirective gzip_comp_level
-syn keyword ngxDirective gzip_disable
-syn keyword ngxDirective gzip_hash
-syn keyword ngxDirective gzip_http_version
-syn keyword ngxDirective gzip_min_length
-syn keyword ngxDirective gzip_no_buffer
-syn keyword ngxDirective gzip_proxied
-syn keyword ngxDirective gzip_static
-syn keyword ngxDirective gzip_types
-syn keyword ngxDirective gzip_vary
-syn keyword ngxDirective gzip_window
-syn keyword ngxDirective hash
-syn keyword ngxDirective health_check
-syn keyword ngxDirective health_check_timeout
-syn keyword ngxDirective hls
-syn keyword ngxDirective hls_buffers
-syn keyword ngxDirective hls_forward_args
-syn keyword ngxDirective hls_fragment
-syn keyword ngxDirective hls_mp4_buffer_size
-syn keyword ngxDirective hls_mp4_max_buffer_size
-syn keyword ngxDirective http2_chunk_size
-syn keyword ngxDirective http2_body_preread_size
-syn keyword ngxDirective http2_idle_timeout
-syn keyword ngxDirective http2_max_concurrent_streams
-syn keyword ngxDirective http2_max_field_size
-syn keyword ngxDirective http2_max_header_size
-syn keyword ngxDirective http2_max_requests
-syn keyword ngxDirective http2_recv_buffer_size
-syn keyword ngxDirective http2_recv_timeout
-syn keyword ngxDirective if_modified_since
-syn keyword ngxDirective ignore_invalid_headers
-syn keyword ngxDirective image_filter
-syn keyword ngxDirective image_filter_buffer
-syn keyword ngxDirective image_filter_interlace
-syn keyword ngxDirective image_filter_jpeg_quality
-syn keyword ngxDirective image_filter_sharpen
-syn keyword ngxDirective image_filter_transparency
-syn keyword ngxDirective image_filter_webp_quality
-syn keyword ngxDirective imap_auth
-syn keyword ngxDirective imap_capabilities
-syn keyword ngxDirective imap_client_buffer
-syn keyword ngxDirective index
-syn keyword ngxDirective iocp_threads
-syn keyword ngxDirective ip_hash
-syn keyword ngxDirective js_access
-syn keyword ngxDirective js_content
-syn keyword ngxDirective js_filter
-syn keyword ngxDirective js_include
-syn keyword ngxDirective js_preread
-syn keyword ngxDirective js_set
-syn keyword ngxDirective keepalive
-syn keyword ngxDirective keepalive_disable
-syn keyword ngxDirective keepalive_requests
-syn keyword ngxDirective keepalive_timeout
-syn keyword ngxDirective kqueue_changes
-syn keyword ngxDirective kqueue_events
-syn keyword ngxDirective large_client_header_buffers
-syn keyword ngxDirective least_conn
-syn keyword ngxDirective least_time
-syn keyword ngxDirective limit_conn
-syn keyword ngxDirective limit_conn_log_level
-syn keyword ngxDirective limit_conn_status
-syn keyword ngxDirective limit_conn_zone
-syn keyword ngxDirective limit_rate
-syn keyword ngxDirective limit_rate_after
-syn keyword ngxDirective limit_req
-syn keyword ngxDirective limit_req_log_level
-syn keyword ngxDirective limit_req_status
-syn keyword ngxDirective limit_req_zone
-syn keyword ngxDirective lingering_close
-syn keyword ngxDirective lingering_time
-syn keyword ngxDirective lingering_timeout
-syn keyword ngxDirective load_module
-syn keyword ngxDirective lock_file
-syn keyword ngxDirective log_format
-syn keyword ngxDirective log_not_found
-syn keyword ngxDirective log_subrequest
-syn keyword ngxDirective map_hash_bucket_size
-syn keyword ngxDirective map_hash_max_size
-syn keyword ngxDirective match
-syn keyword ngxDirective master_process
-syn keyword ngxDirective max_ranges
-syn keyword ngxDirective memcached_bind
-syn keyword ngxDirective memcached_buffer_size
-syn keyword ngxDirective memcached_connect_timeout
-syn keyword ngxDirective memcached_force_ranges
-syn keyword ngxDirective memcached_gzip_flag
-syn keyword ngxDirective memcached_next_upstream
-syn keyword ngxDirective memcached_next_upstream_timeout
-syn keyword ngxDirective memcached_next_upstream_tries
-syn keyword ngxDirective memcached_read_timeout
-syn keyword ngxDirective memcached_send_timeout
-syn keyword ngxDirective merge_slashes
-syn keyword ngxDirective min_delete_depth
-syn keyword ngxDirective modern_browser
-syn keyword ngxDirective modern_browser_value
-syn keyword ngxDirective mp4
-syn keyword ngxDirective mp4_buffer_size
-syn keyword ngxDirective mp4_max_buffer_size
-syn keyword ngxDirective mp4_limit_rate
-syn keyword ngxDirective mp4_limit_rate_after
-syn keyword ngxDirective msie_padding
-syn keyword ngxDirective msie_refresh
-syn keyword ngxDirective multi_accept
-syn keyword ngxDirective ntlm
-syn keyword ngxDirective open_file_cache
-syn keyword ngxDirective open_file_cache_errors
-syn keyword ngxDirective open_file_cache_events
-syn keyword ngxDirective open_file_cache_min_uses
-syn keyword ngxDirective open_file_cache_valid
-syn keyword ngxDirective open_log_file_cache
-syn keyword ngxDirective output_buffers
-syn keyword ngxDirective override_charset
-syn keyword ngxDirective pcre_jit
-syn keyword ngxDirective perl
-syn keyword ngxDirective perl_modules
-syn keyword ngxDirective perl_require
-syn keyword ngxDirective perl_set
-syn keyword ngxDirective pid
-syn keyword ngxDirective pop3_auth
-syn keyword ngxDirective pop3_capabilities
-syn keyword ngxDirective port_in_redirect
-syn keyword ngxDirective post_acceptex
-syn keyword ngxDirective postpone_gzipping
-syn keyword ngxDirective postpone_output
-syn keyword ngxDirective preread_buffer_size
-syn keyword ngxDirective preread_timeout
-syn keyword ngxDirective protocol nextgroup=ngxMailProtocol skipwhite
-syn keyword ngxMailProtocol imap pop3 smtp contained
-syn keyword ngxDirective proxy
-syn keyword ngxDirective proxy_bind
-syn keyword ngxDirective proxy_buffer
-syn keyword ngxDirective proxy_buffer_size
-syn keyword ngxDirective proxy_buffering
-syn keyword ngxDirective proxy_buffers
-syn keyword ngxDirective proxy_busy_buffers_size
-syn keyword ngxDirective proxy_cache
-syn keyword ngxDirective proxy_cache_bypass
-syn keyword ngxDirective proxy_cache_convert_head
-syn keyword ngxDirective proxy_cache_key
-syn keyword ngxDirective proxy_cache_lock
-syn keyword ngxDirective proxy_cache_lock_age
-syn keyword ngxDirective proxy_cache_lock_timeout
-syn keyword ngxDirective proxy_cache_max_range_offset
-syn keyword ngxDirective proxy_cache_methods
-syn keyword ngxDirective proxy_cache_min_uses
-syn keyword ngxDirective proxy_cache_path
-syn keyword ngxDirective proxy_cache_purge
-syn keyword ngxDirective proxy_cache_revalidate
-syn keyword ngxDirective proxy_cache_use_stale
-syn keyword ngxDirective proxy_cache_valid
-syn keyword ngxDirective proxy_connect_timeout
-syn keyword ngxDirective proxy_cookie_domain
-syn keyword ngxDirective proxy_cookie_path
-syn keyword ngxDirective proxy_download_rate
-syn keyword ngxDirective proxy_force_ranges
-syn keyword ngxDirective proxy_headers_hash_bucket_size
-syn keyword ngxDirective proxy_headers_hash_max_size
-syn keyword ngxDirective proxy_hide_header
-syn keyword ngxDirective proxy_http_version
-syn keyword ngxDirective proxy_ignore_client_abort
-syn keyword ngxDirective proxy_ignore_headers
-syn keyword ngxDirective proxy_intercept_errors
-syn keyword ngxDirective proxy_limit_rate
-syn keyword ngxDirective proxy_max_temp_file_size
-syn keyword ngxDirective proxy_method
-syn keyword ngxDirective proxy_next_upstream
-syn keyword ngxDirective proxy_next_upstream_timeout
-syn keyword ngxDirective proxy_next_upstream_tries
-syn keyword ngxDirective proxy_no_cache
-syn keyword ngxDirective proxy_pass_error_message
-syn keyword ngxDirective proxy_pass_header
-syn keyword ngxDirective proxy_pass_request_body
-syn keyword ngxDirective proxy_pass_request_headers
-syn keyword ngxDirective proxy_protocol
-syn keyword ngxDirective proxy_protocol_timeout
-syn keyword ngxDirective proxy_read_timeout
-syn keyword ngxDirective proxy_redirect
-syn keyword ngxDirective proxy_request_buffering
-syn keyword ngxDirective proxy_responses
-syn keyword ngxDirective proxy_send_lowat
-syn keyword ngxDirective proxy_send_timeout
-syn keyword ngxDirective proxy_set_body
-syn keyword ngxDirective proxy_set_header
-syn keyword ngxDirective proxy_ssl_certificate
-syn keyword ngxDirective proxy_ssl_certificate_key
-syn keyword ngxDirective proxy_ssl_ciphers
-syn keyword ngxDirective proxy_ssl_crl
-syn keyword ngxDirective proxy_ssl_name
-syn keyword ngxDirective proxy_ssl_password_file
-syn keyword ngxDirective proxy_ssl_protocols nextgroup=ngxSSLProtocol skipwhite
-syn keyword ngxDirective proxy_ssl_server_name
-syn keyword ngxDirective proxy_ssl_session_reuse
-syn keyword ngxDirective proxy_ssl_trusted_certificate
-syn keyword ngxDirective proxy_ssl_verify
-syn keyword ngxDirective proxy_ssl_verify_depth
-syn keyword ngxDirective proxy_store
-syn keyword ngxDirective proxy_store_access
-syn keyword ngxDirective proxy_temp_file_write_size
-syn keyword ngxDirective proxy_temp_path
-syn keyword ngxDirective proxy_timeout
-syn keyword ngxDirective proxy_upload_rate
-syn keyword ngxDirective queue
-syn keyword ngxDirective random_index
-syn keyword ngxDirective read_ahead
-syn keyword ngxDirective real_ip_header
-syn keyword ngxDirective real_ip_recursive
-syn keyword ngxDirective recursive_error_pages
-syn keyword ngxDirective referer_hash_bucket_size
-syn keyword ngxDirective referer_hash_max_size
-syn keyword ngxDirective request_pool_size
-syn keyword ngxDirective reset_timedout_connection
-syn keyword ngxDirective resolver
-syn keyword ngxDirective resolver_timeout
-syn keyword ngxDirective rewrite_log
-syn keyword ngxDirective rtsig_overflow_events
-syn keyword ngxDirective rtsig_overflow_test
-syn keyword ngxDirective rtsig_overflow_threshold
-syn keyword ngxDirective rtsig_signo
-syn keyword ngxDirective satisfy
-syn keyword ngxDirective scgi_bind
-syn keyword ngxDirective scgi_buffer_size
-syn keyword ngxDirective scgi_buffering
-syn keyword ngxDirective scgi_buffers
-syn keyword ngxDirective scgi_busy_buffers_size
-syn keyword ngxDirective scgi_cache
-syn keyword ngxDirective scgi_cache_bypass
-syn keyword ngxDirective scgi_cache_key
-syn keyword ngxDirective scgi_cache_lock
-syn keyword ngxDirective scgi_cache_lock_age
-syn keyword ngxDirective scgi_cache_lock_timeout
-syn keyword ngxDirective scgi_cache_max_range_offset
-syn keyword ngxDirective scgi_cache_methods
-syn keyword ngxDirective scgi_cache_min_uses
-syn keyword ngxDirective scgi_cache_path
-syn keyword ngxDirective scgi_cache_purge
-syn keyword ngxDirective scgi_cache_revalidate
-syn keyword ngxDirective scgi_cache_use_stale
-syn keyword ngxDirective scgi_cache_valid
-syn keyword ngxDirective scgi_connect_timeout
-syn keyword ngxDirective scgi_force_ranges
-syn keyword ngxDirective scgi_hide_header
-syn keyword ngxDirective scgi_ignore_client_abort
-syn keyword ngxDirective scgi_ignore_headers
-syn keyword ngxDirective scgi_intercept_errors
-syn keyword ngxDirective scgi_limit_rate
-syn keyword ngxDirective scgi_max_temp_file_size
-syn keyword ngxDirective scgi_next_upstream
-syn keyword ngxDirective scgi_next_upstream_timeout
-syn keyword ngxDirective scgi_next_upstream_tries
-syn keyword ngxDirective scgi_no_cache
-syn keyword ngxDirective scgi_param
-syn keyword ngxDirective scgi_pass_header
-syn keyword ngxDirective scgi_pass_request_body
-syn keyword ngxDirective scgi_pass_request_headers
-syn keyword ngxDirective scgi_read_timeout
-syn keyword ngxDirective scgi_request_buffering
-syn keyword ngxDirective scgi_send_timeout
-syn keyword ngxDirective scgi_store
-syn keyword ngxDirective scgi_store_access
-syn keyword ngxDirective scgi_temp_file_write_size
-syn keyword ngxDirective scgi_temp_path
-syn keyword ngxDirective secure_link
-syn keyword ngxDirective secure_link_md5
-syn keyword ngxDirective secure_link_secret
-syn keyword ngxDirective send_lowat
-syn keyword ngxDirective send_timeout
-syn keyword ngxDirective sendfile
-syn keyword ngxDirective sendfile_max_chunk
-syn keyword ngxDirective server_name_in_redirect
-syn keyword ngxDirective server_names_hash_bucket_size
-syn keyword ngxDirective server_names_hash_max_size
-syn keyword ngxDirective server_tokens
-syn keyword ngxDirective session_log
-syn keyword ngxDirective session_log_format
-syn keyword ngxDirective session_log_zone
-syn keyword ngxDirective set_real_ip_from
-syn keyword ngxDirective slice
-syn keyword ngxDirective smtp_auth
-syn keyword ngxDirective smtp_capabilities
-syn keyword ngxDirective smtp_client_buffer
-syn keyword ngxDirective smtp_greeting_delay
-syn keyword ngxDirective source_charset
-syn keyword ngxDirective spdy_chunk_size
-syn keyword ngxDirective spdy_headers_comp
-syn keyword ngxDirective spdy_keepalive_timeout
-syn keyword ngxDirective spdy_max_concurrent_streams
-syn keyword ngxDirective spdy_pool_size
-syn keyword ngxDirective spdy_recv_buffer_size
-syn keyword ngxDirective spdy_recv_timeout
-syn keyword ngxDirective spdy_streams_index_size
-syn keyword ngxDirective ssi
-syn keyword ngxDirective ssi_ignore_recycled_buffers
-syn keyword ngxDirective ssi_last_modified
-syn keyword ngxDirective ssi_min_file_chunk
-syn keyword ngxDirective ssi_silent_errors
-syn keyword ngxDirective ssi_types
-syn keyword ngxDirective ssi_value_length
-syn keyword ngxDirective ssl
-syn keyword ngxDirective ssl_buffer_size
-syn keyword ngxDirective ssl_certificate
-syn keyword ngxDirective ssl_certificate_key
-syn keyword ngxDirective ssl_ciphers
-syn keyword ngxDirective ssl_client_certificate
-syn keyword ngxDirective ssl_crl
-syn keyword ngxDirective ssl_dhparam
-syn keyword ngxDirective ssl_ecdh_curve
-syn keyword ngxDirective ssl_engine
-syn keyword ngxDirective ssl_handshake_timeout
-syn keyword ngxDirective ssl_password_file
-syn keyword ngxDirective ssl_prefer_server_ciphers
-syn keyword ngxDirective ssl_preread
-syn keyword ngxDirective ssl_protocols nextgroup=ngxSSLProtocol skipwhite
-syn keyword ngxSSLProtocol SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2 contained nextgroup=ngxSSLProtocol skipwhite
-syn keyword ngxDirective ssl_session_cache
-syn keyword ngxDirective ssl_session_ticket_key
-syn keyword ngxDirective ssl_session_tickets
-syn keyword ngxDirective ssl_session_timeout
-syn keyword ngxDirective ssl_stapling
-syn keyword ngxDirective ssl_stapling_file
-syn keyword ngxDirective ssl_stapling_responder
-syn keyword ngxDirective ssl_stapling_verify
-syn keyword ngxDirective ssl_trusted_certificate
-syn keyword ngxDirective ssl_verify_client
-syn keyword ngxDirective ssl_verify_depth
-syn keyword ngxDirective starttls
-syn keyword ngxDirective state
-syn keyword ngxDirective status
-syn keyword ngxDirective status_format
-syn keyword ngxDirective status_zone
-syn keyword ngxDirective sticky
-syn keyword ngxDirective sticky_cookie_insert
-syn keyword ngxDirective stub_status
-syn keyword ngxDirective sub_filter
-syn keyword ngxDirective sub_filter_last_modified
-syn keyword ngxDirective sub_filter_once
-syn keyword ngxDirective sub_filter_types
-syn keyword ngxDirective tcp_nodelay
-syn keyword ngxDirective tcp_nopush
-syn keyword ngxDirective thread_pool
-syn keyword ngxDirective thread_stack_size
-syn keyword ngxDirective timeout
-syn keyword ngxDirective timer_resolution
-syn keyword ngxDirective types_hash_bucket_size
-syn keyword ngxDirective types_hash_max_size
-syn keyword ngxDirective underscores_in_headers
-syn keyword ngxDirective uninitialized_variable_warn
-syn keyword ngxDirective upstream_conf
-syn keyword ngxDirective use
-syn keyword ngxDirective user
-syn keyword ngxDirective userid
-syn keyword ngxDirective userid_domain
-syn keyword ngxDirective userid_expires
-syn keyword ngxDirective userid_mark
-syn keyword ngxDirective userid_name
-syn keyword ngxDirective userid_p3p
-syn keyword ngxDirective userid_path
-syn keyword ngxDirective userid_service
-syn keyword ngxDirective uwsgi_bind
-syn keyword ngxDirective uwsgi_buffer_size
-syn keyword ngxDirective uwsgi_buffering
-syn keyword ngxDirective uwsgi_buffers
-syn keyword ngxDirective uwsgi_busy_buffers_size
-syn keyword ngxDirective uwsgi_cache
-syn keyword ngxDirective uwsgi_cache_bypass
-syn keyword ngxDirective uwsgi_cache_key
-syn keyword ngxDirective uwsgi_cache_lock
-syn keyword ngxDirective uwsgi_cache_lock_age
-syn keyword ngxDirective uwsgi_cache_lock_timeout
-syn keyword ngxDirective uwsgi_cache_methods
-syn keyword ngxDirective uwsgi_cache_min_uses
-syn keyword ngxDirective uwsgi_cache_path
-syn keyword ngxDirective uwsgi_cache_purge
-syn keyword ngxDirective uwsgi_cache_revalidate
-syn keyword ngxDirective uwsgi_cache_use_stale
-syn keyword ngxDirective uwsgi_cache_valid
-syn keyword ngxDirective uwsgi_connect_timeout
-syn keyword ngxDirective uwsgi_force_ranges
-syn keyword ngxDirective uwsgi_hide_header
-syn keyword ngxDirective uwsgi_ignore_client_abort
-syn keyword ngxDirective uwsgi_ignore_headers
-syn keyword ngxDirective uwsgi_intercept_errors
-syn keyword ngxDirective uwsgi_limit_rate
-syn keyword ngxDirective uwsgi_max_temp_file_size
-syn keyword ngxDirective uwsgi_modifier1
-syn keyword ngxDirective uwsgi_modifier2
-syn keyword ngxDirective uwsgi_next_upstream
-syn keyword ngxDirective uwsgi_next_upstream_timeout
-syn keyword ngxDirective uwsgi_next_upstream_tries
-syn keyword ngxDirective uwsgi_no_cache
-syn keyword ngxDirective uwsgi_param
-syn keyword ngxDirective uwsgi_pass
-syn keyword ngxDirective uwsgi_pass_header
-syn keyword ngxDirective uwsgi_pass_request_body
-syn keyword ngxDirective uwsgi_pass_request_headers
-syn keyword ngxDirective uwsgi_read_timeout
-syn keyword ngxDirective uwsgi_request_buffering
-syn keyword ngxDirective uwsgi_send_timeout
-syn keyword ngxDirective uwsgi_ssl_certificate
-syn keyword ngxDirective uwsgi_ssl_certificate_key
-syn keyword ngxDirective uwsgi_ssl_ciphers
-syn keyword ngxDirective uwsgi_ssl_crl
-syn keyword ngxDirective uwsgi_ssl_name
-syn keyword ngxDirective uwsgi_ssl_password_file
-syn keyword ngxDirective uwsgi_ssl_protocols nextgroup=ngxSSLProtocol skipwhite
-syn keyword ngxDirective uwsgi_ssl_server_name
-syn keyword ngxDirective uwsgi_ssl_session_reuse
-syn keyword ngxDirective uwsgi_ssl_trusted_certificate
-syn keyword ngxDirective uwsgi_ssl_verify
-syn keyword ngxDirective uwsgi_ssl_verify_depth
-syn keyword ngxDirective uwsgi_store
-syn keyword ngxDirective uwsgi_store_access
-syn keyword ngxDirective uwsgi_string
-syn keyword ngxDirective uwsgi_temp_file_write_size
-syn keyword ngxDirective uwsgi_temp_path
-syn keyword ngxDirective valid_referers
-syn keyword ngxDirective variables_hash_bucket_size
-syn keyword ngxDirective variables_hash_max_size
-syn keyword ngxDirective worker_aio_requests
-syn keyword ngxDirective worker_connections
-syn keyword ngxDirective worker_cpu_affinity
-syn keyword ngxDirective worker_priority
-syn keyword ngxDirective worker_processes
-syn keyword ngxDirective worker_rlimit_core
-syn keyword ngxDirective worker_rlimit_nofile
-syn keyword ngxDirective worker_rlimit_sigpending
-syn keyword ngxDirective worker_threads
-syn keyword ngxDirective working_directory
-syn keyword ngxDirective xclient
-syn keyword ngxDirective xml_entities
-syn keyword ngxDirective xslt_last_modified
-syn keyword ngxDirective xslt_param
-syn keyword ngxDirective xslt_string_param
-syn keyword ngxDirective xslt_stylesheet
-syn keyword ngxDirective xslt_types
-syn keyword ngxDirective zone
+
+syn cluster ngxTopLevel
+ \ contains=ngxName,ngxString,ngxComment
+syn cluster ngxDirectives
+ \ contains=ngxDirective,ngxDirectiveBlock,ngxDirectiveImportant
+ \ add=ngxDirectiveControl,ngxDirectiveError,ngxDirectiveDeprecated
+ \ add=ngxDirectiveThirdParty
+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 spdy proxy_protocol
+ \ setfib fastopen backlog rcvbuf sndbuf accept_filter deferred bind
+ \ ipv6only reuseport so_keepalive keepidle
+ \ nextgroup=@ngxListenParams skipwhite skipempty
+syn cluster ngxListenParams
+ \ contains=ngxListenParam,ngxListenString,ngxListenComment
+ \ add=ngxListenOptions
+
+syn keyword ngxDirectiveBlock contained http
+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 ngxDirectiveImportant contained include
+syn keyword ngxDirectiveImportant contained root
+"syn keyword ngxDirectiveImportant contained server
+syn keyword ngxDirectiveImportant contained server_name
+"syn keyword ngxDirectiveImportant contained listen
+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 connections
+syn keyword ngxDirectiveDeprecated contained imap
+syn keyword ngxDirectiveDeprecated contained limit_zone
+syn keyword ngxDirectiveDeprecated contained mysql_test
+syn keyword ngxDirectiveDeprecated contained open_file_cache_retest
+syn keyword ngxDirectiveDeprecated contained optimize_server_names
+syn keyword ngxDirectiveDeprecated contained satisfy_any
+syn keyword ngxDirectiveDeprecated contained so_keepalive
+
+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 addition_types
+syn keyword ngxDirective contained aio
+syn keyword ngxDirective contained aio_write
+syn keyword ngxDirective contained alias
+syn keyword ngxDirective contained allow
+syn keyword ngxDirective contained ancient_browser
+syn keyword ngxDirective contained ancient_browser_value
+syn keyword ngxDirective contained auth_basic
+syn keyword ngxDirective contained auth_basic_user_file
+syn keyword ngxDirective contained auth_http
+syn keyword ngxDirective contained auth_http_header
+syn keyword ngxDirective contained auth_http_pass_client_cert
+syn keyword ngxDirective contained auth_http_timeout
+syn keyword ngxDirective contained auth_jwt
+syn keyword ngxDirective contained auth_jwt_key_file
+syn keyword ngxDirective contained auth_request
+syn keyword ngxDirective contained auth_request_set
+syn keyword ngxDirective contained autoindex
+syn keyword ngxDirective contained autoindex_exact_size
+syn keyword ngxDirective contained autoindex_format
+syn keyword ngxDirective contained autoindex_localtime
+syn keyword ngxDirective contained charset
+syn keyword ngxDirective contained charset_map
+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_bypass
+syn keyword ngxDirective contained fastcgi_cache_key
+syn keyword ngxDirective contained fastcgi_cache_lock
+syn keyword ngxDirective contained fastcgi_cache_lock_age
+syn keyword ngxDirective contained fastcgi_cache_lock_timeout
+syn keyword ngxDirective contained fastcgi_cache_max_range_offset
+syn keyword ngxDirective contained fastcgi_cache_methods
+syn keyword ngxDirective contained fastcgi_cache_min_uses
+syn keyword ngxDirective contained fastcgi_cache_path
+syn keyword ngxDirective contained fastcgi_cache_purge
+syn keyword ngxDirective contained fastcgi_cache_revalidate
+syn keyword ngxDirective contained fastcgi_cache_use_stale
+syn keyword ngxDirective contained fastcgi_cache_valid
+syn keyword ngxDirective contained fastcgi_catch_stderr
+syn keyword ngxDirective contained fastcgi_connect_timeout
+syn keyword ngxDirective contained fastcgi_force_ranges
+syn keyword ngxDirective contained fastcgi_hide_header
+syn keyword ngxDirective contained fastcgi_ignore_client_abort
+syn keyword ngxDirective contained fastcgi_ignore_headers
+syn keyword ngxDirective contained fastcgi_index
+syn keyword ngxDirective contained fastcgi_intercept_errors
+syn keyword ngxDirective contained fastcgi_keep_conn
+syn keyword ngxDirective contained fastcgi_limit_rate
+syn keyword ngxDirective contained fastcgi_max_temp_file_size
+syn keyword ngxDirective contained fastcgi_next_upstream
+syn keyword ngxDirective contained fastcgi_next_upstream_timeout
+syn keyword ngxDirective contained fastcgi_next_upstream_tries
+syn keyword ngxDirective contained fastcgi_no_cache
+syn keyword ngxDirective contained fastcgi_param
+syn keyword ngxDirective contained fastcgi_pass_header
+syn keyword ngxDirective contained fastcgi_pass_request_body
+syn keyword ngxDirective contained fastcgi_pass_request_headers
+syn keyword ngxDirective contained fastcgi_read_timeout
+syn keyword ngxDirective contained fastcgi_request_buffering
+syn keyword ngxDirective contained fastcgi_send_lowat
+syn keyword ngxDirective contained fastcgi_send_timeout
+syn keyword ngxDirective contained fastcgi_split_path_info
+syn keyword ngxDirective contained fastcgi_store
+syn keyword ngxDirective contained fastcgi_store_access
+syn keyword ngxDirective contained fastcgi_temp_file_write_size
+syn keyword ngxDirective contained fastcgi_temp_path
+syn keyword ngxDirective contained flv
+syn keyword ngxDirective contained geoip_city
+syn keyword ngxDirective contained geoip_country
+syn keyword ngxDirective contained geoip_org
+syn keyword ngxDirective contained geoip_proxy
+syn keyword ngxDirective contained geoip_proxy_recursive
+syn keyword ngxDirective contained google_perftools_profiles
+syn keyword ngxDirective contained 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_chunk_size
+syn keyword ngxDirective contained http2_body_preread_size
+syn keyword ngxDirective contained http2_idle_timeout
+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_recv_buffer_size
+syn keyword ngxDirective contained http2_recv_timeout
+syn keyword ngxDirective contained if_modified_since
+syn keyword ngxDirective contained ignore_invalid_headers
+syn keyword ngxDirective contained image_filter
+syn keyword ngxDirective contained image_filter_buffer
+syn keyword ngxDirective contained image_filter_interlace
+syn keyword ngxDirective contained image_filter_jpeg_quality
+syn keyword ngxDirective contained image_filter_sharpen
+syn keyword ngxDirective contained image_filter_transparency
+syn keyword ngxDirective contained image_filter_webp_quality
+syn keyword ngxDirective contained imap_auth
+syn keyword ngxDirective contained imap_capabilities
+syn keyword ngxDirective contained imap_client_buffer
+syn keyword ngxDirective contained index
+syn keyword ngxDirective contained iocp_threads
+syn keyword ngxDirective contained ip_hash
+syn keyword ngxDirective contained js_access
+syn keyword ngxDirective contained js_content
+syn keyword ngxDirective contained js_filter
+syn keyword ngxDirective contained js_include
+syn keyword ngxDirective contained js_preread
+syn keyword ngxDirective contained js_set
+syn keyword ngxDirective contained keepalive
+syn keyword ngxDirective contained keepalive_disable
+syn keyword ngxDirective contained keepalive_requests
+syn keyword ngxDirective contained keepalive_timeout
+syn keyword ngxDirective contained kqueue_changes
+syn keyword ngxDirective contained kqueue_events
+syn keyword ngxDirective contained large_client_header_buffers
+syn keyword ngxDirective contained least_conn
+syn keyword ngxDirective contained least_time
+syn keyword ngxDirective contained limit_conn
+syn keyword ngxDirective contained limit_conn_log_level
+syn keyword ngxDirective contained limit_conn_status
+syn keyword ngxDirective contained limit_conn_zone
+syn keyword ngxDirective contained limit_rate
+syn keyword ngxDirective contained limit_rate_after
+syn keyword ngxDirective contained limit_req
+syn keyword ngxDirective contained limit_req_log_level
+syn keyword ngxDirective contained limit_req_status
+syn keyword ngxDirective contained limit_req_zone
+syn keyword ngxDirective contained lingering_close
+syn keyword ngxDirective contained lingering_time
+syn keyword ngxDirective contained lingering_timeout
+syn keyword ngxDirective contained load_module
+syn keyword ngxDirective contained lock_file
+syn keyword ngxDirective contained log_format
+syn keyword ngxDirective contained log_not_found
+syn keyword ngxDirective contained log_subrequest
+syn keyword ngxDirective contained map_hash_bucket_size
+syn keyword ngxDirective contained map_hash_max_size
+syn keyword ngxDirective contained match
+syn keyword ngxDirective contained master_process
+syn keyword ngxDirective contained max_ranges
+syn keyword ngxDirective contained memcached_bind
+syn keyword ngxDirective contained memcached_buffer_size
+syn keyword ngxDirective contained memcached_connect_timeout
+syn keyword ngxDirective contained memcached_force_ranges
+syn keyword ngxDirective contained memcached_gzip_flag
+syn keyword ngxDirective contained memcached_next_upstream
+syn keyword ngxDirective contained memcached_next_upstream_timeout
+syn keyword ngxDirective contained memcached_next_upstream_tries
+syn keyword ngxDirective contained memcached_read_timeout
+syn keyword ngxDirective contained memcached_send_timeout
+syn keyword ngxDirective contained merge_slashes
+syn keyword ngxDirective contained min_delete_depth
+syn keyword ngxDirective contained modern_browser
+syn keyword ngxDirective contained modern_browser_value
+syn keyword ngxDirective contained mp4
+syn keyword ngxDirective contained mp4_buffer_size
+syn keyword ngxDirective contained mp4_max_buffer_size
+syn keyword ngxDirective contained mp4_limit_rate
+syn keyword ngxDirective contained mp4_limit_rate_after
+syn keyword ngxDirective contained msie_padding
+syn keyword ngxDirective contained msie_refresh
+syn keyword ngxDirective contained multi_accept
+syn keyword ngxDirective contained ntlm
+syn keyword ngxDirective contained open_file_cache
+syn keyword ngxDirective contained open_file_cache_errors
+syn keyword ngxDirective contained open_file_cache_events
+syn keyword ngxDirective contained open_file_cache_min_uses
+syn keyword ngxDirective contained open_file_cache_valid
+syn keyword ngxDirective contained open_log_file_cache
+syn keyword ngxDirective contained output_buffers
+syn keyword ngxDirective contained override_charset
+syn keyword ngxDirective contained pcre_jit
+syn keyword ngxDirective contained perl
+syn keyword ngxDirective contained perl_modules
+syn keyword ngxDirective contained perl_require
+syn keyword ngxDirective contained perl_set
+syn keyword ngxDirective contained pid
+syn keyword ngxDirective contained pop3_auth
+syn keyword ngxDirective contained pop3_capabilities
+syn keyword ngxDirective contained port_in_redirect
+syn keyword ngxDirective contained post_acceptex
+syn keyword ngxDirective contained postpone_gzipping
+syn keyword ngxDirective contained postpone_output
+syn keyword ngxDirective contained preread_buffer_size
+syn keyword ngxDirective contained preread_timeout
+syn keyword ngxDirective contained protocol
+syn keyword ngxDirective contained proxy
+syn keyword ngxDirective contained proxy_bind
+syn keyword ngxDirective contained proxy_buffer
+syn keyword ngxDirective contained proxy_buffer_size
+syn keyword ngxDirective contained proxy_buffering
+syn keyword ngxDirective contained proxy_buffers
+syn keyword ngxDirective contained proxy_busy_buffers_size
+syn keyword ngxDirective contained proxy_cache
+syn keyword ngxDirective contained proxy_cache_bypass
+syn keyword ngxDirective contained proxy_cache_convert_head
+syn keyword ngxDirective contained proxy_cache_key
+syn keyword ngxDirective contained proxy_cache_lock
+syn keyword ngxDirective contained proxy_cache_lock_age
+syn keyword ngxDirective contained proxy_cache_lock_timeout
+syn keyword ngxDirective contained proxy_cache_max_range_offset
+syn keyword ngxDirective contained proxy_cache_methods
+syn keyword ngxDirective contained proxy_cache_min_uses
+syn keyword ngxDirective contained proxy_cache_path
+syn keyword ngxDirective contained proxy_cache_purge
+syn keyword ngxDirective contained proxy_cache_revalidate
+syn keyword ngxDirective contained proxy_cache_use_stale
+syn keyword ngxDirective contained proxy_cache_valid
+syn keyword ngxDirective contained proxy_connect_timeout
+syn keyword ngxDirective contained proxy_cookie_domain
+syn keyword ngxDirective contained proxy_cookie_path
+syn keyword ngxDirective contained proxy_download_rate
+syn keyword ngxDirective contained proxy_force_ranges
+syn keyword ngxDirective contained proxy_headers_hash_bucket_size
+syn keyword ngxDirective contained proxy_headers_hash_max_size
+syn keyword ngxDirective contained proxy_hide_header
+syn keyword ngxDirective contained proxy_http_version
+syn keyword ngxDirective contained proxy_ignore_client_abort
+syn keyword ngxDirective contained proxy_ignore_headers
+syn keyword ngxDirective contained proxy_intercept_errors
+syn keyword ngxDirective contained proxy_limit_rate
+syn keyword ngxDirective contained proxy_max_temp_file_size
+syn keyword ngxDirective contained proxy_method
+syn keyword ngxDirective contained proxy_next_upstream
+syn keyword ngxDirective contained proxy_next_upstream_timeout
+syn keyword ngxDirective contained proxy_next_upstream_tries
+syn keyword ngxDirective contained proxy_no_cache
+syn keyword ngxDirective contained proxy_pass_error_message
+syn keyword ngxDirective contained proxy_pass_header
+syn keyword ngxDirective contained proxy_pass_request_body
+syn keyword ngxDirective contained proxy_pass_request_headers
+syn keyword ngxDirective contained proxy_protocol
+syn keyword ngxDirective contained proxy_protocol_timeout
+syn keyword ngxDirective contained proxy_read_timeout
+syn keyword ngxDirective contained proxy_redirect
+syn keyword ngxDirective contained proxy_request_buffering
+syn keyword ngxDirective contained proxy_responses
+syn keyword ngxDirective contained proxy_send_lowat
+syn keyword ngxDirective contained proxy_send_timeout
+syn keyword ngxDirective contained proxy_set_body
+syn keyword ngxDirective contained proxy_set_header
+syn keyword ngxDirective contained proxy_ssl_certificate
+syn keyword ngxDirective contained proxy_ssl_certificate_key
+syn keyword ngxDirective contained proxy_ssl_ciphers
+syn keyword ngxDirective contained proxy_ssl_crl
+syn keyword ngxDirective contained proxy_ssl_name
+syn keyword ngxDirective contained proxy_ssl_password_file
+syn keyword ngxDirective contained proxy_ssl_protocols
+syn keyword ngxDirective contained proxy_ssl_server_name
+syn keyword ngxDirective contained proxy_ssl_session_reuse
+syn keyword ngxDirective contained proxy_ssl_trusted_certificate
+syn keyword ngxDirective contained proxy_ssl_verify
+syn keyword ngxDirective contained proxy_ssl_verify_depth
+syn keyword ngxDirective contained proxy_store
+syn keyword ngxDirective contained proxy_store_access
+syn keyword ngxDirective contained proxy_temp_file_write_size
+syn keyword ngxDirective contained proxy_temp_path
+syn keyword ngxDirective contained proxy_timeout
+syn keyword ngxDirective contained proxy_upload_rate
+syn keyword ngxDirective contained queue
+syn keyword ngxDirective contained random_index
+syn keyword ngxDirective contained read_ahead
+syn keyword ngxDirective contained real_ip_header
+syn keyword ngxDirective contained real_ip_recursive
+syn keyword ngxDirective contained recursive_error_pages
+syn keyword ngxDirective contained referer_hash_bucket_size
+syn keyword ngxDirective contained referer_hash_max_size
+syn keyword ngxDirective contained request_pool_size
+syn keyword ngxDirective contained reset_timedout_connection
+syn keyword ngxDirective contained resolver
+syn keyword ngxDirective contained resolver_timeout
+syn keyword ngxDirective contained rewrite_log
+syn keyword ngxDirective contained rtsig_overflow_events
+syn keyword ngxDirective contained rtsig_overflow_test
+syn keyword ngxDirective contained rtsig_overflow_threshold
+syn keyword ngxDirective contained rtsig_signo
+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_bypass
+syn keyword ngxDirective contained scgi_cache_key
+syn keyword ngxDirective contained scgi_cache_lock
+syn keyword ngxDirective contained scgi_cache_lock_age
+syn keyword ngxDirective contained scgi_cache_lock_timeout
+syn keyword ngxDirective contained scgi_cache_max_range_offset
+syn keyword ngxDirective contained scgi_cache_methods
+syn keyword ngxDirective contained scgi_cache_min_uses
+syn keyword ngxDirective contained scgi_cache_path
+syn keyword ngxDirective contained scgi_cache_purge
+syn keyword ngxDirective contained scgi_cache_revalidate
+syn keyword ngxDirective contained scgi_cache_use_stale
+syn keyword ngxDirective contained scgi_cache_valid
+syn keyword ngxDirective contained scgi_connect_timeout
+syn keyword ngxDirective contained scgi_force_ranges
+syn keyword ngxDirective contained scgi_hide_header
+syn keyword ngxDirective contained scgi_ignore_client_abort
+syn keyword ngxDirective contained scgi_ignore_headers
+syn keyword ngxDirective contained scgi_intercept_errors
+syn keyword ngxDirective contained scgi_limit_rate
+syn keyword ngxDirective contained scgi_max_temp_file_size
+syn keyword ngxDirective contained scgi_next_upstream
+syn keyword ngxDirective contained scgi_next_upstream_timeout
+syn keyword ngxDirective contained scgi_next_upstream_tries
+syn keyword ngxDirective contained scgi_no_cache
+syn keyword ngxDirective contained scgi_param
+syn keyword ngxDirective contained scgi_pass_header
+syn keyword ngxDirective contained scgi_pass_request_body
+syn keyword ngxDirective contained scgi_pass_request_headers
+syn keyword ngxDirective contained scgi_read_timeout
+syn keyword ngxDirective contained scgi_request_buffering
+syn keyword ngxDirective contained scgi_send_timeout
+syn keyword ngxDirective contained scgi_store
+syn keyword ngxDirective contained scgi_store_access
+syn keyword ngxDirective contained scgi_temp_file_write_size
+syn keyword ngxDirective contained scgi_temp_path
+syn keyword ngxDirective contained secure_link
+syn keyword ngxDirective contained secure_link_md5
+syn keyword ngxDirective contained secure_link_secret
+syn keyword ngxDirective contained send_lowat
+syn keyword ngxDirective contained send_timeout
+syn keyword ngxDirective contained sendfile
+syn keyword ngxDirective contained sendfile_max_chunk
+syn keyword ngxDirective contained server_name_in_redirect
+syn keyword ngxDirective contained server_names_hash_bucket_size
+syn keyword ngxDirective contained server_names_hash_max_size
+syn keyword ngxDirective contained server_tokens
+syn keyword ngxDirective contained session_log
+syn keyword ngxDirective contained session_log_format
+syn keyword ngxDirective contained session_log_zone
+syn keyword ngxDirective contained set_real_ip_from
+syn keyword ngxDirective contained slice
+syn keyword ngxDirective contained smtp_auth
+syn keyword ngxDirective contained smtp_capabilities
+syn keyword ngxDirective contained smtp_client_buffer
+syn keyword ngxDirective contained smtp_greeting_delay
+syn keyword ngxDirective contained source_charset
+syn keyword ngxDirective contained spdy_chunk_size
+syn keyword ngxDirective contained spdy_headers_comp
+syn keyword ngxDirective contained spdy_keepalive_timeout
+syn keyword ngxDirective contained spdy_max_concurrent_streams
+syn keyword ngxDirective contained spdy_pool_size
+syn keyword ngxDirective contained spdy_recv_buffer_size
+syn keyword ngxDirective contained spdy_recv_timeout
+syn keyword ngxDirective contained spdy_streams_index_size
+syn keyword ngxDirective contained ssi
+syn keyword ngxDirective contained ssi_ignore_recycled_buffers
+syn keyword ngxDirective contained ssi_last_modified
+syn keyword ngxDirective contained ssi_min_file_chunk
+syn keyword ngxDirective contained ssi_silent_errors
+syn keyword ngxDirective contained ssi_types
+syn keyword ngxDirective contained ssi_value_length
+syn keyword ngxDirective contained ssl
+syn keyword ngxDirective contained ssl_buffer_size
+syn keyword ngxDirective contained ssl_certificate
+syn keyword ngxDirective contained ssl_certificate_key
+syn keyword ngxDirective contained ssl_ciphers
+syn keyword ngxDirective contained ssl_client_certificate
+syn keyword ngxDirective contained ssl_crl
+syn keyword ngxDirective contained ssl_dhparam
+syn keyword ngxDirective contained ssl_ecdh_curve
+syn keyword ngxDirective contained ssl_engine
+syn keyword ngxDirective contained ssl_handshake_timeout
+syn keyword ngxDirective contained ssl_password_file
+syn keyword ngxDirective contained ssl_prefer_server_ciphers
+syn keyword ngxDirective contained ssl_preread
+syn keyword ngxDirective contained ssl_protocols
+syn keyword ngxDirective contained ssl_session_cache
+syn keyword ngxDirective contained ssl_session_ticket_key
+syn keyword ngxDirective contained ssl_session_tickets
+syn keyword ngxDirective contained ssl_session_timeout
+syn keyword ngxDirective contained ssl_stapling
+syn keyword ngxDirective contained ssl_stapling_file
+syn keyword ngxDirective contained ssl_stapling_responder
+syn keyword ngxDirective contained ssl_stapling_verify
+syn keyword ngxDirective contained ssl_trusted_certificate
+syn keyword ngxDirective contained ssl_verify_client
+syn keyword ngxDirective contained ssl_verify_depth
+syn keyword ngxDirective contained starttls
+syn keyword ngxDirective contained state
+syn keyword ngxDirective contained status
+syn keyword ngxDirective contained status_format
+syn keyword ngxDirective contained status_zone
+syn keyword ngxDirective contained sticky
+syn keyword ngxDirective contained sticky_cookie_insert
+syn keyword ngxDirective contained stub_status
+syn keyword ngxDirective contained sub_filter
+syn keyword ngxDirective contained sub_filter_last_modified
+syn keyword ngxDirective contained sub_filter_once
+syn keyword ngxDirective contained sub_filter_types
+syn keyword ngxDirective contained tcp_nodelay
+syn keyword ngxDirective contained tcp_nopush
+syn keyword ngxDirective contained thread_pool
+syn keyword ngxDirective contained thread_stack_size
+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 upstream_conf
+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_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_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
+syn keyword ngxDirective contained uwsgi_pass_header
+syn keyword ngxDirective contained uwsgi_pass_request_body
+syn keyword ngxDirective contained uwsgi_pass_request_headers
+syn keyword ngxDirective contained uwsgi_read_timeout
+syn keyword ngxDirective contained uwsgi_request_buffering
+syn keyword ngxDirective contained uwsgi_send_timeout
+syn keyword ngxDirective contained uwsgi_ssl_certificate
+syn keyword ngxDirective contained uwsgi_ssl_certificate_key
+syn keyword ngxDirective contained uwsgi_ssl_ciphers
+syn keyword ngxDirective contained uwsgi_ssl_crl
+syn keyword ngxDirective contained uwsgi_ssl_name
+syn keyword ngxDirective contained uwsgi_ssl_password_file
+syn keyword ngxDirective contained uwsgi_ssl_protocols
+syn keyword ngxDirective contained uwsgi_ssl_server_name
+syn keyword ngxDirective contained uwsgi_ssl_session_reuse
+syn keyword ngxDirective contained uwsgi_ssl_trusted_certificate
+syn keyword ngxDirective contained uwsgi_ssl_verify
+syn keyword ngxDirective contained uwsgi_ssl_verify_depth
+syn keyword ngxDirective contained uwsgi_store
+syn keyword ngxDirective contained uwsgi_store_access
+syn keyword ngxDirective contained uwsgi_string
+syn keyword ngxDirective contained uwsgi_temp_file_write_size
+syn keyword ngxDirective contained uwsgi_temp_path
+syn keyword ngxDirective contained valid_referers
+syn keyword ngxDirective contained variables_hash_bucket_size
+syn keyword ngxDirective contained variables_hash_max_size
+syn keyword ngxDirective contained worker_aio_requests
+syn keyword ngxDirective contained worker_connections
+syn keyword ngxDirective contained worker_cpu_affinity
+syn keyword ngxDirective contained worker_priority
+syn keyword ngxDirective contained worker_processes
+syn keyword ngxDirective contained worker_rlimit_core
+syn keyword ngxDirective contained worker_rlimit_nofile
+syn keyword ngxDirective contained worker_rlimit_sigpending
+syn keyword ngxDirective contained worker_threads
+syn keyword ngxDirective contained working_directory
+syn keyword ngxDirective contained xclient
+syn keyword ngxDirective contained xml_entities
+syn keyword ngxDirective contained xslt_last_modified
+syn keyword ngxDirective contained xslt_param
+syn keyword ngxDirective contained xslt_string_param
+syn keyword ngxDirective contained xslt_stylesheet
+syn keyword ngxDirective contained xslt_types
+syn keyword ngxDirective contained zone
" 3rd party module list:
" https://www.nginx.com/resources/wiki/modules/
" Accept Language Module <https://www.nginx.com/resources/wiki/modules/accept_language/>
" Parses the Accept-Language header and gives the most suitable locale from a list of supported locales.
-syn keyword ngxDirectiveThirdParty set_from_accept_language
+syn keyword ngxDirectiveThirdParty contained set_from_accept_language
" Access Key Module (DEPRECATED) <http://wiki.nginx.org/NginxHttpAccessKeyModule>
" Denies access unless the request URL contains an access key.
-syn keyword ngxDirectiveDeprecated accesskey
-syn keyword ngxDirectiveDeprecated accesskey_arg
-syn keyword ngxDirectiveDeprecated accesskey_hashmethod
-syn keyword ngxDirectiveDeprecated accesskey_signature
+syn keyword ngxDirectiveDeprecated contained accesskey
+syn keyword ngxDirectiveDeprecated contained accesskey_arg
+syn keyword ngxDirectiveDeprecated contained accesskey_hashmethod
+syn keyword ngxDirectiveDeprecated contained accesskey_signature
" Asynchronous FastCGI Module <https://github.com/rsms/afcgi>
" Primarily a modified version of the Nginx FastCGI module which implements multiplexing of connections, allowing a single FastCGI server to handle many concurrent requests.
-" syn keyword ngxDirectiveThirdParty fastcgi_bind
-" syn keyword ngxDirectiveThirdParty fastcgi_buffer_size
-" syn keyword ngxDirectiveThirdParty fastcgi_buffers
-" syn keyword ngxDirectiveThirdParty fastcgi_busy_buffers_size
-" syn keyword ngxDirectiveThirdParty fastcgi_cache
-" syn keyword ngxDirectiveThirdParty fastcgi_cache_key
-" syn keyword ngxDirectiveThirdParty fastcgi_cache_methods
-" syn keyword ngxDirectiveThirdParty fastcgi_cache_min_uses
-" syn keyword ngxDirectiveThirdParty fastcgi_cache_path
-" syn keyword ngxDirectiveThirdParty fastcgi_cache_use_stale
-" syn keyword ngxDirectiveThirdParty fastcgi_cache_valid
-" syn keyword ngxDirectiveThirdParty fastcgi_catch_stderr
-" syn keyword ngxDirectiveThirdParty fastcgi_connect_timeout
-" syn keyword ngxDirectiveThirdParty fastcgi_hide_header
-" syn keyword ngxDirectiveThirdParty fastcgi_ignore_client_abort
-" syn keyword ngxDirectiveThirdParty fastcgi_ignore_headers
-" syn keyword ngxDirectiveThirdParty fastcgi_index
-" syn keyword ngxDirectiveThirdParty fastcgi_intercept_errors
-" syn keyword ngxDirectiveThirdParty fastcgi_max_temp_file_size
-" syn keyword ngxDirectiveThirdParty fastcgi_next_upstream
-" syn keyword ngxDirectiveThirdParty fastcgi_param
-" syn keyword ngxDirectiveThirdParty fastcgi_pass
-" syn keyword ngxDirectiveThirdParty fastcgi_pass_header
-" syn keyword ngxDirectiveThirdParty fastcgi_pass_request_body
-" syn keyword ngxDirectiveThirdParty fastcgi_pass_request_headers
-" syn keyword ngxDirectiveThirdParty fastcgi_read_timeout
-" syn keyword ngxDirectiveThirdParty fastcgi_send_lowat
-" syn keyword ngxDirectiveThirdParty fastcgi_send_timeout
-" syn keyword ngxDirectiveThirdParty fastcgi_split_path_info
-" syn keyword ngxDirectiveThirdParty fastcgi_store
-" syn keyword ngxDirectiveThirdParty fastcgi_store_access
-" syn keyword ngxDirectiveThirdParty fastcgi_temp_file_write_size
-" syn keyword ngxDirectiveThirdParty fastcgi_temp_path
-syn keyword ngxDirectiveDeprecated fastcgi_upstream_fail_timeout
-syn keyword ngxDirectiveDeprecated fastcgi_upstream_max_fails
+" syn keyword ngxDirectiveThirdParty contained fastcgi_bind
+" syn keyword ngxDirectiveThirdParty contained fastcgi_buffer_size
+" syn keyword ngxDirectiveThirdParty contained fastcgi_buffers
+" syn keyword ngxDirectiveThirdParty contained fastcgi_busy_buffers_size
+" syn keyword ngxDirectiveThirdParty contained fastcgi_cache
+" syn keyword ngxDirectiveThirdParty contained fastcgi_cache_key
+" syn keyword ngxDirectiveThirdParty contained fastcgi_cache_methods
+" syn keyword ngxDirectiveThirdParty contained fastcgi_cache_min_uses
+" syn keyword ngxDirectiveThirdParty contained fastcgi_cache_path
+" syn keyword ngxDirectiveThirdParty contained fastcgi_cache_use_stale
+" syn keyword ngxDirectiveThirdParty contained fastcgi_cache_valid
+" syn keyword ngxDirectiveThirdParty contained fastcgi_catch_stderr
+" syn keyword ngxDirectiveThirdParty contained fastcgi_connect_timeout
+" syn keyword ngxDirectiveThirdParty contained fastcgi_hide_header
+" syn keyword ngxDirectiveThirdParty contained fastcgi_ignore_client_abort
+" syn keyword ngxDirectiveThirdParty contained fastcgi_ignore_headers
+" syn keyword ngxDirectiveThirdParty contained fastcgi_index
+" syn keyword ngxDirectiveThirdParty contained fastcgi_intercept_errors
+" syn keyword ngxDirectiveThirdParty contained fastcgi_max_temp_file_size
+" syn keyword ngxDirectiveThirdParty contained fastcgi_next_upstream
+" syn keyword ngxDirectiveThirdParty contained fastcgi_param
+" syn keyword ngxDirectiveThirdParty contained fastcgi_pass
+" syn keyword ngxDirectiveThirdParty contained fastcgi_pass_header
+" syn keyword ngxDirectiveThirdParty contained fastcgi_pass_request_body
+" syn keyword ngxDirectiveThirdParty contained fastcgi_pass_request_headers
+" syn keyword ngxDirectiveThirdParty contained fastcgi_read_timeout
+" syn keyword ngxDirectiveThirdParty contained fastcgi_send_lowat
+" syn keyword ngxDirectiveThirdParty contained fastcgi_send_timeout
+" syn keyword ngxDirectiveThirdParty contained fastcgi_split_path_info
+" syn keyword ngxDirectiveThirdParty contained fastcgi_store
+" syn keyword ngxDirectiveThirdParty contained fastcgi_store_access
+" syn keyword ngxDirectiveThirdParty contained fastcgi_temp_file_write_size
+" syn keyword ngxDirectiveThirdParty contained fastcgi_temp_path
+syn keyword ngxDirectiveDeprecated contained fastcgi_upstream_fail_timeout
+syn keyword ngxDirectiveDeprecated contained fastcgi_upstream_max_fails
" Akamai G2O Module <https://github.com/kaltura/nginx_mod_akamai_g2o>
" Nginx Module for Authenticating Akamai G2O requests
-syn keyword ngxDirectiveThirdParty g2o
-syn keyword ngxDirectiveThirdParty g2o_nonce
-syn keyword ngxDirectiveThirdParty g2o_key
+syn keyword ngxDirectiveThirdParty contained g2o
+syn keyword ngxDirectiveThirdParty contained g2o_nonce
+syn keyword ngxDirectiveThirdParty contained g2o_key
" Lua Module <https://github.com/alacner/nginx_lua_module>
" You can be very simple to execute lua code for nginx
-syn keyword ngxDirectiveThirdParty lua_file
+syn keyword ngxDirectiveThirdParty contained lua_file
" Array Variable Module <https://github.com/openresty/array-var-nginx-module>
" Add support for array-typed variables to nginx config files
-syn keyword ngxDirectiveThirdParty array_split
-syn keyword ngxDirectiveThirdParty array_join
-syn keyword ngxDirectiveThirdParty array_map
-syn keyword ngxDirectiveThirdParty array_map_op
+syn keyword ngxDirectiveThirdParty contained array_split
+syn keyword ngxDirectiveThirdParty contained array_join
+syn keyword ngxDirectiveThirdParty contained array_map
+syn keyword ngxDirectiveThirdParty contained array_map_op
" Nginx Audio Track for HTTP Live Streaming <https://github.com/flavioribeiro/nginx-audio-track-for-hls-module>
" This nginx module generates audio track for hls streams on the fly.
-syn keyword ngxDirectiveThirdParty ngx_hls_audio_track
-syn keyword ngxDirectiveThirdParty ngx_hls_audio_track_rootpath
-syn keyword ngxDirectiveThirdParty ngx_hls_audio_track_output_format
-syn keyword ngxDirectiveThirdParty ngx_hls_audio_track_output_header
+syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track
+syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track_rootpath
+syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track_output_format
+syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track_output_header
" AWS Proxy Module <https://github.com/anomalizer/ngx_aws_auth>
" Nginx module to proxy to authenticated AWS services
-syn keyword ngxDirectiveThirdParty aws_access_key
-syn keyword ngxDirectiveThirdParty aws_key_scope
-syn keyword ngxDirectiveThirdParty aws_signing_key
-syn keyword ngxDirectiveThirdParty aws_endpoint
-syn keyword ngxDirectiveThirdParty aws_s3_bucket
-syn keyword ngxDirectiveThirdParty aws_sign
+syn keyword ngxDirectiveThirdParty contained aws_access_key
+syn keyword ngxDirectiveThirdParty contained aws_key_scope
+syn keyword ngxDirectiveThirdParty contained aws_signing_key
+syn keyword ngxDirectiveThirdParty contained aws_endpoint
+syn keyword ngxDirectiveThirdParty contained aws_s3_bucket
+syn keyword ngxDirectiveThirdParty contained aws_sign
" Backtrace module <https://github.com/alibaba/nginx-backtrace>
" A Nginx module to dump backtrace when a worker process exits abnormally
-syn keyword ngxDirectiveThirdParty backtrace_log
-syn keyword ngxDirectiveThirdParty backtrace_max_stack_size
+syn keyword ngxDirectiveThirdParty contained backtrace_log
+syn keyword ngxDirectiveThirdParty contained backtrace_max_stack_size
" Brotli Module <https://github.com/google/ngx_brotli>
" Nginx module for Brotli compression
-syn keyword ngxDirectiveThirdParty brotli_static
-syn keyword ngxDirectiveThirdParty brotli
-syn keyword ngxDirectiveThirdParty brotli_types
-syn keyword ngxDirectiveThirdParty brotli_buffers
-syn keyword ngxDirectiveThirdParty brotli_comp_level
-syn keyword ngxDirectiveThirdParty brotli_window
-syn keyword ngxDirectiveThirdParty brotli_min_length
+syn keyword ngxDirectiveThirdParty contained brotli_static
+syn keyword ngxDirectiveThirdParty contained brotli
+syn keyword ngxDirectiveThirdParty contained brotli_types
+syn keyword ngxDirectiveThirdParty contained brotli_buffers
+syn keyword ngxDirectiveThirdParty contained brotli_comp_level
+syn keyword ngxDirectiveThirdParty contained brotli_window
+syn keyword ngxDirectiveThirdParty contained brotli_min_length
" Cache Purge Module <https://github.com/FRiCKLE/ngx_cache_purge>
" Adds ability to purge content from FastCGI, proxy, SCGI and uWSGI caches.
-syn keyword ngxDirectiveThirdParty fastcgi_cache_purge
-syn keyword ngxDirectiveThirdParty proxy_cache_purge
-" syn keyword ngxDirectiveThirdParty scgi_cache_purge
-" syn keyword ngxDirectiveThirdParty uwsgi_cache_purge
+syn keyword ngxDirectiveThirdParty contained fastcgi_cache_purge
+syn keyword ngxDirectiveThirdParty contained proxy_cache_purge
+" syn keyword ngxDirectiveThirdParty contained scgi_cache_purge
+" syn keyword ngxDirectiveThirdParty contained uwsgi_cache_purge
" Chunkin Module (DEPRECATED) <http://wiki.nginx.org/NginxHttpChunkinModule>
" HTTP 1.1 chunked-encoding request body support for Nginx.
-syn keyword ngxDirectiveDeprecated chunkin
-syn keyword ngxDirectiveDeprecated chunkin_keepalive
-syn keyword ngxDirectiveDeprecated chunkin_max_chunks_per_buf
-syn keyword ngxDirectiveDeprecated chunkin_resume
+syn keyword ngxDirectiveDeprecated contained chunkin
+syn keyword ngxDirectiveDeprecated contained chunkin_keepalive
+syn keyword ngxDirectiveDeprecated contained chunkin_max_chunks_per_buf
+syn keyword ngxDirectiveDeprecated contained chunkin_resume
" Circle GIF Module <https://github.com/evanmiller/nginx_circle_gif>
" Generates simple circle images with the colors and size specified in the URL.
-syn keyword ngxDirectiveThirdParty circle_gif
-syn keyword ngxDirectiveThirdParty circle_gif_max_radius
-syn keyword ngxDirectiveThirdParty circle_gif_min_radius
-syn keyword ngxDirectiveThirdParty circle_gif_step_radius
+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
" Nginx-Clojure Module <http://nginx-clojure.github.io/index.html>
" Parses the Accept-Language header and gives the most suitable locale from a list of supported locales.
-syn keyword ngxDirectiveThirdParty jvm_path
-syn keyword ngxDirectiveThirdParty jvm_var
-syn keyword ngxDirectiveThirdParty jvm_classpath
-syn keyword ngxDirectiveThirdParty jvm_classpath_check
-syn keyword ngxDirectiveThirdParty jvm_workers
-syn keyword ngxDirectiveThirdParty jvm_options
-syn keyword ngxDirectiveThirdParty jvm_handler_type
-syn keyword ngxDirectiveThirdParty jvm_init_handler_name
-syn keyword ngxDirectiveThirdParty jvm_init_handler_code
-syn keyword ngxDirectiveThirdParty jvm_exit_handler_name
-syn keyword ngxDirectiveThirdParty jvm_exit_handler_code
-syn keyword ngxDirectiveThirdParty handlers_lazy_init
-syn keyword ngxDirectiveThirdParty auto_upgrade_ws
-syn keyword ngxDirectiveThirdParty content_handler_type
-syn keyword ngxDirectiveThirdParty content_handler_name
-syn keyword ngxDirectiveThirdParty content_handler_code
-syn keyword ngxDirectiveThirdParty rewrite_handler_type
-syn keyword ngxDirectiveThirdParty rewrite_handler_name
-syn keyword ngxDirectiveThirdParty rewrite_handler_code
-syn keyword ngxDirectiveThirdParty access_handler_type
-syn keyword ngxDirectiveThirdParty access_handler_name
-syn keyword ngxDirectiveThirdParty access_handler_code
-syn keyword ngxDirectiveThirdParty header_filter_type
-syn keyword ngxDirectiveThirdParty header_filter_name
-syn keyword ngxDirectiveThirdParty header_filter_code
-syn keyword ngxDirectiveThirdParty content_handler_property
-syn keyword ngxDirectiveThirdParty rewrite_handler_property
-syn keyword ngxDirectiveThirdParty access_handler_property
-syn keyword ngxDirectiveThirdParty header_filter_property
-syn keyword ngxDirectiveThirdParty always_read_body
-syn keyword ngxDirectiveThirdParty shared_map
-syn keyword ngxDirectiveThirdParty write_page_size
+syn keyword ngxDirectiveThirdParty contained jvm_path
+syn keyword ngxDirectiveThirdParty contained jvm_var
+syn keyword ngxDirectiveThirdParty contained jvm_classpath
+syn keyword ngxDirectiveThirdParty contained jvm_classpath_check
+syn keyword ngxDirectiveThirdParty contained jvm_workers
+syn keyword ngxDirectiveThirdParty contained jvm_options
+syn keyword ngxDirectiveThirdParty contained jvm_handler_type
+syn keyword ngxDirectiveThirdParty contained jvm_init_handler_name
+syn keyword ngxDirectiveThirdParty contained jvm_init_handler_code
+syn keyword ngxDirectiveThirdParty contained jvm_exit_handler_name
+syn keyword ngxDirectiveThirdParty contained jvm_exit_handler_code
+syn keyword ngxDirectiveThirdParty contained handlers_lazy_init
+syn keyword ngxDirectiveThirdParty contained auto_upgrade_ws
+syn keyword ngxDirectiveThirdParty contained content_handler_type
+syn keyword ngxDirectiveThirdParty contained content_handler_name
+syn keyword ngxDirectiveThirdParty contained content_handler_code
+syn keyword ngxDirectiveThirdParty contained rewrite_handler_type
+syn keyword ngxDirectiveThirdParty contained rewrite_handler_name
+syn keyword ngxDirectiveThirdParty contained rewrite_handler_code
+syn keyword ngxDirectiveThirdParty contained access_handler_type
+syn keyword ngxDirectiveThirdParty contained access_handler_name
+syn keyword ngxDirectiveThirdParty contained access_handler_code
+syn keyword ngxDirectiveThirdParty contained header_filter_type
+syn keyword ngxDirectiveThirdParty contained header_filter_name
+syn keyword ngxDirectiveThirdParty contained header_filter_code
+syn keyword ngxDirectiveThirdParty contained content_handler_property
+syn keyword ngxDirectiveThirdParty contained rewrite_handler_property
+syn keyword ngxDirectiveThirdParty contained access_handler_property
+syn keyword ngxDirectiveThirdParty contained header_filter_property
+syn keyword ngxDirectiveThirdParty contained always_read_body
+syn keyword ngxDirectiveThirdParty contained shared_map
+syn keyword ngxDirectiveThirdParty contained write_page_size
" Upstream Consistent Hash <https://www.nginx.com/resources/wiki/modules/consistent_hash/>
" A load balancer that uses an internal consistent hash ring to select the right backend node.
-syn keyword ngxDirectiveThirdParty consistent_hash
+syn keyword ngxDirectiveThirdParty contained consistent_hash
" Nginx Development Kit <https://github.com/simpl/ngx_devel_kit>
" The NDK is an Nginx module that is designed to extend the core functionality of the excellent Nginx webserver in a way that can be used as a basis of other Nginx modules.
" NDK_UPSTREAM_LIST
" This submodule provides a directive that creates a list of upstreams, with optional weighting. This list can then be used by other modules to hash over the upstreams however they choose.
-syn keyword ngxDirectiveThirdParty upstream_list
+syn keyword ngxDirectiveThirdParty contained upstream_list
" Drizzle Module <https://www.nginx.com/resources/wiki/modules/drizzle/>
" Upstream module for talking to MySQL and Drizzle directly
-syn keyword ngxDirectiveThirdParty drizzle_server
-syn keyword ngxDirectiveThirdParty drizzle_keepalive
-syn keyword ngxDirectiveThirdParty drizzle_query
-syn keyword ngxDirectiveThirdParty drizzle_pass
-syn keyword ngxDirectiveThirdParty drizzle_connect_timeout
-syn keyword ngxDirectiveThirdParty drizzle_send_query_timeout
-syn keyword ngxDirectiveThirdParty drizzle_recv_cols_timeout
-syn keyword ngxDirectiveThirdParty drizzle_recv_rows_timeout
-syn keyword ngxDirectiveThirdParty drizzle_buffer_size
-syn keyword ngxDirectiveThirdParty drizzle_module_header
-syn keyword ngxDirectiveThirdParty drizzle_status
+syn keyword ngxDirectiveThirdParty contained drizzle_server
+syn keyword ngxDirectiveThirdParty contained drizzle_keepalive
+syn keyword ngxDirectiveThirdParty contained drizzle_query
+syn keyword ngxDirectiveThirdParty contained drizzle_pass
+syn keyword ngxDirectiveThirdParty contained drizzle_connect_timeout
+syn keyword ngxDirectiveThirdParty contained drizzle_send_query_timeout
+syn keyword ngxDirectiveThirdParty contained drizzle_recv_cols_timeout
+syn keyword ngxDirectiveThirdParty contained drizzle_recv_rows_timeout
+syn keyword ngxDirectiveThirdParty contained drizzle_buffer_size
+syn keyword ngxDirectiveThirdParty contained drizzle_module_header
+syn keyword ngxDirectiveThirdParty contained drizzle_status
" Dynamic ETags Module <https://github.com/kali/nginx-dynamic-etags>
" Attempt at handling ETag / If-None-Match on proxied content.
-syn keyword ngxDirectiveThirdParty dynamic_etags
+syn keyword ngxDirectiveThirdParty contained dynamic_etags
" Echo Module <https://www.nginx.com/resources/wiki/modules/echo/>
" Bringing the power of "echo", "sleep", "time" and more to Nginx's config file
-syn keyword ngxDirectiveThirdParty echo
-syn keyword ngxDirectiveThirdParty echo_duplicate
-syn keyword ngxDirectiveThirdParty echo_flush
-syn keyword ngxDirectiveThirdParty echo_sleep
-syn keyword ngxDirectiveThirdParty echo_blocking_sleep
-syn keyword ngxDirectiveThirdParty echo_reset_timer
-syn keyword ngxDirectiveThirdParty echo_read_request_body
-syn keyword ngxDirectiveThirdParty echo_location_async
-syn keyword ngxDirectiveThirdParty echo_location
-syn keyword ngxDirectiveThirdParty echo_subrequest_async
-syn keyword ngxDirectiveThirdParty echo_subrequest
-syn keyword ngxDirectiveThirdParty echo_foreach_split
-syn keyword ngxDirectiveThirdParty echo_end
-syn keyword ngxDirectiveThirdParty echo_request_body
-syn keyword ngxDirectiveThirdParty echo_exec
-syn keyword ngxDirectiveThirdParty echo_status
-syn keyword ngxDirectiveThirdParty echo_before_body
-syn keyword ngxDirectiveThirdParty echo_after_body
+syn keyword ngxDirectiveThirdParty contained echo
+syn keyword ngxDirectiveThirdParty contained echo_duplicate
+syn keyword ngxDirectiveThirdParty contained echo_flush
+syn keyword ngxDirectiveThirdParty contained echo_sleep
+syn keyword ngxDirectiveThirdParty contained echo_blocking_sleep
+syn keyword ngxDirectiveThirdParty contained echo_reset_timer
+syn keyword ngxDirectiveThirdParty contained echo_read_request_body
+syn keyword ngxDirectiveThirdParty contained echo_location_async
+syn keyword ngxDirectiveThirdParty contained echo_location
+syn keyword ngxDirectiveThirdParty contained echo_subrequest_async
+syn keyword ngxDirectiveThirdParty contained echo_subrequest
+syn keyword ngxDirectiveThirdParty contained echo_foreach_split
+syn keyword ngxDirectiveThirdParty contained echo_end
+syn keyword ngxDirectiveThirdParty contained echo_request_body
+syn keyword ngxDirectiveThirdParty contained echo_exec
+syn keyword ngxDirectiveThirdParty contained echo_status
+syn keyword ngxDirectiveThirdParty contained echo_before_body
+syn keyword ngxDirectiveThirdParty contained echo_after_body
" Encrypted Session Module <https://github.com/openresty/encrypted-session-nginx-module>
" Encrypt and decrypt nginx variable values
-syn keyword ngxDirectiveThirdParty encrypted_session_key
-syn keyword ngxDirectiveThirdParty encrypted_session_iv
-syn keyword ngxDirectiveThirdParty encrypted_session_expires
-syn keyword ngxDirectiveThirdParty set_encrypt_session
-syn keyword ngxDirectiveThirdParty set_decrypt_session
+syn keyword ngxDirectiveThirdParty contained encrypted_session_key
+syn keyword ngxDirectiveThirdParty contained encrypted_session_iv
+syn keyword ngxDirectiveThirdParty contained encrypted_session_expires
+syn keyword ngxDirectiveThirdParty contained set_encrypt_session
+syn keyword ngxDirectiveThirdParty contained set_decrypt_session
" Enhanced Memcached Module <https://github.com/bpaquet/ngx_http_enhanced_memcached_module>
" This module is based on the standard Nginx Memcached module, with some additonal features
-syn keyword ngxDirectiveThirdParty enhanced_memcached_pass
-syn keyword ngxDirectiveThirdParty enhanced_memcached_hash_keys_with_md5
-syn keyword ngxDirectiveThirdParty enhanced_memcached_allow_put
-syn keyword ngxDirectiveThirdParty enhanced_memcached_allow_delete
-syn keyword ngxDirectiveThirdParty enhanced_memcached_stats
-syn keyword ngxDirectiveThirdParty enhanced_memcached_flush
-syn keyword ngxDirectiveThirdParty enhanced_memcached_flush_namespace
-syn keyword ngxDirectiveThirdParty enhanced_memcached_bind
-syn keyword ngxDirectiveThirdParty enhanced_memcached_connect_timeout
-syn keyword ngxDirectiveThirdParty enhanced_memcached_send_timeout
-syn keyword ngxDirectiveThirdParty enhanced_memcached_buffer_size
-syn keyword ngxDirectiveThirdParty enhanced_memcached_read_timeout
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_pass
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_hash_keys_with_md5
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_allow_put
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_allow_delete
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_stats
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_flush
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_flush_namespace
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_bind
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_connect_timeout
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_send_timeout
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_buffer_size
+syn keyword ngxDirectiveThirdParty contained enhanced_memcached_read_timeout
" Events Module (DEPRECATED) <http://docs.dutov.org/nginx_modules_events_en.html>
" Provides options for start/stop events.
-syn keyword ngxDirectiveDeprecated on_start
-syn keyword ngxDirectiveDeprecated on_stop
+syn keyword ngxDirectiveDeprecated contained on_start
+syn keyword ngxDirectiveDeprecated contained on_stop
" EY Balancer Module <https://github.com/ezmobius/nginx-ey-balancer>
" Adds a request queue to Nginx that allows the limiting of concurrent requests passed to the upstream.
-syn keyword ngxDirectiveThirdParty max_connections
-syn keyword ngxDirectiveThirdParty max_connections_max_queue_length
-syn keyword ngxDirectiveThirdParty max_connections_queue_timeout
+syn keyword ngxDirectiveThirdParty contained max_connections
+syn keyword ngxDirectiveThirdParty contained max_connections_max_queue_length
+syn keyword ngxDirectiveThirdParty contained max_connections_queue_timeout
" Upstream Fair Balancer <https://www.nginx.com/resources/wiki/modules/fair_balancer/>
" Sends an incoming request to the least-busy backend server, rather than distributing requests round-robin.
-syn keyword ngxDirectiveThirdParty fair
-syn keyword ngxDirectiveThirdParty upstream_fair_shm_size
+syn keyword ngxDirectiveThirdParty contained fair
+syn keyword ngxDirectiveThirdParty contained upstream_fair_shm_size
" Fancy Indexes Module <https://github.com/aperezdc/ngx-fancyindex>
" Like the built-in autoindex module, but fancier.
-syn keyword ngxDirectiveThirdParty fancyindex
-syn keyword ngxDirectiveThirdParty fancyindex_default_sort
-syn keyword ngxDirectiveThirdParty fancyindex_directories_first
-syn keyword ngxDirectiveThirdParty fancyindex_css_href
-syn keyword ngxDirectiveThirdParty fancyindex_exact_size
-syn keyword ngxDirectiveThirdParty fancyindex_name_length
-syn keyword ngxDirectiveThirdParty fancyindex_footer
-syn keyword ngxDirectiveThirdParty fancyindex_header
-syn keyword ngxDirectiveThirdParty fancyindex_show_path
-syn keyword ngxDirectiveThirdParty fancyindex_ignore
-syn keyword ngxDirectiveThirdParty fancyindex_hide_symlinks
-syn keyword ngxDirectiveThirdParty fancyindex_localtime
-syn keyword ngxDirectiveThirdParty fancyindex_time_format
+syn keyword ngxDirectiveThirdParty contained fancyindex
+syn keyword ngxDirectiveThirdParty contained fancyindex_default_sort
+syn keyword ngxDirectiveThirdParty contained fancyindex_directories_first
+syn keyword ngxDirectiveThirdParty contained fancyindex_css_href
+syn keyword ngxDirectiveThirdParty contained fancyindex_exact_size
+syn keyword ngxDirectiveThirdParty contained fancyindex_name_length
+syn keyword ngxDirectiveThirdParty contained fancyindex_footer
+syn keyword ngxDirectiveThirdParty contained fancyindex_header
+syn keyword ngxDirectiveThirdParty contained fancyindex_show_path
+syn keyword ngxDirectiveThirdParty contained fancyindex_ignore
+syn keyword ngxDirectiveThirdParty contained fancyindex_hide_symlinks
+syn keyword ngxDirectiveThirdParty contained fancyindex_localtime
+syn keyword ngxDirectiveThirdParty contained fancyindex_time_format
" Form Auth Module <https://github.com/veruu/ngx_form_auth>
" Provides authentication and authorization with credentials submitted via POST request
-syn keyword ngxDirectiveThirdParty form_auth
-syn keyword ngxDirectiveThirdParty form_auth_pam_service
-syn keyword ngxDirectiveThirdParty form_auth_login
-syn keyword ngxDirectiveThirdParty form_auth_password
-syn keyword ngxDirectiveThirdParty form_auth_remote_user
+syn keyword ngxDirectiveThirdParty contained form_auth
+syn keyword ngxDirectiveThirdParty contained form_auth_pam_service
+syn keyword ngxDirectiveThirdParty contained form_auth_login
+syn keyword ngxDirectiveThirdParty contained form_auth_password
+syn keyword ngxDirectiveThirdParty contained form_auth_remote_user
" Form Input Module <https://github.com/calio/form-input-nginx-module>
" Reads HTTP POST and PUT request body encoded in "application/x-www-form-urlencoded" and parses the arguments into nginx variables.
-syn keyword ngxDirectiveThirdParty set_form_input
-syn keyword ngxDirectiveThirdParty set_form_input_multi
+syn keyword ngxDirectiveThirdParty contained set_form_input
+syn keyword ngxDirectiveThirdParty contained set_form_input_multi
" GeoIP Module (DEPRECATED) <http://wiki.nginx.org/NginxHttp3rdPartyGeoIPModule>
" Country code lookups via the MaxMind GeoIP API.
-syn keyword ngxDirectiveDeprecated geoip_country_file
+syn keyword ngxDirectiveDeprecated contained geoip_country_file
" GeoIP 2 Module <https://github.com/leev/ngx_http_geoip2_module>
" Creates variables with values from the maxmind geoip2 databases based on the client IP
-syn keyword ngxDirectiveThirdParty geoip2
+syn keyword ngxDirectiveThirdParty contained geoip2
" GridFS Module <https://github.com/mdirolf/nginx-gridfs>
" Nginx module for serving files from MongoDB's GridFS
-syn keyword ngxDirectiveThirdParty gridfs
+syn keyword ngxDirectiveThirdParty contained gridfs
" Headers More Module <https://github.com/openresty/headers-more-nginx-module>
" Set and clear input and output headers...more than "add"!
-syn keyword ngxDirectiveThirdParty more_clear_headers
-syn keyword ngxDirectiveThirdParty more_clear_input_headers
-syn keyword ngxDirectiveThirdParty more_set_headers
-syn keyword ngxDirectiveThirdParty more_set_input_headers
+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
" Health Checks Upstreams Module <https://www.nginx.com/resources/wiki/modules/healthcheck/>
" Polls backends and if they respond with HTTP 200 + an optional request body, they are marked good. Otherwise, they are marked bad.
-syn keyword ngxDirectiveThirdParty healthcheck_enabled
-syn keyword ngxDirectiveThirdParty healthcheck_delay
-syn keyword ngxDirectiveThirdParty healthcheck_timeout
-syn keyword ngxDirectiveThirdParty healthcheck_failcount
-syn keyword ngxDirectiveThirdParty healthcheck_send
-syn keyword ngxDirectiveThirdParty healthcheck_expected
-syn keyword ngxDirectiveThirdParty healthcheck_buffer
-syn keyword ngxDirectiveThirdParty healthcheck_status
+syn keyword ngxDirectiveThirdParty contained healthcheck_enabled
+syn keyword ngxDirectiveThirdParty contained healthcheck_delay
+syn keyword ngxDirectiveThirdParty contained healthcheck_timeout
+syn keyword ngxDirectiveThirdParty contained healthcheck_failcount
+syn keyword ngxDirectiveThirdParty contained healthcheck_send
+syn keyword ngxDirectiveThirdParty contained healthcheck_expected
+syn keyword ngxDirectiveThirdParty contained healthcheck_buffer
+syn keyword ngxDirectiveThirdParty contained healthcheck_status
" HTTP Accounting Module <https://github.com/Lax/ngx_http_accounting_module>
" Add traffic stat function to nginx. Useful for http accounting based on nginx configuration logic
-syn keyword ngxDirectiveThirdParty http_accounting
-syn keyword ngxDirectiveThirdParty http_accounting_log
-syn keyword ngxDirectiveThirdParty http_accounting_id
-syn keyword ngxDirectiveThirdParty http_accounting_interval
-syn keyword ngxDirectiveThirdParty http_accounting_perturb
+syn keyword ngxDirectiveThirdParty contained http_accounting
+syn keyword ngxDirectiveThirdParty contained http_accounting_log
+syn keyword ngxDirectiveThirdParty contained http_accounting_id
+syn keyword ngxDirectiveThirdParty contained http_accounting_interval
+syn keyword ngxDirectiveThirdParty contained http_accounting_perturb
" Nginx Digest Authentication module <https://github.com/atomx/nginx-http-auth-digest>
" Digest Authentication for Nginx
-syn keyword ngxDirectiveThirdParty auth_digest
-syn keyword ngxDirectiveThirdParty auth_digest_user_file
-syn keyword ngxDirectiveThirdParty auth_digest_timeout
-syn keyword ngxDirectiveThirdParty auth_digest_expires
-syn keyword ngxDirectiveThirdParty auth_digest_replays
-syn keyword ngxDirectiveThirdParty auth_digest_shm_size
+syn keyword ngxDirectiveThirdParty contained auth_digest
+syn keyword ngxDirectiveThirdParty contained auth_digest_user_file
+syn keyword ngxDirectiveThirdParty contained auth_digest_timeout
+syn keyword ngxDirectiveThirdParty contained auth_digest_expires
+syn keyword ngxDirectiveThirdParty contained auth_digest_replays
+syn keyword ngxDirectiveThirdParty contained auth_digest_shm_size
" Auth PAM Module <https://github.com/sto/ngx_http_auth_pam_module>
" HTTP Basic Authentication using PAM.
-syn keyword ngxDirectiveThirdParty auth_pam
-syn keyword ngxDirectiveThirdParty auth_pam_service_name
+syn keyword ngxDirectiveThirdParty contained auth_pam
+syn keyword ngxDirectiveThirdParty contained auth_pam_service_name
" HTTP Auth Request Module <http://nginx.org/en/docs/http/ngx_http_auth_request_module.html>
" Implements client authorization based on the result of a subrequest
-" syn keyword ngxDirectiveThirdParty auth_request
-" syn keyword ngxDirectiveThirdParty auth_request_set
+" syn keyword ngxDirectiveThirdParty contained auth_request
+" syn keyword ngxDirectiveThirdParty contained auth_request_set
" HTTP Concatenation module for Nginx <https://github.com/alibaba/nginx-http-concat>
" A Nginx module for concatenating files in a given context: CSS and JS files usually
-syn keyword ngxDirectiveThirdParty concat
-syn keyword ngxDirectiveThirdParty concat_types
-syn keyword ngxDirectiveThirdParty concat_unique
-syn keyword ngxDirectiveThirdParty concat_max_files
-syn keyword ngxDirectiveThirdParty concat_delimiter
-syn keyword ngxDirectiveThirdParty concat_ignore_file_error
+syn keyword ngxDirectiveThirdParty contained concat
+syn keyword ngxDirectiveThirdParty contained concat_types
+syn keyword ngxDirectiveThirdParty contained concat_unique
+syn keyword ngxDirectiveThirdParty contained concat_max_files
+syn keyword ngxDirectiveThirdParty contained concat_delimiter
+syn keyword ngxDirectiveThirdParty contained concat_ignore_file_error
" HTTP Dynamic Upstream Module <https://github.com/yzprofile/ngx_http_dyups_module>
" Update upstreams' config by restful interface
-syn keyword ngxDirectiveThirdParty dyups_interface
-syn keyword ngxDirectiveThirdParty dyups_read_msg_timeout
-syn keyword ngxDirectiveThirdParty dyups_shm_zone_size
-syn keyword ngxDirectiveThirdParty dyups_upstream_conf
-syn keyword ngxDirectiveThirdParty dyups_trylock
+syn keyword ngxDirectiveThirdParty contained dyups_interface
+syn keyword ngxDirectiveThirdParty contained dyups_read_msg_timeout
+syn keyword ngxDirectiveThirdParty contained dyups_shm_zone_size
+syn keyword ngxDirectiveThirdParty contained dyups_upstream_conf
+syn keyword ngxDirectiveThirdParty contained dyups_trylock
" HTTP Footer If Filter Module <https://github.com/flygoast/ngx_http_footer_if_filter>
" The ngx_http_footer_if_filter_module is used to add given content to the end of the response according to the condition specified.
-syn keyword ngxDirectiveThirdParty footer_if
+syn keyword ngxDirectiveThirdParty contained footer_if
" HTTP Footer Filter Module <https://github.com/alibaba/nginx-http-footer-filter>
" This module implements a body filter that adds a given string to the page footer.
-syn keyword ngxDirectiveThirdParty footer
-syn keyword ngxDirectiveThirdParty footer_types
+syn keyword ngxDirectiveThirdParty contained footer
+syn keyword ngxDirectiveThirdParty contained footer_types
" HTTP Internal Redirect Module <https://github.com/flygoast/ngx_http_internal_redirect>
" Make an internal redirect to the uri specified according to the condition specified.
-syn keyword ngxDirectiveThirdParty internal_redirect_if
-syn keyword ngxDirectiveThirdParty internal_redirect_if_no_postponed
+syn keyword ngxDirectiveThirdParty contained internal_redirect_if
+syn keyword ngxDirectiveThirdParty contained internal_redirect_if_no_postponed
" HTTP JavaScript Module <https://github.com/peter-leonov/ngx_http_js_module>
" Embedding SpiderMonkey. Nearly full port on Perl module.
-syn keyword ngxDirectiveThirdParty js
-syn keyword ngxDirectiveThirdParty js_filter
-syn keyword ngxDirectiveThirdParty js_filter_types
-syn keyword ngxDirectiveThirdParty js_load
-syn keyword ngxDirectiveThirdParty js_maxmem
-syn keyword ngxDirectiveThirdParty js_require
-syn keyword ngxDirectiveThirdParty js_set
-syn keyword ngxDirectiveThirdParty js_utf8
+syn keyword ngxDirectiveThirdParty contained js
+syn keyword ngxDirectiveThirdParty contained js_filter
+syn keyword ngxDirectiveThirdParty contained js_filter_types
+syn keyword ngxDirectiveThirdParty contained js_load
+syn keyword ngxDirectiveThirdParty contained js_maxmem
+syn keyword ngxDirectiveThirdParty contained js_require
+syn keyword ngxDirectiveThirdParty contained js_set
+syn keyword ngxDirectiveThirdParty contained js_utf8
" HTTP Push Module (DEPRECATED) <http://pushmodule.slact.net/>
" Turn Nginx into an adept long-polling HTTP Push (Comet) server.
-syn keyword ngxDirectiveDeprecated push_buffer_size
-syn keyword ngxDirectiveDeprecated push_listener
-syn keyword ngxDirectiveDeprecated push_message_timeout
-syn keyword ngxDirectiveDeprecated push_queue_messages
-syn keyword ngxDirectiveDeprecated push_sender
+syn keyword ngxDirectiveDeprecated contained push_buffer_size
+syn keyword ngxDirectiveDeprecated contained push_listener
+syn keyword ngxDirectiveDeprecated contained push_message_timeout
+syn keyword ngxDirectiveDeprecated contained push_queue_messages
+syn keyword ngxDirectiveDeprecated contained push_sender
" HTTP Redis Module <https://www.nginx.com/resources/wiki/modules/redis/>
" Redis <http://code.google.com/p/redis/> support.
-syn keyword ngxDirectiveThirdParty redis_bind
-syn keyword ngxDirectiveThirdParty redis_buffer_size
-syn keyword ngxDirectiveThirdParty redis_connect_timeout
-syn keyword ngxDirectiveThirdParty redis_next_upstream
-syn keyword ngxDirectiveThirdParty redis_pass
-syn keyword ngxDirectiveThirdParty redis_read_timeout
-syn keyword ngxDirectiveThirdParty redis_send_timeout
+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_next_upstream
+syn keyword ngxDirectiveThirdParty contained redis_pass
+syn keyword ngxDirectiveThirdParty contained redis_read_timeout
+syn keyword ngxDirectiveThirdParty contained redis_send_timeout
" Iconv Module <https://github.com/calio/iconv-nginx-module>
" A character conversion nginx module using libiconv
-syn keyword ngxDirectiveThirdParty set_iconv
-syn keyword ngxDirectiveThirdParty iconv_buffer_size
-syn keyword ngxDirectiveThirdParty iconv_filter
+syn keyword ngxDirectiveThirdParty contained set_iconv
+syn keyword ngxDirectiveThirdParty contained iconv_buffer_size
+syn keyword ngxDirectiveThirdParty contained iconv_filter
" IP Blocker Module <https://github.com/tmthrgd/nginx-ip-blocker>
" An efficient shared memory IP blocking system for nginx.
-syn keyword ngxDirectiveThirdParty ip_blocker
+syn keyword ngxDirectiveThirdParty contained ip_blocker
" IP2Location Module <https://github.com/chrislim2888/ip2location-nginx>
" Allows user to lookup for geolocation information using IP2Location database
-syn keyword ngxDirectiveThirdParty ip2location_database
+syn keyword ngxDirectiveThirdParty contained ip2location_database
" JS Module <https://github.com/peter-leonov/ngx_http_js_module>
" Reflect the nginx functionality in JS
-syn keyword ngxDirectiveThirdParty js
-syn keyword ngxDirectiveThirdParty js_access
-syn keyword ngxDirectiveThirdParty js_load
-syn keyword ngxDirectiveThirdParty js_set
+syn keyword ngxDirectiveThirdParty contained js
+syn keyword ngxDirectiveThirdParty contained js_access
+syn keyword ngxDirectiveThirdParty contained js_load
+syn keyword ngxDirectiveThirdParty contained js_set
" Limit Upload Rate Module <https://github.com/cfsego/limit_upload_rate>
" Limit client-upload rate when they are sending request bodies to you
-syn keyword ngxDirectiveThirdParty limit_upload_rate
-syn keyword ngxDirectiveThirdParty limit_upload_rate_after
+syn keyword ngxDirectiveThirdParty contained limit_upload_rate
+syn keyword ngxDirectiveThirdParty contained limit_upload_rate_after
" Limit Upstream Module <https://github.com/cfsego/nginx-limit-upstream>
" Limit the number of connections to upstream for NGINX
-syn keyword ngxDirectiveThirdParty limit_upstream_zone
-syn keyword ngxDirectiveThirdParty limit_upstream_conn
-syn keyword ngxDirectiveThirdParty limit_upstream_log_level
+syn keyword ngxDirectiveThirdParty contained limit_upstream_zone
+syn keyword ngxDirectiveThirdParty contained limit_upstream_conn
+syn keyword ngxDirectiveThirdParty contained limit_upstream_log_level
" Log If Module <https://github.com/cfsego/ngx_log_if>
" Conditional accesslog for nginx
-syn keyword ngxDirectiveThirdParty access_log_bypass_if
+syn keyword ngxDirectiveThirdParty contained access_log_bypass_if
" Log Request Speed (DEPRECATED) <http://wiki.nginx.org/NginxHttpLogRequestSpeed>
" Log the time it took to process each request.
-syn keyword ngxDirectiveDeprecated log_request_speed_filter
-syn keyword ngxDirectiveDeprecated log_request_speed_filter_timeout
+syn keyword ngxDirectiveDeprecated contained log_request_speed_filter
+syn keyword ngxDirectiveDeprecated contained log_request_speed_filter_timeout
" Log ZeroMQ Module <https://github.com/alticelabs/nginx-log-zmq>
" ZeroMQ logger module for nginx
-syn keyword ngxDirectiveThirdParty log_zmq_server
-syn keyword ngxDirectiveThirdParty log_zmq_endpoint
-syn keyword ngxDirectiveThirdParty log_zmq_format
-syn keyword ngxDirectiveThirdParty log_zmq_off
+syn keyword ngxDirectiveThirdParty contained log_zmq_server
+syn keyword ngxDirectiveThirdParty contained log_zmq_endpoint
+syn keyword ngxDirectiveThirdParty contained log_zmq_format
+syn keyword ngxDirectiveThirdParty contained log_zmq_off
" Lower/UpperCase Module <https://github.com/replay/ngx_http_lower_upper_case>
" This module simply uppercases or lowercases a string and saves it into a new variable.
-syn keyword ngxDirectiveThirdParty lower
-syn keyword ngxDirectiveThirdParty upper
+syn keyword ngxDirectiveThirdParty contained lower
+syn keyword ngxDirectiveThirdParty contained upper
" Lua Upstream Module <https://github.com/openresty/lua-upstream-nginx-module>
" Nginx C module to expose Lua API to ngx_lua for Nginx upstreams
" Lua Module <https://github.com/openresty/lua-nginx-module>
" Embed the Power of Lua into NGINX HTTP servers
-syn keyword ngxDirectiveThirdParty lua_use_default_type
-syn keyword ngxDirectiveThirdParty lua_malloc_trim
-syn keyword ngxDirectiveThirdParty lua_code_cache
-syn keyword ngxDirectiveThirdParty lua_regex_cache_max_entries
-syn keyword ngxDirectiveThirdParty lua_regex_match_limit
-syn keyword ngxDirectiveThirdParty lua_package_path
-syn keyword ngxDirectiveThirdParty lua_package_cpath
-syn keyword ngxDirectiveThirdParty init_by_lua
-syn keyword ngxDirectiveThirdParty init_by_lua_block
-syn keyword ngxDirectiveThirdParty init_by_lua_file
-syn keyword ngxDirectiveThirdParty init_worker_by_lua
-syn keyword ngxDirectiveThirdParty init_worker_by_lua_block
-syn keyword ngxDirectiveThirdParty init_worker_by_lua_file
-syn keyword ngxDirectiveThirdParty set_by_lua
-syn keyword ngxDirectiveThirdParty set_by_lua_block
-syn keyword ngxDirectiveThirdParty set_by_lua_file
-syn keyword ngxDirectiveThirdParty content_by_lua
-syn keyword ngxDirectiveThirdParty content_by_lua_block
-syn keyword ngxDirectiveThirdParty content_by_lua_file
-syn keyword ngxDirectiveThirdParty rewrite_by_lua
-syn keyword ngxDirectiveThirdParty rewrite_by_lua_block
-syn keyword ngxDirectiveThirdParty rewrite_by_lua_file
-syn keyword ngxDirectiveThirdParty access_by_lua
-syn keyword ngxDirectiveThirdParty access_by_lua_block
-syn keyword ngxDirectiveThirdParty access_by_lua_file
-syn keyword ngxDirectiveThirdParty header_filter_by_lua
-syn keyword ngxDirectiveThirdParty header_filter_by_lua_block
-syn keyword ngxDirectiveThirdParty header_filter_by_lua_file
-syn keyword ngxDirectiveThirdParty body_filter_by_lua
-syn keyword ngxDirectiveThirdParty body_filter_by_lua_block
-syn keyword ngxDirectiveThirdParty body_filter_by_lua_file
-syn keyword ngxDirectiveThirdParty log_by_lua
-syn keyword ngxDirectiveThirdParty log_by_lua_block
-syn keyword ngxDirectiveThirdParty log_by_lua_file
-syn keyword ngxDirectiveThirdParty balancer_by_lua_block
-syn keyword ngxDirectiveThirdParty balancer_by_lua_file
-syn keyword ngxDirectiveThirdParty lua_need_request_body
-syn keyword ngxDirectiveThirdParty ssl_certificate_by_lua_block
-syn keyword ngxDirectiveThirdParty ssl_certificate_by_lua_file
-syn keyword ngxDirectiveThirdParty ssl_session_fetch_by_lua_block
-syn keyword ngxDirectiveThirdParty ssl_session_fetch_by_lua_file
-syn keyword ngxDirectiveThirdParty ssl_session_store_by_lua_block
-syn keyword ngxDirectiveThirdParty ssl_session_store_by_lua_file
-syn keyword ngxDirectiveThirdParty lua_shared_dict
-syn keyword ngxDirectiveThirdParty lua_socket_connect_timeout
-syn keyword ngxDirectiveThirdParty lua_socket_send_timeout
-syn keyword ngxDirectiveThirdParty lua_socket_send_lowat
-syn keyword ngxDirectiveThirdParty lua_socket_read_timeout
-syn keyword ngxDirectiveThirdParty lua_socket_buffer_size
-syn keyword ngxDirectiveThirdParty lua_socket_pool_size
-syn keyword ngxDirectiveThirdParty lua_socket_keepalive_timeout
-syn keyword ngxDirectiveThirdParty lua_socket_log_errors
-syn keyword ngxDirectiveThirdParty lua_ssl_ciphers
-syn keyword ngxDirectiveThirdParty lua_ssl_crl
-syn keyword ngxDirectiveThirdParty lua_ssl_protocols
-syn keyword ngxDirectiveThirdParty lua_ssl_trusted_certificate
-syn keyword ngxDirectiveThirdParty lua_ssl_verify_depth
-syn keyword ngxDirectiveThirdParty lua_http10_buffering
-syn keyword ngxDirectiveThirdParty rewrite_by_lua_no_postpone
-syn keyword ngxDirectiveThirdParty access_by_lua_no_postpone
-syn keyword ngxDirectiveThirdParty lua_transform_underscores_in_response_headers
-syn keyword ngxDirectiveThirdParty lua_check_client_abort
-syn keyword ngxDirectiveThirdParty lua_max_pending_timers
-syn keyword ngxDirectiveThirdParty lua_max_running_timers
+syn keyword ngxDirectiveThirdParty contained lua_use_default_type
+syn keyword ngxDirectiveThirdParty contained lua_malloc_trim
+syn keyword ngxDirectiveThirdParty contained lua_code_cache
+syn keyword ngxDirectiveThirdParty contained lua_regex_cache_max_entries
+syn keyword ngxDirectiveThirdParty contained lua_regex_match_limit
+syn keyword ngxDirectiveThirdParty contained lua_package_path
+syn keyword ngxDirectiveThirdParty contained lua_package_cpath
+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 set_by_lua
+syn keyword ngxDirectiveThirdParty contained set_by_lua_block
+syn keyword ngxDirectiveThirdParty contained set_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 rewrite_by_lua
+syn keyword ngxDirectiveThirdParty contained rewrite_by_lua_block
+syn keyword ngxDirectiveThirdParty contained rewrite_by_lua_file
+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 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 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 log_by_lua
+syn keyword ngxDirectiveThirdParty contained log_by_lua_block
+syn keyword ngxDirectiveThirdParty contained log_by_lua_file
+syn keyword ngxDirectiveThirdParty contained balancer_by_lua_block
+syn keyword ngxDirectiveThirdParty contained balancer_by_lua_file
+syn keyword ngxDirectiveThirdParty contained lua_need_request_body
+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
+syn keyword ngxDirectiveThirdParty contained lua_shared_dict
+syn keyword ngxDirectiveThirdParty contained lua_socket_connect_timeout
+syn keyword ngxDirectiveThirdParty contained lua_socket_send_timeout
+syn keyword ngxDirectiveThirdParty contained lua_socket_send_lowat
+syn keyword ngxDirectiveThirdParty contained lua_socket_read_timeout
+syn keyword ngxDirectiveThirdParty contained lua_socket_buffer_size
+syn keyword ngxDirectiveThirdParty contained lua_socket_pool_size
+syn keyword ngxDirectiveThirdParty contained lua_socket_keepalive_timeout
+syn keyword ngxDirectiveThirdParty contained lua_socket_log_errors
+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_http10_buffering
+syn keyword ngxDirectiveThirdParty contained rewrite_by_lua_no_postpone
+syn keyword ngxDirectiveThirdParty contained access_by_lua_no_postpone
+syn keyword ngxDirectiveThirdParty contained lua_transform_underscores_in_response_headers
+syn keyword ngxDirectiveThirdParty contained lua_check_client_abort
+syn keyword ngxDirectiveThirdParty contained lua_max_pending_timers
+syn keyword ngxDirectiveThirdParty contained lua_max_running_timers
" MD5 Filter Module <https://github.com/kainswor/nginx_md5_filter>
" A content filter for nginx, which returns the md5 hash of the content otherwise returned.
-syn keyword ngxDirectiveThirdParty md5_filter
+syn keyword ngxDirectiveThirdParty contained md5_filter
" Memc Module <https://github.com/openresty/memc-nginx-module>
" An extended version of the standard memcached module that supports set, add, delete, and many more memcached commands.
-syn keyword ngxDirectiveThirdParty memc_buffer_size
-syn keyword ngxDirectiveThirdParty memc_cmds_allowed
-syn keyword ngxDirectiveThirdParty memc_connect_timeout
-syn keyword ngxDirectiveThirdParty memc_flags_to_last_modified
-syn keyword ngxDirectiveThirdParty memc_next_upstream
-syn keyword ngxDirectiveThirdParty memc_pass
-syn keyword ngxDirectiveThirdParty memc_read_timeout
-syn keyword ngxDirectiveThirdParty memc_send_timeout
-syn keyword ngxDirectiveThirdParty memc_upstream_fail_timeout
-syn keyword ngxDirectiveThirdParty memc_upstream_max_fails
+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_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
" Mod Security Module <https://github.com/SpiderLabs/ModSecurity>
" ModSecurity is an open source, cross platform web application firewall (WAF) engine
-syn keyword ngxDirectiveThirdParty ModSecurityConfig
-syn keyword ngxDirectiveThirdParty ModSecurityEnabled
-syn keyword ngxDirectiveThirdParty pool_context
-syn keyword ngxDirectiveThirdParty pool_context_hash_size
+syn keyword ngxDirectiveThirdParty contained ModSecurityConfig
+syn keyword ngxDirectiveThirdParty contained ModSecurityEnabled
+syn keyword ngxDirectiveThirdParty contained pool_context
+syn keyword ngxDirectiveThirdParty contained pool_context_hash_size
" Mogilefs Module <http://www.grid.net.ru/nginx/mogilefs.en.html>
" MogileFS client for nginx web server.
-syn keyword ngxDirectiveThirdParty mogilefs_pass
-syn keyword ngxDirectiveThirdParty mogilefs_methods
-syn keyword ngxDirectiveThirdParty mogilefs_domain
-syn keyword ngxDirectiveThirdParty mogilefs_class
-syn keyword ngxDirectiveThirdParty mogilefs_tracker
-syn keyword ngxDirectiveThirdParty mogilefs_noverify
-syn keyword ngxDirectiveThirdParty mogilefs_connect_timeout
-syn keyword ngxDirectiveThirdParty mogilefs_send_timeout
-syn keyword ngxDirectiveThirdParty mogilefs_read_timeout
+syn keyword ngxDirectiveThirdParty contained mogilefs_pass
+syn keyword ngxDirectiveThirdParty contained mogilefs_methods
+syn keyword ngxDirectiveThirdParty contained mogilefs_domain
+syn keyword ngxDirectiveThirdParty contained mogilefs_class
+syn keyword ngxDirectiveThirdParty contained mogilefs_tracker
+syn keyword ngxDirectiveThirdParty contained mogilefs_noverify
+syn keyword ngxDirectiveThirdParty contained mogilefs_connect_timeout
+syn keyword ngxDirectiveThirdParty contained mogilefs_send_timeout
+syn keyword ngxDirectiveThirdParty contained mogilefs_read_timeout
" Mongo Module <https://github.com/simpl/ngx_mongo>
" Upstream module that allows nginx to communicate directly with MongoDB database.
-syn keyword ngxDirectiveThirdParty mongo_auth
-syn keyword ngxDirectiveThirdParty mongo_pass
-syn keyword ngxDirectiveThirdParty mongo_query
-syn keyword ngxDirectiveThirdParty mongo_json
-syn keyword ngxDirectiveThirdParty mongo_bind
-syn keyword ngxDirectiveThirdParty mongo_connect_timeout
-syn keyword ngxDirectiveThirdParty mongo_send_timeout
-syn keyword ngxDirectiveThirdParty mongo_read_timeout
-syn keyword ngxDirectiveThirdParty mongo_buffering
-syn keyword ngxDirectiveThirdParty mongo_buffer_size
-syn keyword ngxDirectiveThirdParty mongo_buffers
-syn keyword ngxDirectiveThirdParty mongo_busy_buffers_size
-syn keyword ngxDirectiveThirdParty mongo_next_upstream
+syn keyword ngxDirectiveThirdParty contained mongo_auth
+syn keyword ngxDirectiveThirdParty contained mongo_pass
+syn keyword ngxDirectiveThirdParty contained mongo_query
+syn keyword ngxDirectiveThirdParty contained mongo_json
+syn keyword ngxDirectiveThirdParty contained mongo_bind
+syn keyword ngxDirectiveThirdParty contained mongo_connect_timeout
+syn keyword ngxDirectiveThirdParty contained mongo_send_timeout
+syn keyword ngxDirectiveThirdParty contained mongo_read_timeout
+syn keyword ngxDirectiveThirdParty contained mongo_buffering
+syn keyword ngxDirectiveThirdParty contained mongo_buffer_size
+syn keyword ngxDirectiveThirdParty contained mongo_buffers
+syn keyword ngxDirectiveThirdParty contained mongo_busy_buffers_size
+syn keyword ngxDirectiveThirdParty contained mongo_next_upstream
" MP4 Streaming Lite Module <https://www.nginx.com/resources/wiki/modules/mp4_streaming/>
" Will seek to a certain time within H.264/MP4 files when provided with a 'start' parameter in the URL.
-" syn keyword ngxDirectiveThirdParty mp4
+" syn keyword ngxDirectiveThirdParty contained mp4
" NAXSI Module <https://github.com/nbs-system/naxsi>
" NAXSI is an open-source, high performance, low rules maintenance WAF for NGINX
-syn keyword ngxDirectiveThirdParty DeniedUrl denied_url
-syn keyword ngxDirectiveThirdParty LearningMode learning_mode
-syn keyword ngxDirectiveThirdParty SecRulesEnabled rules_enabled
-syn keyword ngxDirectiveThirdParty SecRulesDisabled rules_disabled
-syn keyword ngxDirectiveThirdParty CheckRule check_rule
-syn keyword ngxDirectiveThirdParty BasicRule basic_rule
-syn keyword ngxDirectiveThirdParty MainRule main_rule
-syn keyword ngxDirectiveThirdParty LibInjectionSql libinjection_sql
-syn keyword ngxDirectiveThirdParty LibInjectionXss libinjection_xss
+syn keyword ngxDirectiveThirdParty contained DeniedUrl denied_url
+syn keyword ngxDirectiveThirdParty contained LearningMode learning_mode
+syn keyword ngxDirectiveThirdParty contained SecRulesEnabled rules_enabled
+syn keyword ngxDirectiveThirdParty contained SecRulesDisabled rules_disabled
+syn keyword ngxDirectiveThirdParty contained CheckRule check_rule
+syn keyword ngxDirectiveThirdParty contained BasicRule basic_rule
+syn keyword ngxDirectiveThirdParty contained MainRule main_rule
+syn keyword ngxDirectiveThirdParty contained LibInjectionSql libinjection_sql
+syn keyword ngxDirectiveThirdParty contained LibInjectionXss libinjection_xss
" Nchan Module <https://nchan.slact.net/>
" Fast, horizontally scalable, multiprocess pub/sub queuing server and proxy for HTTP, long-polling, Websockets and EventSource (SSE)
-syn keyword ngxDirectiveThirdParty nchan_channel_id
-syn keyword ngxDirectiveThirdParty nchan_channel_id_split_delimiter
-syn keyword ngxDirectiveThirdParty nchan_eventsource_event
-syn keyword ngxDirectiveThirdParty nchan_longpoll_multipart_response
-syn keyword ngxDirectiveThirdParty nchan_publisher
-syn keyword ngxDirectiveThirdParty nchan_publisher_channel_id
-syn keyword ngxDirectiveThirdParty nchan_publisher_upstream_request
-syn keyword ngxDirectiveThirdParty nchan_pubsub
-syn keyword ngxDirectiveThirdParty nchan_subscribe_request
-syn keyword ngxDirectiveThirdParty nchan_subscriber
-syn keyword ngxDirectiveThirdParty nchan_subscriber_channel_id
-syn keyword ngxDirectiveThirdParty nchan_subscriber_compound_etag_message_id
-syn keyword ngxDirectiveThirdParty nchan_subscriber_first_message
-syn keyword ngxDirectiveThirdParty nchan_subscriber_http_raw_stream_separator
-syn keyword ngxDirectiveThirdParty nchan_subscriber_last_message_id
-syn keyword ngxDirectiveThirdParty nchan_subscriber_message_id_custom_etag_header
-syn keyword ngxDirectiveThirdParty nchan_subscriber_timeout
-syn keyword ngxDirectiveThirdParty nchan_unsubscribe_request
-syn keyword ngxDirectiveThirdParty nchan_websocket_ping_interval
-syn keyword ngxDirectiveThirdParty nchan_authorize_request
-syn keyword ngxDirectiveThirdParty nchan_max_reserved_memory
-syn keyword ngxDirectiveThirdParty nchan_message_buffer_length
-syn keyword ngxDirectiveThirdParty nchan_message_timeout
-syn keyword ngxDirectiveThirdParty nchan_redis_idle_channel_cache_timeout
-syn keyword ngxDirectiveThirdParty nchan_redis_namespace
-syn keyword ngxDirectiveThirdParty nchan_redis_pass
-syn keyword ngxDirectiveThirdParty nchan_redis_ping_interval
-syn keyword ngxDirectiveThirdParty nchan_redis_server
-syn keyword ngxDirectiveThirdParty nchan_redis_storage_mode
-syn keyword ngxDirectiveThirdParty nchan_redis_url
-syn keyword ngxDirectiveThirdParty nchan_store_messages
-syn keyword ngxDirectiveThirdParty nchan_use_redis
-syn keyword ngxDirectiveThirdParty nchan_access_control_allow_origin
-syn keyword ngxDirectiveThirdParty nchan_channel_group
-syn keyword ngxDirectiveThirdParty nchan_channel_group_accounting
-syn keyword ngxDirectiveThirdParty nchan_group_location
-syn keyword ngxDirectiveThirdParty nchan_group_max_channels
-syn keyword ngxDirectiveThirdParty nchan_group_max_messages
-syn keyword ngxDirectiveThirdParty nchan_group_max_messages_disk
-syn keyword ngxDirectiveThirdParty nchan_group_max_messages_memory
-syn keyword ngxDirectiveThirdParty nchan_group_max_subscribers
-syn keyword ngxDirectiveThirdParty nchan_subscribe_existing_channels_only
-syn keyword ngxDirectiveThirdParty nchan_channel_event_string
-syn keyword ngxDirectiveThirdParty nchan_channel_events_channel_id
-syn keyword ngxDirectiveThirdParty nchan_stub_status
-syn keyword ngxDirectiveThirdParty nchan_max_channel_id_length
-syn keyword ngxDirectiveThirdParty nchan_max_channel_subscribers
-syn keyword ngxDirectiveThirdParty nchan_channel_timeout
-syn keyword ngxDirectiveThirdParty nchan_storage_engine
+syn keyword ngxDirectiveThirdParty contained nchan_channel_id
+syn keyword ngxDirectiveThirdParty contained nchan_channel_id_split_delimiter
+syn keyword ngxDirectiveThirdParty contained nchan_eventsource_event
+syn keyword ngxDirectiveThirdParty contained nchan_longpoll_multipart_response
+syn keyword ngxDirectiveThirdParty contained nchan_publisher
+syn keyword ngxDirectiveThirdParty contained nchan_publisher_channel_id
+syn keyword ngxDirectiveThirdParty contained nchan_publisher_upstream_request
+syn keyword ngxDirectiveThirdParty contained nchan_pubsub
+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_message_id_custom_etag_header
+syn keyword ngxDirectiveThirdParty contained nchan_subscriber_timeout
+syn keyword ngxDirectiveThirdParty contained nchan_unsubscribe_request
+syn keyword ngxDirectiveThirdParty contained nchan_websocket_ping_interval
+syn keyword ngxDirectiveThirdParty contained nchan_authorize_request
+syn keyword ngxDirectiveThirdParty contained nchan_max_reserved_memory
+syn keyword ngxDirectiveThirdParty contained nchan_message_buffer_length
+syn keyword ngxDirectiveThirdParty contained nchan_message_timeout
+syn keyword ngxDirectiveThirdParty contained nchan_redis_idle_channel_cache_timeout
+syn keyword ngxDirectiveThirdParty contained nchan_redis_namespace
+syn keyword ngxDirectiveThirdParty contained nchan_redis_pass
+syn keyword ngxDirectiveThirdParty contained nchan_redis_ping_interval
+syn keyword ngxDirectiveThirdParty contained nchan_redis_server
+syn keyword ngxDirectiveThirdParty contained nchan_redis_storage_mode
+syn keyword ngxDirectiveThirdParty contained nchan_redis_url
+syn keyword ngxDirectiveThirdParty contained nchan_store_messages
+syn keyword ngxDirectiveThirdParty contained nchan_use_redis
+syn keyword ngxDirectiveThirdParty contained nchan_access_control_allow_origin
+syn keyword ngxDirectiveThirdParty contained nchan_channel_group
+syn keyword ngxDirectiveThirdParty contained nchan_channel_group_accounting
+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_subscribe_existing_channels_only
+syn keyword ngxDirectiveThirdParty contained nchan_channel_event_string
+syn keyword ngxDirectiveThirdParty contained nchan_channel_events_channel_id
+syn keyword ngxDirectiveThirdParty contained nchan_stub_status
+syn keyword ngxDirectiveThirdParty contained nchan_max_channel_id_length
+syn keyword ngxDirectiveThirdParty contained nchan_max_channel_subscribers
+syn keyword ngxDirectiveThirdParty contained nchan_channel_timeout
+syn keyword ngxDirectiveThirdParty contained nchan_storage_engine
" Nginx Notice Module <https://github.com/kr/nginx-notice>
" Serve static file to POST requests.
-syn keyword ngxDirectiveThirdParty notice
-syn keyword ngxDirectiveThirdParty notice_type
+syn keyword ngxDirectiveThirdParty contained notice
+syn keyword ngxDirectiveThirdParty contained notice_type
" OCSP Proxy Module <https://github.com/kyprizel/nginx_ocsp_proxy-module>
" Nginx OCSP processing module designed for response caching
-syn keyword ngxDirectiveThirdParty ocsp_proxy
-syn keyword ngxDirectiveThirdParty ocsp_cache_timeout
+syn keyword ngxDirectiveThirdParty contained ocsp_proxy
+syn keyword ngxDirectiveThirdParty contained ocsp_cache_timeout
" Eval Module <https://github.com/openresty/nginx-eval-module>
" Module for nginx web server evaluates response of proxy or memcached module into variables.
-syn keyword ngxDirectiveThirdParty eval
-syn keyword ngxDirectiveThirdParty eval_escalate
-syn keyword ngxDirectiveThirdParty eval_buffer_size
-syn keyword ngxDirectiveThirdParty eval_override_content_type
-syn keyword ngxDirectiveThirdParty eval_subrequest_in_memory
+syn keyword ngxDirectiveThirdParty contained eval
+syn keyword ngxDirectiveThirdParty contained eval_escalate
+syn keyword ngxDirectiveThirdParty contained eval_buffer_size
+syn keyword ngxDirectiveThirdParty contained eval_override_content_type
+syn keyword ngxDirectiveThirdParty contained eval_subrequest_in_memory
" OpenSSL Version Module <https://github.com/apcera/nginx-openssl-version>
" Nginx OpenSSL version check at startup
-syn keyword ngxDirectiveThirdParty openssl_version_minimum
-syn keyword ngxDirectiveThirdParty openssl_builddate_minimum
+syn keyword ngxDirectiveThirdParty contained openssl_version_minimum
+syn keyword ngxDirectiveThirdParty contained openssl_builddate_minimum
" Owner Match Module <https://www.nginx.com/resources/wiki/modules/owner_match/>
" Control access for specific owners and groups of files
-syn keyword ngxDirectiveThirdParty omallow
-syn keyword ngxDirectiveThirdParty omdeny
+syn keyword ngxDirectiveThirdParty contained omallow
+syn keyword ngxDirectiveThirdParty contained omdeny
" Accept Language Module <https://www.nginx.com/resources/wiki/modules/accept_language/>
" Parses the Accept-Language header and gives the most suitable locale from a list of supported locales.
-syn keyword ngxDirectiveThirdParty pagespeed
+syn keyword ngxDirectiveThirdParty contained pagespeed
" PHP Memcache Standard Balancer Module <https://github.com/replay/ngx_http_php_memcache_standard_balancer>
" Loadbalancer that is compatible to the standard loadbalancer in the php-memcache module
-syn keyword ngxDirectiveThirdParty hash_key
+syn keyword ngxDirectiveThirdParty contained hash_key
" PHP Session Module <https://github.com/replay/ngx_http_php_session>
" Nginx module to parse php sessions
-syn keyword ngxDirectiveThirdParty php_session_parse
-syn keyword ngxDirectiveThirdParty php_session_strip_formatting
+syn keyword ngxDirectiveThirdParty contained php_session_parse
+syn keyword ngxDirectiveThirdParty contained php_session_strip_formatting
" Phusion Passenger Module <https://www.phusionpassenger.com/library/config/nginx/>
" Passenger is an open source web application server.
-syn keyword ngxDirectiveThirdParty passenger_root
-syn keyword ngxDirectiveThirdParty passenger_enabled
-syn keyword ngxDirectiveThirdParty passenger_base_uri
-syn keyword ngxDirectiveThirdParty passenger_document_root
-syn keyword ngxDirectiveThirdParty passenger_ruby
-syn keyword ngxDirectiveThirdParty passenger_python
-syn keyword ngxDirectiveThirdParty passenger_nodejs
-syn keyword ngxDirectiveThirdParty passenger_meteor_app_settings
-syn keyword ngxDirectiveThirdParty passenger_app_env
-syn keyword ngxDirectiveThirdParty passenger_app_root
-syn keyword ngxDirectiveThirdParty passenger_app_group_name
-syn keyword ngxDirectiveThirdParty passenger_app_type
-syn keyword ngxDirectiveThirdParty passenger_startup_file
-syn keyword ngxDirectiveThirdParty passenger_restart_dir
-syn keyword ngxDirectiveThirdParty passenger_spawn_method
-syn keyword ngxDirectiveThirdParty passenger_env_var
-syn keyword ngxDirectiveThirdParty passenger_load_shell_envvars
-syn keyword ngxDirectiveThirdParty passenger_rolling_restarts
-syn keyword ngxDirectiveThirdParty passenger_resist_deployment_errors
-syn keyword ngxDirectiveThirdParty passenger_user_switching
-syn keyword ngxDirectiveThirdParty passenger_user
-syn keyword ngxDirectiveThirdParty passenger_group
-syn keyword ngxDirectiveThirdParty passenger_default_user
-syn keyword ngxDirectiveThirdParty passenger_default_group
-syn keyword ngxDirectiveThirdParty passenger_show_version_in_header
-syn keyword ngxDirectiveThirdParty passenger_friendly_error_pages
-syn keyword ngxDirectiveThirdParty passenger_disable_security_update_check
-syn keyword ngxDirectiveThirdParty passenger_security_update_check_proxy
-syn keyword ngxDirectiveThirdParty passenger_max_pool_size
-syn keyword ngxDirectiveThirdParty passenger_min_instances
-syn keyword ngxDirectiveThirdParty passenger_max_instances
-syn keyword ngxDirectiveThirdParty passenger_max_instances_per_app
-syn keyword ngxDirectiveThirdParty passenger_pool_idle_time
-syn keyword ngxDirectiveThirdParty passenger_max_preloader_idle_time
-syn keyword ngxDirectiveThirdParty passenger_force_max_concurrent_requests_per_process
-syn keyword ngxDirectiveThirdParty passenger_start_timeout
-syn keyword ngxDirectiveThirdParty passenger_concurrency_model
-syn keyword ngxDirectiveThirdParty passenger_thread_count
-syn keyword ngxDirectiveThirdParty passenger_max_requests
-syn keyword ngxDirectiveThirdParty passenger_max_request_time
-syn keyword ngxDirectiveThirdParty passenger_memory_limit
-syn keyword ngxDirectiveThirdParty passenger_stat_throttle_rate
-syn keyword ngxDirectiveThirdParty passenger_core_file_descriptor_ulimit
-syn keyword ngxDirectiveThirdParty passenger_app_file_descriptor_ulimit
-syn keyword ngxDirectiveThirdParty passenger_pre_start
-syn keyword ngxDirectiveThirdParty passenger_set_header
-syn keyword ngxDirectiveThirdParty passenger_max_request_queue_size
-syn keyword ngxDirectiveThirdParty passenger_request_queue_overflow_status_code
-syn keyword ngxDirectiveThirdParty passenger_sticky_sessions
-syn keyword ngxDirectiveThirdParty passenger_sticky_sessions_cookie_name
-syn keyword ngxDirectiveThirdParty passenger_abort_websockets_on_process_shutdown
-syn keyword ngxDirectiveThirdParty passenger_ignore_client_abort
-syn keyword ngxDirectiveThirdParty passenger_intercept_errors
-syn keyword ngxDirectiveThirdParty passenger_pass_header
-syn keyword ngxDirectiveThirdParty passenger_ignore_headers
-syn keyword ngxDirectiveThirdParty passenger_headers_hash_bucket_size
-syn keyword ngxDirectiveThirdParty passenger_headers_hash_max_size
-syn keyword ngxDirectiveThirdParty passenger_buffer_response
-syn keyword ngxDirectiveThirdParty passenger_response_buffer_high_watermark
-syn keyword ngxDirectiveThirdParty passenger_buffer_size, passenger_buffers, passenger_busy_buffers_size
-syn keyword ngxDirectiveThirdParty passenger_socket_backlog
-syn keyword ngxDirectiveThirdParty passenger_log_level
-syn keyword ngxDirectiveThirdParty passenger_log_file
-syn keyword ngxDirectiveThirdParty passenger_file_descriptor_log_file
-syn keyword ngxDirectiveThirdParty passenger_debugger
-syn keyword ngxDirectiveThirdParty passenger_instance_registry_dir
-syn keyword ngxDirectiveThirdParty passenger_data_buffer_dir
-syn keyword ngxDirectiveThirdParty passenger_fly_with
-syn keyword ngxDirectiveThirdParty union_station_support
-syn keyword ngxDirectiveThirdParty union_station_key
-syn keyword ngxDirectiveThirdParty union_station_proxy_address
-syn keyword ngxDirectiveThirdParty union_station_filter
-syn keyword ngxDirectiveThirdParty union_station_gateway_address
-syn keyword ngxDirectiveThirdParty union_station_gateway_port
-syn keyword ngxDirectiveThirdParty union_station_gateway_cert
-syn keyword ngxDirectiveDeprecated rails_spawn_method
-syn keyword ngxDirectiveDeprecated passenger_debug_log_file
+syn keyword ngxDirectiveThirdParty contained passenger_root
+syn keyword ngxDirectiveThirdParty contained passenger_enabled
+syn keyword ngxDirectiveThirdParty contained passenger_base_uri
+syn keyword ngxDirectiveThirdParty contained passenger_document_root
+syn keyword ngxDirectiveThirdParty contained passenger_ruby
+syn keyword ngxDirectiveThirdParty contained passenger_python
+syn keyword ngxDirectiveThirdParty contained passenger_nodejs
+syn keyword ngxDirectiveThirdParty contained passenger_meteor_app_settings
+syn keyword ngxDirectiveThirdParty contained passenger_app_env
+syn keyword ngxDirectiveThirdParty contained passenger_app_root
+syn keyword ngxDirectiveThirdParty contained passenger_app_group_name
+syn keyword ngxDirectiveThirdParty contained passenger_app_type
+syn keyword ngxDirectiveThirdParty contained passenger_startup_file
+syn keyword ngxDirectiveThirdParty contained passenger_restart_dir
+syn keyword ngxDirectiveThirdParty contained passenger_spawn_method
+syn keyword ngxDirectiveThirdParty contained passenger_env_var
+syn keyword ngxDirectiveThirdParty contained passenger_load_shell_envvars
+syn keyword ngxDirectiveThirdParty contained passenger_rolling_restarts
+syn keyword ngxDirectiveThirdParty contained passenger_resist_deployment_errors
+syn keyword ngxDirectiveThirdParty contained passenger_user_switching
+syn keyword ngxDirectiveThirdParty contained passenger_user
+syn keyword ngxDirectiveThirdParty contained passenger_group
+syn keyword ngxDirectiveThirdParty contained passenger_default_user
+syn keyword ngxDirectiveThirdParty contained passenger_default_group
+syn keyword ngxDirectiveThirdParty contained passenger_show_version_in_header
+syn keyword ngxDirectiveThirdParty contained passenger_friendly_error_pages
+syn keyword ngxDirectiveThirdParty contained passenger_disable_security_update_check
+syn keyword ngxDirectiveThirdParty contained passenger_security_update_check_proxy
+syn keyword ngxDirectiveThirdParty contained passenger_max_pool_size
+syn keyword ngxDirectiveThirdParty contained passenger_min_instances
+syn keyword ngxDirectiveThirdParty contained passenger_max_instances
+syn keyword ngxDirectiveThirdParty contained passenger_max_instances_per_app
+syn keyword ngxDirectiveThirdParty contained passenger_pool_idle_time
+syn keyword ngxDirectiveThirdParty contained passenger_max_preloader_idle_time
+syn keyword ngxDirectiveThirdParty contained passenger_force_max_concurrent_requests_per_process
+syn keyword ngxDirectiveThirdParty contained passenger_start_timeout
+syn keyword ngxDirectiveThirdParty contained passenger_concurrency_model
+syn keyword ngxDirectiveThirdParty contained passenger_thread_count
+syn keyword ngxDirectiveThirdParty contained passenger_max_requests
+syn keyword ngxDirectiveThirdParty contained passenger_max_request_time
+syn keyword ngxDirectiveThirdParty contained passenger_memory_limit
+syn keyword ngxDirectiveThirdParty contained passenger_stat_throttle_rate
+syn keyword ngxDirectiveThirdParty contained passenger_core_file_descriptor_ulimit
+syn keyword ngxDirectiveThirdParty contained passenger_app_file_descriptor_ulimit
+syn keyword ngxDirectiveThirdParty contained passenger_pre_start
+syn keyword ngxDirectiveThirdParty contained passenger_set_header
+syn keyword ngxDirectiveThirdParty contained passenger_max_request_queue_size
+syn keyword ngxDirectiveThirdParty contained passenger_request_queue_overflow_status_code
+syn keyword ngxDirectiveThirdParty contained passenger_sticky_sessions
+syn keyword ngxDirectiveThirdParty contained passenger_sticky_sessions_cookie_name
+syn keyword ngxDirectiveThirdParty contained passenger_abort_websockets_on_process_shutdown
+syn keyword ngxDirectiveThirdParty contained passenger_ignore_client_abort
+syn keyword ngxDirectiveThirdParty contained passenger_intercept_errors
+syn keyword ngxDirectiveThirdParty contained passenger_pass_header
+syn keyword ngxDirectiveThirdParty contained passenger_ignore_headers
+syn keyword ngxDirectiveThirdParty contained passenger_headers_hash_bucket_size
+syn keyword ngxDirectiveThirdParty contained passenger_headers_hash_max_size
+syn keyword ngxDirectiveThirdParty contained passenger_buffer_response
+syn keyword ngxDirectiveThirdParty contained passenger_response_buffer_high_watermark
+syn keyword ngxDirectiveThirdParty contained passenger_buffer_size, passenger_buffers, passenger_busy_buffers_size
+syn keyword ngxDirectiveThirdParty contained passenger_socket_backlog
+syn keyword ngxDirectiveThirdParty contained passenger_log_level
+syn keyword ngxDirectiveThirdParty contained passenger_log_file
+syn keyword ngxDirectiveThirdParty contained passenger_file_descriptor_log_file
+syn keyword ngxDirectiveThirdParty contained passenger_debugger
+syn keyword ngxDirectiveThirdParty contained passenger_instance_registry_dir
+syn keyword ngxDirectiveThirdParty contained passenger_data_buffer_dir
+syn keyword ngxDirectiveThirdParty contained passenger_fly_with
+syn keyword ngxDirectiveThirdParty contained union_station_support
+syn keyword ngxDirectiveThirdParty contained union_station_key
+syn keyword ngxDirectiveThirdParty contained union_station_proxy_address
+syn keyword ngxDirectiveThirdParty contained union_station_filter
+syn keyword ngxDirectiveThirdParty contained union_station_gateway_address
+syn keyword ngxDirectiveThirdParty contained union_station_gateway_port
+syn keyword ngxDirectiveThirdParty contained union_station_gateway_cert
+syn keyword ngxDirectiveDeprecated contained rails_spawn_method
+syn keyword ngxDirectiveDeprecated contained passenger_debug_log_file
" Postgres Module <http://labs.frickle.com/nginx_ngx_postgres/>
" Upstream module that allows nginx to communicate directly with PostgreSQL database.
-syn keyword ngxDirectiveThirdParty postgres_server
-syn keyword ngxDirectiveThirdParty postgres_keepalive
-syn keyword ngxDirectiveThirdParty postgres_pass
-syn keyword ngxDirectiveThirdParty postgres_query
-syn keyword ngxDirectiveThirdParty postgres_rewrite
-syn keyword ngxDirectiveThirdParty postgres_output
-syn keyword ngxDirectiveThirdParty postgres_set
-syn keyword ngxDirectiveThirdParty postgres_escape
-syn keyword ngxDirectiveThirdParty postgres_connect_timeout
-syn keyword ngxDirectiveThirdParty postgres_result_timeout
+syn keyword ngxDirectiveThirdParty contained postgres_server
+syn keyword ngxDirectiveThirdParty contained postgres_keepalive
+syn keyword ngxDirectiveThirdParty contained postgres_pass
+syn keyword ngxDirectiveThirdParty contained postgres_query
+syn keyword ngxDirectiveThirdParty contained postgres_rewrite
+syn keyword ngxDirectiveThirdParty contained postgres_output
+syn keyword ngxDirectiveThirdParty contained postgres_set
+syn keyword ngxDirectiveThirdParty contained postgres_escape
+syn keyword ngxDirectiveThirdParty contained postgres_connect_timeout
+syn keyword ngxDirectiveThirdParty contained postgres_result_timeout
" Pubcookie Module <https://www.vanko.me/book/page/pubcookie-module-nginx>
" Authorizes users using encrypted cookies
-syn keyword ngxDirectiveThirdParty pubcookie_inactive_expire
-syn keyword ngxDirectiveThirdParty pubcookie_hard_expire
-syn keyword ngxDirectiveThirdParty pubcookie_app_id
-syn keyword ngxDirectiveThirdParty pubcookie_dir_depth
-syn keyword ngxDirectiveThirdParty pubcookie_catenate_app_ids
-syn keyword ngxDirectiveThirdParty pubcookie_app_srv_id
-syn keyword ngxDirectiveThirdParty pubcookie_login
-syn keyword ngxDirectiveThirdParty pubcookie_login_method
-syn keyword ngxDirectiveThirdParty pubcookie_post
-syn keyword ngxDirectiveThirdParty pubcookie_domain
-syn keyword ngxDirectiveThirdParty pubcookie_granting_cert_file
-syn keyword ngxDirectiveThirdParty pubcookie_session_key_file
-syn keyword ngxDirectiveThirdParty pubcookie_session_cert_file
-syn keyword ngxDirectiveThirdParty pubcookie_crypt_key_file
-syn keyword ngxDirectiveThirdParty pubcookie_end_session
-syn keyword ngxDirectiveThirdParty pubcookie_encryption
-syn keyword ngxDirectiveThirdParty pubcookie_session_reauth
-syn keyword ngxDirectiveThirdParty pubcookie_auth_type_names
-syn keyword ngxDirectiveThirdParty pubcookie_no_prompt
-syn keyword ngxDirectiveThirdParty pubcookie_on_demand
-syn keyword ngxDirectiveThirdParty pubcookie_addl_request
-syn keyword ngxDirectiveThirdParty pubcookie_no_obscure_cookies
-syn keyword ngxDirectiveThirdParty pubcookie_no_clean_creds
-syn keyword ngxDirectiveThirdParty pubcookie_egd_device
-syn keyword ngxDirectiveThirdParty pubcookie_no_blank
-syn keyword ngxDirectiveThirdParty pubcookie_super_debug
-syn keyword ngxDirectiveThirdParty pubcookie_set_remote_user
+syn keyword ngxDirectiveThirdParty contained pubcookie_inactive_expire
+syn keyword ngxDirectiveThirdParty contained pubcookie_hard_expire
+syn keyword ngxDirectiveThirdParty contained pubcookie_app_id
+syn keyword ngxDirectiveThirdParty contained pubcookie_dir_depth
+syn keyword ngxDirectiveThirdParty contained pubcookie_catenate_app_ids
+syn keyword ngxDirectiveThirdParty contained pubcookie_app_srv_id
+syn keyword ngxDirectiveThirdParty contained pubcookie_login
+syn keyword ngxDirectiveThirdParty contained pubcookie_login_method
+syn keyword ngxDirectiveThirdParty contained pubcookie_post
+syn keyword ngxDirectiveThirdParty contained pubcookie_domain
+syn keyword ngxDirectiveThirdParty contained pubcookie_granting_cert_file
+syn keyword ngxDirectiveThirdParty contained pubcookie_session_key_file
+syn keyword ngxDirectiveThirdParty contained pubcookie_session_cert_file
+syn keyword ngxDirectiveThirdParty contained pubcookie_crypt_key_file
+syn keyword ngxDirectiveThirdParty contained pubcookie_end_session
+syn keyword ngxDirectiveThirdParty contained pubcookie_encryption
+syn keyword ngxDirectiveThirdParty contained pubcookie_session_reauth
+syn keyword ngxDirectiveThirdParty contained pubcookie_auth_type_names
+syn keyword ngxDirectiveThirdParty contained pubcookie_no_prompt
+syn keyword ngxDirectiveThirdParty contained pubcookie_on_demand
+syn keyword ngxDirectiveThirdParty contained pubcookie_addl_request
+syn keyword ngxDirectiveThirdParty contained pubcookie_no_obscure_cookies
+syn keyword ngxDirectiveThirdParty contained pubcookie_no_clean_creds
+syn keyword ngxDirectiveThirdParty contained pubcookie_egd_device
+syn keyword ngxDirectiveThirdParty contained pubcookie_no_blank
+syn keyword ngxDirectiveThirdParty contained pubcookie_super_debug
+syn keyword ngxDirectiveThirdParty contained pubcookie_set_remote_user
" Push Stream Module <https://github.com/wandenberg/nginx-push-stream-module>
" A pure stream http push technology for your Nginx setup
-syn keyword ngxDirectiveThirdParty push_stream_channels_statistics
-syn keyword ngxDirectiveThirdParty push_stream_publisher
-syn keyword ngxDirectiveThirdParty push_stream_subscriber
-syn keyword ngxDirectiveThirdParty push_stream_shared_memory_size
-syn keyword ngxDirectiveThirdParty push_stream_channel_deleted_message_text
-syn keyword ngxDirectiveThirdParty push_stream_channel_inactivity_time
-syn keyword ngxDirectiveThirdParty push_stream_ping_message_text
-syn keyword ngxDirectiveThirdParty push_stream_timeout_with_body
-syn keyword ngxDirectiveThirdParty push_stream_message_ttl
-syn keyword ngxDirectiveThirdParty push_stream_max_subscribers_per_channel
-syn keyword ngxDirectiveThirdParty push_stream_max_messages_stored_per_channel
-syn keyword ngxDirectiveThirdParty push_stream_max_channel_id_length
-syn keyword ngxDirectiveThirdParty push_stream_max_number_of_channels
-syn keyword ngxDirectiveThirdParty push_stream_max_number_of_wildcard_channels
-syn keyword ngxDirectiveThirdParty push_stream_wildcard_channel_prefix
-syn keyword ngxDirectiveThirdParty push_stream_events_channel_id
-syn keyword ngxDirectiveThirdParty push_stream_channels_path
-syn keyword ngxDirectiveThirdParty push_stream_store_messages
-syn keyword ngxDirectiveThirdParty push_stream_channel_info_on_publish
-syn keyword ngxDirectiveThirdParty push_stream_authorized_channels_only
-syn keyword ngxDirectiveThirdParty push_stream_header_template_file
-syn keyword ngxDirectiveThirdParty push_stream_header_template
-syn keyword ngxDirectiveThirdParty push_stream_message_template
-syn keyword ngxDirectiveThirdParty push_stream_footer_template
-syn keyword ngxDirectiveThirdParty push_stream_wildcard_channel_max_qtd
-syn keyword ngxDirectiveThirdParty push_stream_ping_message_interval
-syn keyword ngxDirectiveThirdParty push_stream_subscriber_connection_ttl
-syn keyword ngxDirectiveThirdParty push_stream_longpolling_connection_ttl
-syn keyword ngxDirectiveThirdParty push_stream_websocket_allow_publish
-syn keyword ngxDirectiveThirdParty push_stream_last_received_message_time
-syn keyword ngxDirectiveThirdParty push_stream_last_received_message_tag
-syn keyword ngxDirectiveThirdParty push_stream_last_event_id
-syn keyword ngxDirectiveThirdParty push_stream_user_agent
-syn keyword ngxDirectiveThirdParty push_stream_padding_by_user_agent
-syn keyword ngxDirectiveThirdParty push_stream_allowed_origins
-syn keyword ngxDirectiveThirdParty push_stream_allow_connections_to_events_channel
+syn keyword ngxDirectiveThirdParty contained push_stream_channels_statistics
+syn keyword ngxDirectiveThirdParty contained push_stream_publisher
+syn keyword ngxDirectiveThirdParty contained push_stream_subscriber
+syn keyword ngxDirectiveThirdParty contained push_stream_shared_memory_size
+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_ping_message_text
+syn keyword ngxDirectiveThirdParty contained push_stream_timeout_with_body
+syn keyword ngxDirectiveThirdParty contained push_stream_message_ttl
+syn keyword ngxDirectiveThirdParty contained push_stream_max_subscribers_per_channel
+syn keyword ngxDirectiveThirdParty contained push_stream_max_messages_stored_per_channel
+syn keyword ngxDirectiveThirdParty contained push_stream_max_channel_id_length
+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_wildcard_channel_prefix
+syn keyword ngxDirectiveThirdParty contained push_stream_events_channel_id
+syn keyword ngxDirectiveThirdParty contained push_stream_channels_path
+syn keyword ngxDirectiveThirdParty contained push_stream_store_messages
+syn keyword ngxDirectiveThirdParty contained push_stream_channel_info_on_publish
+syn keyword ngxDirectiveThirdParty contained push_stream_authorized_channels_only
+syn keyword ngxDirectiveThirdParty contained push_stream_header_template_file
+syn keyword ngxDirectiveThirdParty contained push_stream_header_template
+syn keyword ngxDirectiveThirdParty contained push_stream_message_template
+syn keyword ngxDirectiveThirdParty contained push_stream_footer_template
+syn keyword ngxDirectiveThirdParty contained push_stream_wildcard_channel_max_qtd
+syn keyword ngxDirectiveThirdParty contained push_stream_ping_message_interval
+syn keyword ngxDirectiveThirdParty contained push_stream_subscriber_connection_ttl
+syn keyword ngxDirectiveThirdParty contained push_stream_longpolling_connection_ttl
+syn keyword ngxDirectiveThirdParty contained push_stream_websocket_allow_publish
+syn keyword ngxDirectiveThirdParty contained push_stream_last_received_message_time
+syn keyword ngxDirectiveThirdParty contained push_stream_last_received_message_tag
+syn keyword ngxDirectiveThirdParty contained push_stream_last_event_id
+syn keyword ngxDirectiveThirdParty contained push_stream_user_agent
+syn keyword ngxDirectiveThirdParty contained push_stream_padding_by_user_agent
+syn keyword ngxDirectiveThirdParty contained push_stream_allowed_origins
+syn keyword ngxDirectiveThirdParty contained push_stream_allow_connections_to_events_channel
" rDNS Module <https://github.com/flant/nginx-http-rdns>
" Make a reverse DNS (rDNS) lookup for incoming connection and provides simple access control of incoming hostname by allow/deny rules
-syn keyword ngxDirectiveThirdParty rdns
-syn keyword ngxDirectiveThirdParty rdns_allow
-syn keyword ngxDirectiveThirdParty rdns_deny
+syn keyword ngxDirectiveThirdParty contained rdns
+syn keyword ngxDirectiveThirdParty contained rdns_allow
+syn keyword ngxDirectiveThirdParty contained rdns_deny
" RDS CSV Module <https://github.com/openresty/rds-csv-nginx-module>
" Nginx output filter module to convert Resty-DBD-Streams (RDS) to Comma-Separated Values (CSV)
-syn keyword ngxDirectiveThirdParty rds_csv
-syn keyword ngxDirectiveThirdParty rds_csv_row_terminator
-syn keyword ngxDirectiveThirdParty rds_csv_field_separator
-syn keyword ngxDirectiveThirdParty rds_csv_field_name_header
-syn keyword ngxDirectiveThirdParty rds_csv_content_type
-syn keyword ngxDirectiveThirdParty rds_csv_buffer_size
+syn keyword ngxDirectiveThirdParty contained rds_csv
+syn keyword ngxDirectiveThirdParty contained rds_csv_row_terminator
+syn keyword ngxDirectiveThirdParty contained rds_csv_field_separator
+syn keyword ngxDirectiveThirdParty contained rds_csv_field_name_header
+syn keyword ngxDirectiveThirdParty contained rds_csv_content_type
+syn keyword ngxDirectiveThirdParty contained rds_csv_buffer_size
" RDS JSON Module <https://github.com/openresty/rds-json-nginx-module>
" An output filter that formats Resty DBD Streams generated by ngx_drizzle and others to JSON
-syn keyword ngxDirectiveThirdParty rds_json
-syn keyword ngxDirectiveThirdParty rds_json_buffer_size
-syn keyword ngxDirectiveThirdParty rds_json_format
-syn keyword ngxDirectiveThirdParty rds_json_root
-syn keyword ngxDirectiveThirdParty rds_json_success_property
-syn keyword ngxDirectiveThirdParty rds_json_user_property
-syn keyword ngxDirectiveThirdParty rds_json_errcode_key
-syn keyword ngxDirectiveThirdParty rds_json_errstr_key
-syn keyword ngxDirectiveThirdParty rds_json_ret
-syn keyword ngxDirectiveThirdParty rds_json_content_type
+syn keyword ngxDirectiveThirdParty contained rds_json
+syn keyword ngxDirectiveThirdParty contained rds_json_buffer_size
+syn keyword ngxDirectiveThirdParty contained rds_json_format
+syn keyword ngxDirectiveThirdParty contained rds_json_root
+syn keyword ngxDirectiveThirdParty contained rds_json_success_property
+syn keyword ngxDirectiveThirdParty contained rds_json_user_property
+syn keyword ngxDirectiveThirdParty contained rds_json_errcode_key
+syn keyword ngxDirectiveThirdParty contained rds_json_errstr_key
+syn keyword ngxDirectiveThirdParty contained rds_json_ret
+syn keyword ngxDirectiveThirdParty contained rds_json_content_type
" Redis Module <https://www.nginx.com/resources/wiki/modules/redis/>
" Use this module to perform simple caching
-syn keyword ngxDirectiveThirdParty redis_pass
-syn keyword ngxDirectiveThirdParty redis_bind
-syn keyword ngxDirectiveThirdParty redis_connect_timeout
-syn keyword ngxDirectiveThirdParty redis_read_timeout
-syn keyword ngxDirectiveThirdParty redis_send_timeout
-syn keyword ngxDirectiveThirdParty redis_buffer_size
-syn keyword ngxDirectiveThirdParty redis_next_upstream
-syn keyword ngxDirectiveThirdParty redis_gzip_flag
+syn keyword ngxDirectiveThirdParty contained redis_pass
+syn keyword ngxDirectiveThirdParty contained redis_bind
+syn keyword ngxDirectiveThirdParty contained redis_connect_timeout
+syn keyword ngxDirectiveThirdParty contained redis_read_timeout
+syn keyword ngxDirectiveThirdParty contained redis_send_timeout
+syn keyword ngxDirectiveThirdParty contained redis_buffer_size
+syn keyword ngxDirectiveThirdParty contained redis_next_upstream
+syn keyword ngxDirectiveThirdParty contained redis_gzip_flag
" Redis 2 Module <https://github.com/openresty/redis2-nginx-module>
" Nginx upstream module for the Redis 2.0 protocol
-syn keyword ngxDirectiveThirdParty redis2_query
-syn keyword ngxDirectiveThirdParty redis2_raw_query
-syn keyword ngxDirectiveThirdParty redis2_raw_queries
-syn keyword ngxDirectiveThirdParty redis2_literal_raw_query
-syn keyword ngxDirectiveThirdParty redis2_pass
-syn keyword ngxDirectiveThirdParty redis2_connect_timeout
-syn keyword ngxDirectiveThirdParty redis2_send_timeout
-syn keyword ngxDirectiveThirdParty redis2_read_timeout
-syn keyword ngxDirectiveThirdParty redis2_buffer_size
-syn keyword ngxDirectiveThirdParty redis2_next_upstream
+syn keyword ngxDirectiveThirdParty contained redis2_query
+syn keyword ngxDirectiveThirdParty contained redis2_raw_query
+syn keyword ngxDirectiveThirdParty contained redis2_raw_queries
+syn keyword ngxDirectiveThirdParty contained redis2_literal_raw_query
+syn keyword ngxDirectiveThirdParty contained redis2_pass
+syn keyword ngxDirectiveThirdParty contained redis2_connect_timeout
+syn keyword ngxDirectiveThirdParty contained redis2_send_timeout
+syn keyword ngxDirectiveThirdParty contained redis2_read_timeout
+syn keyword ngxDirectiveThirdParty contained redis2_buffer_size
+syn keyword ngxDirectiveThirdParty contained redis2_next_upstream
" Replace Filter Module <https://github.com/openresty/replace-filter-nginx-module>
" Streaming regular expression replacement in response bodies
-syn keyword ngxDirectiveThirdParty replace_filter
-syn keyword ngxDirectiveThirdParty replace_filter_types
-syn keyword ngxDirectiveThirdParty replace_filter_max_buffered_size
-syn keyword ngxDirectiveThirdParty replace_filter_last_modified
-syn keyword ngxDirectiveThirdParty replace_filter_skip
+syn keyword ngxDirectiveThirdParty contained replace_filter
+syn keyword ngxDirectiveThirdParty contained replace_filter_types
+syn keyword ngxDirectiveThirdParty contained replace_filter_max_buffered_size
+syn keyword ngxDirectiveThirdParty contained replace_filter_last_modified
+syn keyword ngxDirectiveThirdParty contained replace_filter_skip
" Roboo Module <https://github.com/yuri-gushin/Roboo>
" HTTP Robot Mitigator
" RRD Graph Module <https://www.nginx.com/resources/wiki/modules/rrd_graph/>
" This module provides an HTTP interface to RRDtool's graphing facilities.
-syn keyword ngxDirectiveThirdParty rrd_graph
-syn keyword ngxDirectiveThirdParty rrd_graph_root
+syn keyword ngxDirectiveThirdParty contained rrd_graph
+syn keyword ngxDirectiveThirdParty contained rrd_graph_root
" RTMP Module <https://github.com/arut/nginx-rtmp-module>
" NGINX-based Media Streaming Server
-syn keyword ngxDirectiveThirdParty rtmp
-" syn keyword ngxDirectiveThirdParty server
-" syn keyword ngxDirectiveThirdParty listen
-syn keyword ngxDirectiveThirdParty application
-" syn keyword ngxDirectiveThirdParty timeout
-syn keyword ngxDirectiveThirdParty ping
-syn keyword ngxDirectiveThirdParty ping_timeout
-syn keyword ngxDirectiveThirdParty max_streams
-syn keyword ngxDirectiveThirdParty ack_window
-syn keyword ngxDirectiveThirdParty chunk_size
-syn keyword ngxDirectiveThirdParty max_queue
-syn keyword ngxDirectiveThirdParty max_message
-syn keyword ngxDirectiveThirdParty out_queue
-syn keyword ngxDirectiveThirdParty out_cork
-" syn keyword ngxDirectiveThirdParty allow
-" syn keyword ngxDirectiveThirdParty deny
-syn keyword ngxDirectiveThirdParty exec_push
-syn keyword ngxDirectiveThirdParty exec_pull
-syn keyword ngxDirectiveThirdParty exec
-syn keyword ngxDirectiveThirdParty exec_options
-syn keyword ngxDirectiveThirdParty exec_static
-syn keyword ngxDirectiveThirdParty exec_kill_signal
-syn keyword ngxDirectiveThirdParty respawn
-syn keyword ngxDirectiveThirdParty respawn_timeout
-syn keyword ngxDirectiveThirdParty exec_publish
-syn keyword ngxDirectiveThirdParty exec_play
-syn keyword ngxDirectiveThirdParty exec_play_done
-syn keyword ngxDirectiveThirdParty exec_publish_done
-syn keyword ngxDirectiveThirdParty exec_record_done
-syn keyword ngxDirectiveThirdParty live
-syn keyword ngxDirectiveThirdParty meta
-syn keyword ngxDirectiveThirdParty interleave
-syn keyword ngxDirectiveThirdParty wait_key
-syn keyword ngxDirectiveThirdParty wait_video
-syn keyword ngxDirectiveThirdParty publish_notify
-syn keyword ngxDirectiveThirdParty drop_idle_publisher
-syn keyword ngxDirectiveThirdParty sync
-syn keyword ngxDirectiveThirdParty play_restart
-syn keyword ngxDirectiveThirdParty idle_streams
-syn keyword ngxDirectiveThirdParty record
-syn keyword ngxDirectiveThirdParty record_path
-syn keyword ngxDirectiveThirdParty record_suffix
-syn keyword ngxDirectiveThirdParty record_unique
-syn keyword ngxDirectiveThirdParty record_append
-syn keyword ngxDirectiveThirdParty record_lock
-syn keyword ngxDirectiveThirdParty record_max_size
-syn keyword ngxDirectiveThirdParty record_max_frames
-syn keyword ngxDirectiveThirdParty record_interval
-syn keyword ngxDirectiveThirdParty recorder
-syn keyword ngxDirectiveThirdParty record_notify
-syn keyword ngxDirectiveThirdParty play
-syn keyword ngxDirectiveThirdParty play_temp_path
-syn keyword ngxDirectiveThirdParty play_local_path
-syn keyword ngxDirectiveThirdParty pull
-syn keyword ngxDirectiveThirdParty push
-syn keyword ngxDirectiveThirdParty push_reconnect
-syn keyword ngxDirectiveThirdParty session_relay
-syn keyword ngxDirectiveThirdParty on_connect
-syn keyword ngxDirectiveThirdParty on_play
-syn keyword ngxDirectiveThirdParty on_publish
-syn keyword ngxDirectiveThirdParty on_done
-syn keyword ngxDirectiveThirdParty on_play_done
-syn keyword ngxDirectiveThirdParty on_publish_done
-syn keyword ngxDirectiveThirdParty on_record_done
-syn keyword ngxDirectiveThirdParty on_update
-syn keyword ngxDirectiveThirdParty notify_update_timeout
-syn keyword ngxDirectiveThirdParty notify_update_strict
-syn keyword ngxDirectiveThirdParty notify_relay_redirect
-syn keyword ngxDirectiveThirdParty notify_method
-syn keyword ngxDirectiveThirdParty hls
-syn keyword ngxDirectiveThirdParty hls_path
-syn keyword ngxDirectiveThirdParty hls_fragment
-syn keyword ngxDirectiveThirdParty hls_playlist_length
-syn keyword ngxDirectiveThirdParty hls_sync
-syn keyword ngxDirectiveThirdParty hls_continuous
-syn keyword ngxDirectiveThirdParty hls_nested
-syn keyword ngxDirectiveThirdParty hls_base_url
-syn keyword ngxDirectiveThirdParty hls_cleanup
-syn keyword ngxDirectiveThirdParty hls_fragment_naming
-syn keyword ngxDirectiveThirdParty hls_fragment_slicing
-syn keyword ngxDirectiveThirdParty hls_variant
-syn keyword ngxDirectiveThirdParty hls_type
-syn keyword ngxDirectiveThirdParty hls_keys
-syn keyword ngxDirectiveThirdParty hls_key_path
-syn keyword ngxDirectiveThirdParty hls_key_url
-syn keyword ngxDirectiveThirdParty hls_fragments_per_key
-syn keyword ngxDirectiveThirdParty dash
-syn keyword ngxDirectiveThirdParty dash_path
-syn keyword ngxDirectiveThirdParty dash_fragment
-syn keyword ngxDirectiveThirdParty dash_playlist_length
-syn keyword ngxDirectiveThirdParty dash_nested
-syn keyword ngxDirectiveThirdParty dash_cleanup
-" syn keyword ngxDirectiveThirdParty access_log
-" syn keyword ngxDirectiveThirdParty log_format
-syn keyword ngxDirectiveThirdParty max_connections
-syn keyword ngxDirectiveThirdParty rtmp_stat
-syn keyword ngxDirectiveThirdParty rtmp_stat_stylesheet
-syn keyword ngxDirectiveThirdParty rtmp_auto_push
-syn keyword ngxDirectiveThirdParty rtmp_auto_push_reconnect
-syn keyword ngxDirectiveThirdParty rtmp_socket_dir
-syn keyword ngxDirectiveThirdParty rtmp_control
+syn keyword ngxDirectiveThirdParty contained rtmp
+" syn keyword ngxDirectiveThirdParty contained server
+" syn keyword ngxDirectiveThirdParty contained listen
+syn keyword ngxDirectiveThirdParty contained application
+" syn keyword ngxDirectiveThirdParty contained timeout
+syn keyword ngxDirectiveThirdParty contained ping
+syn keyword ngxDirectiveThirdParty contained ping_timeout
+syn keyword ngxDirectiveThirdParty contained max_streams
+syn keyword ngxDirectiveThirdParty contained ack_window
+syn keyword ngxDirectiveThirdParty contained chunk_size
+syn keyword ngxDirectiveThirdParty contained max_queue
+syn keyword ngxDirectiveThirdParty contained max_message
+syn keyword ngxDirectiveThirdParty contained out_queue
+syn keyword ngxDirectiveThirdParty contained out_cork
+" syn keyword ngxDirectiveThirdParty contained allow
+" syn keyword ngxDirectiveThirdParty contained deny
+syn keyword ngxDirectiveThirdParty contained exec_push
+syn keyword ngxDirectiveThirdParty contained exec_pull
+syn keyword ngxDirectiveThirdParty contained exec
+syn keyword ngxDirectiveThirdParty contained exec_options
+syn keyword ngxDirectiveThirdParty contained exec_static
+syn keyword ngxDirectiveThirdParty contained exec_kill_signal
+syn keyword ngxDirectiveThirdParty contained respawn
+syn keyword ngxDirectiveThirdParty contained respawn_timeout
+syn keyword ngxDirectiveThirdParty contained exec_publish
+syn keyword ngxDirectiveThirdParty contained exec_play
+syn keyword ngxDirectiveThirdParty contained exec_play_done
+syn keyword ngxDirectiveThirdParty contained exec_publish_done
+syn keyword ngxDirectiveThirdParty contained exec_record_done
+syn keyword ngxDirectiveThirdParty contained live
+syn keyword ngxDirectiveThirdParty contained meta
+syn keyword ngxDirectiveThirdParty contained interleave
+syn keyword ngxDirectiveThirdParty contained wait_key
+syn keyword ngxDirectiveThirdParty contained wait_video
+syn keyword ngxDirectiveThirdParty contained publish_notify
+syn keyword ngxDirectiveThirdParty contained drop_idle_publisher
+syn keyword ngxDirectiveThirdParty contained sync
+syn keyword ngxDirectiveThirdParty contained play_restart
+syn keyword ngxDirectiveThirdParty contained idle_streams
+syn keyword ngxDirectiveThirdParty contained record
+syn keyword ngxDirectiveThirdParty contained record_path
+syn keyword ngxDirectiveThirdParty contained record_suffix
+syn keyword ngxDirectiveThirdParty contained record_unique
+syn keyword ngxDirectiveThirdParty contained record_append
+syn keyword ngxDirectiveThirdParty contained record_lock
+syn keyword ngxDirectiveThirdParty contained record_max_size
+syn keyword ngxDirectiveThirdParty contained record_max_frames
+syn keyword ngxDirectiveThirdParty contained record_interval
+syn keyword ngxDirectiveThirdParty contained recorder
+syn keyword ngxDirectiveThirdParty contained record_notify
+syn keyword ngxDirectiveThirdParty contained play
+syn keyword ngxDirectiveThirdParty contained play_temp_path
+syn keyword ngxDirectiveThirdParty contained play_local_path
+syn keyword ngxDirectiveThirdParty contained pull
+syn keyword ngxDirectiveThirdParty contained push
+syn keyword ngxDirectiveThirdParty contained push_reconnect
+syn keyword ngxDirectiveThirdParty contained session_relay
+syn keyword ngxDirectiveThirdParty contained on_connect
+syn keyword ngxDirectiveThirdParty contained on_play
+syn keyword ngxDirectiveThirdParty contained on_publish
+syn keyword ngxDirectiveThirdParty contained on_done
+syn keyword ngxDirectiveThirdParty contained on_play_done
+syn keyword ngxDirectiveThirdParty contained on_publish_done
+syn keyword ngxDirectiveThirdParty contained on_record_done
+syn keyword ngxDirectiveThirdParty contained on_update
+syn keyword ngxDirectiveThirdParty contained notify_update_timeout
+syn keyword ngxDirectiveThirdParty contained notify_update_strict
+syn keyword ngxDirectiveThirdParty contained notify_relay_redirect
+syn keyword ngxDirectiveThirdParty contained notify_method
+syn keyword ngxDirectiveThirdParty contained hls
+syn keyword ngxDirectiveThirdParty contained hls_path
+syn keyword ngxDirectiveThirdParty contained hls_fragment
+syn keyword ngxDirectiveThirdParty contained hls_playlist_length
+syn keyword ngxDirectiveThirdParty contained hls_sync
+syn keyword ngxDirectiveThirdParty contained hls_continuous
+syn keyword ngxDirectiveThirdParty contained hls_nested
+syn keyword ngxDirectiveThirdParty contained hls_base_url
+syn keyword ngxDirectiveThirdParty contained hls_cleanup
+syn keyword ngxDirectiveThirdParty contained hls_fragment_naming
+syn keyword ngxDirectiveThirdParty contained hls_fragment_slicing
+syn keyword ngxDirectiveThirdParty contained hls_variant
+syn keyword ngxDirectiveThirdParty contained hls_type
+syn keyword ngxDirectiveThirdParty contained hls_keys
+syn keyword ngxDirectiveThirdParty contained hls_key_path
+syn keyword ngxDirectiveThirdParty contained hls_key_url
+syn keyword ngxDirectiveThirdParty contained hls_fragments_per_key
+syn keyword ngxDirectiveThirdParty contained dash
+syn keyword ngxDirectiveThirdParty contained dash_path
+syn keyword ngxDirectiveThirdParty contained dash_fragment
+syn keyword ngxDirectiveThirdParty contained dash_playlist_length
+syn keyword ngxDirectiveThirdParty contained dash_nested
+syn keyword ngxDirectiveThirdParty contained dash_cleanup
+" syn keyword ngxDirectiveThirdParty contained access_log
+" syn keyword ngxDirectiveThirdParty contained log_format
+syn keyword ngxDirectiveThirdParty contained max_connections
+syn keyword ngxDirectiveThirdParty contained rtmp_stat
+syn keyword ngxDirectiveThirdParty contained rtmp_stat_stylesheet
+syn keyword ngxDirectiveThirdParty contained rtmp_auto_push
+syn keyword ngxDirectiveThirdParty contained rtmp_auto_push_reconnect
+syn keyword ngxDirectiveThirdParty contained rtmp_socket_dir
+syn keyword ngxDirectiveThirdParty contained rtmp_control
" RTMPT Module <https://github.com/kwojtek/nginx-rtmpt-proxy-module>
" Module for nginx to proxy rtmp using http protocol
-syn keyword ngxDirectiveThirdParty rtmpt_proxy_target
-syn keyword ngxDirectiveThirdParty rtmpt_proxy_rtmp_timeout
-syn keyword ngxDirectiveThirdParty rtmpt_proxy_http_timeout
-syn keyword ngxDirectiveThirdParty rtmpt_proxy
-syn keyword ngxDirectiveThirdParty rtmpt_proxy_stat
-syn keyword ngxDirectiveThirdParty rtmpt_proxy_stylesheet
+syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_target
+syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_rtmp_timeout
+syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_http_timeout
+syn keyword ngxDirectiveThirdParty contained rtmpt_proxy
+syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_stat
+syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_stylesheet
" Syntactically Awesome Module <https://github.com/mneudert/sass-nginx-module>
" Providing on-the-fly compiling of Sass files as an NGINX module.
-syn keyword ngxDirectiveThirdParty sass_compile
-syn keyword ngxDirectiveThirdParty sass_error_log
-syn keyword ngxDirectiveThirdParty sass_include_path
-syn keyword ngxDirectiveThirdParty sass_indent
-syn keyword ngxDirectiveThirdParty sass_is_indented_syntax
-syn keyword ngxDirectiveThirdParty sass_linefeed
-syn keyword ngxDirectiveThirdParty sass_precision
-syn keyword ngxDirectiveThirdParty sass_output_style
-syn keyword ngxDirectiveThirdParty sass_source_comments
-syn keyword ngxDirectiveThirdParty sass_source_map_embed
+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_precision
+syn keyword ngxDirectiveThirdParty contained sass_output_style
+syn keyword ngxDirectiveThirdParty contained sass_source_comments
+syn keyword ngxDirectiveThirdParty contained sass_source_map_embed
" Secure Download Module <https://www.nginx.com/resources/wiki/modules/secure_download/>
" Enables you to create links which are only valid until a certain datetime is reached
-syn keyword ngxDirectiveThirdParty secure_download
-syn keyword ngxDirectiveThirdParty secure_download_secret
-syn keyword ngxDirectiveThirdParty secure_download_path_mode
+syn keyword ngxDirectiveThirdParty contained secure_download
+syn keyword ngxDirectiveThirdParty contained secure_download_secret
+syn keyword ngxDirectiveThirdParty contained secure_download_path_mode
" Selective Cache Purge Module <https://github.com/wandenberg/nginx-selective-cache-purge-module>
" A module to purge cache by GLOB patterns. The supported patterns are the same as supported by Redis.
-syn keyword ngxDirectiveThirdParty selective_cache_purge_redis_unix_socket
-syn keyword ngxDirectiveThirdParty selective_cache_purge_redis_host
-syn keyword ngxDirectiveThirdParty selective_cache_purge_redis_port
-syn keyword ngxDirectiveThirdParty selective_cache_purge_redis_database
-syn keyword ngxDirectiveThirdParty selective_cache_purge_query
+syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_unix_socket
+syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_host
+syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_port
+syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_database
+syn keyword ngxDirectiveThirdParty contained selective_cache_purge_query
" Set cconv Module <https://github.com/liseen/set-cconv-nginx-module>
" Cconv rewrite set commands
-syn keyword ngxDirectiveThirdParty set_cconv_to_simp
-syn keyword ngxDirectiveThirdParty set_cconv_to_trad
-syn keyword ngxDirectiveThirdParty set_pinyin_to_normal
+syn keyword ngxDirectiveThirdParty contained set_cconv_to_simp
+syn keyword ngxDirectiveThirdParty contained set_cconv_to_trad
+syn keyword ngxDirectiveThirdParty contained set_pinyin_to_normal
" Set Hash Module <https://github.com/simpl/ngx_http_set_hash>
" Nginx module that allows the setting of variables to the value of a variety of hashes
-syn keyword ngxDirectiveThirdParty set_md5
-syn keyword ngxDirectiveThirdParty set_md5_upper
-syn keyword ngxDirectiveThirdParty set_murmur2
-syn keyword ngxDirectiveThirdParty set_murmur2_upper
-syn keyword ngxDirectiveThirdParty set_sha1
-syn keyword ngxDirectiveThirdParty set_sha1_upper
+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
" Set Lang Module <https://github.com/simpl/ngx_http_set_lang>
" Provides a variety of ways for setting a variable denoting the langauge that content should be returned in.
-syn keyword ngxDirectiveThirdParty set_lang
-syn keyword ngxDirectiveThirdParty set_lang_method
-syn keyword ngxDirectiveThirdParty lang_cookie
-syn keyword ngxDirectiveThirdParty lang_get_var
-syn keyword ngxDirectiveThirdParty lang_list
-syn keyword ngxDirectiveThirdParty lang_post_var
-syn keyword ngxDirectiveThirdParty lang_host
-syn keyword ngxDirectiveThirdParty lang_referer
+syn keyword ngxDirectiveThirdParty contained set_lang
+syn keyword ngxDirectiveThirdParty contained set_lang_method
+syn keyword ngxDirectiveThirdParty contained lang_cookie
+syn keyword ngxDirectiveThirdParty contained lang_get_var
+syn keyword ngxDirectiveThirdParty contained lang_list
+syn keyword ngxDirectiveThirdParty contained lang_post_var
+syn keyword ngxDirectiveThirdParty contained lang_host
+syn keyword ngxDirectiveThirdParty contained lang_referer
" Set Misc Module <https://github.com/openresty/set-misc-nginx-module>
" Various set_xxx directives added to nginx's rewrite module
-syn keyword ngxDirectiveThirdParty set_if_empty
-syn keyword ngxDirectiveThirdParty set_quote_sql_str
-syn keyword ngxDirectiveThirdParty set_quote_pgsql_str
-syn keyword ngxDirectiveThirdParty set_quote_json_str
-syn keyword ngxDirectiveThirdParty set_unescape_uri
-syn keyword ngxDirectiveThirdParty set_escape_uri
-syn keyword ngxDirectiveThirdParty set_hashed_upstream
-syn keyword ngxDirectiveThirdParty set_encode_base32
-syn keyword ngxDirectiveThirdParty set_base32_padding
-syn keyword ngxDirectiveThirdParty set_misc_base32_padding
-syn keyword ngxDirectiveThirdParty set_base32_alphabet
-syn keyword ngxDirectiveThirdParty set_decode_base32
-syn keyword ngxDirectiveThirdParty set_encode_base64
-syn keyword ngxDirectiveThirdParty set_decode_base64
-syn keyword ngxDirectiveThirdParty set_encode_hex
-syn keyword ngxDirectiveThirdParty set_decode_hex
-syn keyword ngxDirectiveThirdParty set_sha1
-syn keyword ngxDirectiveThirdParty set_md5
-syn keyword ngxDirectiveThirdParty set_hmac_sha1
-syn keyword ngxDirectiveThirdParty set_random
-syn keyword ngxDirectiveThirdParty set_secure_random_alphanum
-syn keyword ngxDirectiveThirdParty set_secure_random_lcalpha
-syn keyword ngxDirectiveThirdParty set_rotate
-syn keyword ngxDirectiveThirdParty set_local_today
-syn keyword ngxDirectiveThirdParty set_formatted_gmt_time
-syn keyword ngxDirectiveThirdParty set_formatted_local_time
+syn keyword ngxDirectiveThirdParty contained set_if_empty
+syn keyword ngxDirectiveThirdParty contained set_quote_sql_str
+syn keyword ngxDirectiveThirdParty contained set_quote_pgsql_str
+syn keyword ngxDirectiveThirdParty contained set_quote_json_str
+syn keyword ngxDirectiveThirdParty contained set_unescape_uri
+syn keyword ngxDirectiveThirdParty contained set_escape_uri
+syn keyword ngxDirectiveThirdParty contained set_hashed_upstream
+syn keyword ngxDirectiveThirdParty contained set_encode_base32
+syn keyword ngxDirectiveThirdParty contained set_base32_padding
+syn keyword ngxDirectiveThirdParty contained set_misc_base32_padding
+syn keyword ngxDirectiveThirdParty contained set_base32_alphabet
+syn keyword ngxDirectiveThirdParty contained set_decode_base32
+syn keyword ngxDirectiveThirdParty contained set_encode_base64
+syn keyword ngxDirectiveThirdParty contained set_decode_base64
+syn keyword ngxDirectiveThirdParty contained set_encode_hex
+syn keyword ngxDirectiveThirdParty contained set_decode_hex
+syn keyword ngxDirectiveThirdParty contained set_sha1
+syn keyword ngxDirectiveThirdParty contained set_md5
+syn keyword ngxDirectiveThirdParty contained set_hmac_sha1
+syn keyword ngxDirectiveThirdParty contained set_random
+syn keyword ngxDirectiveThirdParty contained set_secure_random_alphanum
+syn keyword ngxDirectiveThirdParty contained set_secure_random_lcalpha
+syn keyword ngxDirectiveThirdParty contained set_rotate
+syn keyword ngxDirectiveThirdParty contained set_local_today
+syn keyword ngxDirectiveThirdParty contained set_formatted_gmt_time
+syn keyword ngxDirectiveThirdParty contained set_formatted_local_time
" SFlow Module <https://github.com/sflow/nginx-sflow-module>
" A binary, random-sampling nginx module designed for: lightweight, centralized, continuous, real-time monitoring of very large and very busy web farms.
-syn keyword ngxDirectiveThirdParty sflow
+syn keyword ngxDirectiveThirdParty contained sflow
" Shibboleth Module <https://github.com/nginx-shib/nginx-http-shibboleth>
" Shibboleth auth request module for nginx
-syn keyword ngxDirectiveThirdParty shib_request
-syn keyword ngxDirectiveThirdParty shib_request_set
-syn keyword ngxDirectiveThirdParty shib_request_use_headers
+syn keyword ngxDirectiveThirdParty contained shib_request
+syn keyword ngxDirectiveThirdParty contained shib_request_set
+syn keyword ngxDirectiveThirdParty contained shib_request_use_headers
" Slice Module <https://github.com/alibaba/nginx-http-slice>
" Nginx module for serving a file in slices (reverse byte-range)
-" syn keyword ngxDirectiveThirdParty slice
-syn keyword ngxDirectiveThirdParty slice_arg_begin
-syn keyword ngxDirectiveThirdParty slice_arg_end
-syn keyword ngxDirectiveThirdParty slice_header
-syn keyword ngxDirectiveThirdParty slice_footer
-syn keyword ngxDirectiveThirdParty slice_header_first
-syn keyword ngxDirectiveThirdParty slice_footer_last
+" syn keyword ngxDirectiveThirdParty contained slice
+syn keyword ngxDirectiveThirdParty contained slice_arg_begin
+syn keyword ngxDirectiveThirdParty contained slice_arg_end
+syn keyword ngxDirectiveThirdParty contained slice_header
+syn keyword ngxDirectiveThirdParty contained slice_footer
+syn keyword ngxDirectiveThirdParty contained slice_header_first
+syn keyword ngxDirectiveThirdParty contained slice_footer_last
" SlowFS Cache Module <https://github.com/FRiCKLE/ngx_slowfs_cache/>
" Module adding ability to cache static files.
-syn keyword ngxDirectiveThirdParty slowfs_big_file_size
-syn keyword ngxDirectiveThirdParty slowfs_cache
-syn keyword ngxDirectiveThirdParty slowfs_cache_key
-syn keyword ngxDirectiveThirdParty slowfs_cache_min_uses
-syn keyword ngxDirectiveThirdParty slowfs_cache_path
-syn keyword ngxDirectiveThirdParty slowfs_cache_purge
-syn keyword ngxDirectiveThirdParty slowfs_cache_valid
-syn keyword ngxDirectiveThirdParty slowfs_temp_path
+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
" Small Light Module <https://github.com/cubicdaiya/ngx_small_light>
" Dynamic Image Transformation Module For nginx.
-syn keyword ngxDirectiveThirdParty small_light
-syn keyword ngxDirectiveThirdParty small_light_getparam_mode
-syn keyword ngxDirectiveThirdParty small_light_material_dir
-syn keyword ngxDirectiveThirdParty small_light_pattern_define
-syn keyword ngxDirectiveThirdParty small_light_radius_max
-syn keyword ngxDirectiveThirdParty small_light_sigma_max
-syn keyword ngxDirectiveThirdParty small_light_imlib2_temp_dir
-syn keyword ngxDirectiveThirdParty small_light_buffer
+syn keyword ngxDirectiveThirdParty contained small_light
+syn keyword ngxDirectiveThirdParty contained small_light_getparam_mode
+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
+syn keyword ngxDirectiveThirdParty contained small_light_imlib2_temp_dir
+syn keyword ngxDirectiveThirdParty contained small_light_buffer
" Sorted Querystring Filter Module <https://github.com/wandenberg/nginx-sorted-querystring-module>
" Nginx module to expose querystring parameters sorted in a variable to be used on cache_key as example
-syn keyword ngxDirectiveThirdParty sorted_querystring_filter_parameter
+syn keyword ngxDirectiveThirdParty contained sorted_querystring_filter_parameter
" Sphinx2 Module <https://github.com/reeteshranjan/sphinx2-nginx-module>
" Nginx upstream module for Sphinx 2.x
-syn keyword ngxDirectiveThirdParty sphinx2_pass
-syn keyword ngxDirectiveThirdParty sphinx2_bind
-syn keyword ngxDirectiveThirdParty sphinx2_connect_timeout
-syn keyword ngxDirectiveThirdParty sphinx2_send_timeout
-syn keyword ngxDirectiveThirdParty sphinx2_buffer_size
-syn keyword ngxDirectiveThirdParty sphinx2_read_timeout
-syn keyword ngxDirectiveThirdParty sphinx2_next_upstream
+syn keyword ngxDirectiveThirdParty contained sphinx2_pass
+syn keyword ngxDirectiveThirdParty contained sphinx2_bind
+syn keyword ngxDirectiveThirdParty contained sphinx2_connect_timeout
+syn keyword ngxDirectiveThirdParty contained sphinx2_send_timeout
+syn keyword ngxDirectiveThirdParty contained sphinx2_buffer_size
+syn keyword ngxDirectiveThirdParty contained sphinx2_read_timeout
+syn keyword ngxDirectiveThirdParty contained sphinx2_next_upstream
" HTTP SPNEGO auth Module <https://github.com/stnoonan/spnego-http-auth-nginx-module>
" This module implements adds SPNEGO support to nginx(http://nginx.org). It currently supports only Kerberos authentication via GSSAPI
-syn keyword ngxDirectiveThirdParty auth_gss
-syn keyword ngxDirectiveThirdParty auth_gss_keytab
-syn keyword ngxDirectiveThirdParty auth_gss_realm
-syn keyword ngxDirectiveThirdParty auth_gss_service_name
-syn keyword ngxDirectiveThirdParty auth_gss_authorized_principal
-syn keyword ngxDirectiveThirdParty auth_gss_allow_basic_fallback
+syn keyword ngxDirectiveThirdParty contained auth_gss
+syn keyword ngxDirectiveThirdParty contained auth_gss_keytab
+syn keyword ngxDirectiveThirdParty contained auth_gss_realm
+syn keyword ngxDirectiveThirdParty contained auth_gss_service_name
+syn keyword ngxDirectiveThirdParty contained auth_gss_authorized_principal
+syn keyword ngxDirectiveThirdParty contained auth_gss_allow_basic_fallback
" SR Cache Module <https://github.com/openresty/srcache-nginx-module>
" Transparent subrequest-based caching layout for arbitrary nginx locations
-syn keyword ngxDirectiveThirdParty srcache_fetch
-syn keyword ngxDirectiveThirdParty srcache_fetch_skip
-syn keyword ngxDirectiveThirdParty srcache_store
-syn keyword ngxDirectiveThirdParty srcache_store_max_size
-syn keyword ngxDirectiveThirdParty srcache_store_skip
-syn keyword ngxDirectiveThirdParty srcache_store_statuses
-syn keyword ngxDirectiveThirdParty srcache_store_ranges
-syn keyword ngxDirectiveThirdParty srcache_header_buffer_size
-syn keyword ngxDirectiveThirdParty srcache_store_hide_header
-syn keyword ngxDirectiveThirdParty srcache_store_pass_header
-syn keyword ngxDirectiveThirdParty srcache_methods
-syn keyword ngxDirectiveThirdParty srcache_ignore_content_encoding
-syn keyword ngxDirectiveThirdParty srcache_request_cache_control
-syn keyword ngxDirectiveThirdParty srcache_response_cache_control
-syn keyword ngxDirectiveThirdParty srcache_store_no_store
-syn keyword ngxDirectiveThirdParty srcache_store_no_cache
-syn keyword ngxDirectiveThirdParty srcache_store_private
-syn keyword ngxDirectiveThirdParty srcache_default_expire
-syn keyword ngxDirectiveThirdParty srcache_max_expire
+syn keyword ngxDirectiveThirdParty contained srcache_fetch
+syn keyword ngxDirectiveThirdParty contained srcache_fetch_skip
+syn keyword ngxDirectiveThirdParty contained srcache_store
+syn keyword ngxDirectiveThirdParty contained srcache_store_max_size
+syn keyword ngxDirectiveThirdParty contained srcache_store_skip
+syn keyword ngxDirectiveThirdParty contained srcache_store_statuses
+syn keyword ngxDirectiveThirdParty contained srcache_store_ranges
+syn keyword ngxDirectiveThirdParty contained srcache_header_buffer_size
+syn keyword ngxDirectiveThirdParty contained srcache_store_hide_header
+syn keyword ngxDirectiveThirdParty contained srcache_store_pass_header
+syn keyword ngxDirectiveThirdParty contained srcache_methods
+syn keyword ngxDirectiveThirdParty contained srcache_ignore_content_encoding
+syn keyword ngxDirectiveThirdParty contained srcache_request_cache_control
+syn keyword ngxDirectiveThirdParty contained srcache_response_cache_control
+syn keyword ngxDirectiveThirdParty contained srcache_store_no_store
+syn keyword ngxDirectiveThirdParty contained srcache_store_no_cache
+syn keyword ngxDirectiveThirdParty contained srcache_store_private
+syn keyword ngxDirectiveThirdParty contained srcache_default_expire
+syn keyword ngxDirectiveThirdParty contained srcache_max_expire
" SSSD Info Module <https://github.com/veruu/ngx_sssd_info>
" Retrives additional attributes from SSSD for current authentizated user
-syn keyword ngxDirectiveThirdParty sssd_info
-syn keyword ngxDirectiveThirdParty sssd_info_output_to
-syn keyword ngxDirectiveThirdParty sssd_info_groups
-syn keyword ngxDirectiveThirdParty sssd_info_group
-syn keyword ngxDirectiveThirdParty sssd_info_group_separator
-syn keyword ngxDirectiveThirdParty sssd_info_attributes
-syn keyword ngxDirectiveThirdParty sssd_info_attribute
-syn keyword ngxDirectiveThirdParty sssd_info_attribute_separator
+syn keyword ngxDirectiveThirdParty contained sssd_info
+syn keyword ngxDirectiveThirdParty contained sssd_info_output_to
+syn keyword ngxDirectiveThirdParty contained sssd_info_groups
+syn keyword ngxDirectiveThirdParty contained sssd_info_group
+syn keyword ngxDirectiveThirdParty contained sssd_info_group_separator
+syn keyword ngxDirectiveThirdParty contained sssd_info_attributes
+syn keyword ngxDirectiveThirdParty contained sssd_info_attribute
+syn keyword ngxDirectiveThirdParty contained sssd_info_attribute_separator
" Static Etags Module <https://github.com/mikewest/nginx-static-etags>
" Generate etags for static content
-syn keyword ngxDirectiveThirdParty FileETag
+syn keyword ngxDirectiveThirdParty contained FileETag
" Statsd Module <https://github.com/zebrafishlabs/nginx-statsd>
" An nginx module for sending statistics to statsd
-syn keyword ngxDirectiveThirdParty statsd_server
-syn keyword ngxDirectiveThirdParty statsd_sample_rate
-syn keyword ngxDirectiveThirdParty statsd_count
-syn keyword ngxDirectiveThirdParty statsd_timing
+syn keyword ngxDirectiveThirdParty contained statsd_server
+syn keyword ngxDirectiveThirdParty contained statsd_sample_rate
+syn keyword ngxDirectiveThirdParty contained statsd_count
+syn keyword ngxDirectiveThirdParty contained statsd_timing
" Sticky Module <https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng>
" Add a sticky cookie to be always forwarded to the same upstream server
-" syn keyword ngxDirectiveThirdParty sticky
+" syn keyword ngxDirectiveThirdParty contained sticky
" Stream Echo Module <https://github.com/openresty/stream-echo-nginx-module>
" TCP/stream echo module for NGINX (a port of ngx_http_echo_module)
-syn keyword ngxDirectiveThirdParty echo
-syn keyword ngxDirectiveThirdParty echo_duplicate
-syn keyword ngxDirectiveThirdParty echo_flush_wait
-syn keyword ngxDirectiveThirdParty echo_sleep
-syn keyword ngxDirectiveThirdParty echo_send_timeout
-syn keyword ngxDirectiveThirdParty echo_read_bytes
-syn keyword ngxDirectiveThirdParty echo_read_line
-syn keyword ngxDirectiveThirdParty echo_request_data
-syn keyword ngxDirectiveThirdParty echo_discard_request
-syn keyword ngxDirectiveThirdParty echo_read_buffer_size
-syn keyword ngxDirectiveThirdParty echo_read_timeout
-syn keyword ngxDirectiveThirdParty echo_client_error_log_level
-syn keyword ngxDirectiveThirdParty echo_lingering_close
-syn keyword ngxDirectiveThirdParty echo_lingering_time
-syn keyword ngxDirectiveThirdParty echo_lingering_timeout
+syn keyword ngxDirectiveThirdParty contained echo
+syn keyword ngxDirectiveThirdParty contained echo_duplicate
+syn keyword ngxDirectiveThirdParty contained echo_flush_wait
+syn keyword ngxDirectiveThirdParty contained echo_sleep
+syn keyword ngxDirectiveThirdParty contained echo_send_timeout
+syn keyword ngxDirectiveThirdParty contained echo_read_bytes
+syn keyword ngxDirectiveThirdParty contained echo_read_line
+syn keyword ngxDirectiveThirdParty contained echo_request_data
+syn keyword ngxDirectiveThirdParty contained echo_discard_request
+syn keyword ngxDirectiveThirdParty contained echo_read_buffer_size
+syn keyword ngxDirectiveThirdParty contained echo_read_timeout
+syn keyword ngxDirectiveThirdParty contained echo_client_error_log_level
+syn keyword ngxDirectiveThirdParty contained echo_lingering_close
+syn keyword ngxDirectiveThirdParty contained echo_lingering_time
+syn keyword ngxDirectiveThirdParty contained echo_lingering_timeout
" Stream Lua Module <https://github.com/openresty/stream-lua-nginx-module>
" Embed the power of Lua into Nginx stream/TCP Servers.
-syn keyword ngxDirectiveThirdParty lua_resolver
-syn keyword ngxDirectiveThirdParty lua_resolver_timeout
-syn keyword ngxDirectiveThirdParty lua_lingering_close
-syn keyword ngxDirectiveThirdParty lua_lingering_time
-syn keyword ngxDirectiveThirdParty lua_lingering_timeout
+syn keyword ngxDirectiveThirdParty contained lua_resolver
+syn keyword ngxDirectiveThirdParty contained lua_resolver_timeout
+syn keyword ngxDirectiveThirdParty contained lua_lingering_close
+syn keyword ngxDirectiveThirdParty contained lua_lingering_time
+syn keyword ngxDirectiveThirdParty contained lua_lingering_timeout
" Stream Upsync Module <https://github.com/xiaokai-wang/nginx-stream-upsync-module>
" Sync upstreams from consul or others, dynamiclly modify backend-servers attribute(weight, max_fails,...), needn't reload nginx.
-syn keyword ngxDirectiveThirdParty upsync
-syn keyword ngxDirectiveThirdParty upsync_dump_path
-syn keyword ngxDirectiveThirdParty upsync_lb
-syn keyword ngxDirectiveThirdParty upsync_show
+syn keyword ngxDirectiveThirdParty contained upsync
+syn keyword ngxDirectiveThirdParty contained upsync_dump_path
+syn keyword ngxDirectiveThirdParty contained upsync_lb
+syn keyword ngxDirectiveThirdParty contained upsync_show
" Strip Module <https://github.com/evanmiller/mod_strip>
" Whitespace remover.
-syn keyword ngxDirectiveThirdParty strip
+syn keyword ngxDirectiveThirdParty contained strip
" Subrange Module <https://github.com/Qihoo360/ngx_http_subrange_module>
" Split one big HTTP/Range request to multiple subrange requesets
-syn keyword ngxDirectiveThirdParty subrange
+syn keyword ngxDirectiveThirdParty contained subrange
" Substitutions Module <https://www.nginx.com/resources/wiki/modules/substitutions/>
" A filter module which can do both regular expression and fixed string substitutions on response bodies.
-syn keyword ngxDirectiveThirdParty subs_filter
-syn keyword ngxDirectiveThirdParty subs_filter_types
+syn keyword ngxDirectiveThirdParty contained subs_filter
+syn keyword ngxDirectiveThirdParty contained subs_filter_types
" Summarizer Module <https://github.com/reeteshranjan/summarizer-nginx-module>
" Upstream nginx module to get summaries of documents using the summarizer daemon service
-syn keyword ngxDirectiveThirdParty smrzr_filename
-syn keyword ngxDirectiveThirdParty smrzr_ratio
+syn keyword ngxDirectiveThirdParty contained smrzr_filename
+syn keyword ngxDirectiveThirdParty contained smrzr_ratio
" Supervisord Module <https://github.com/FRiCKLE/ngx_supervisord/>
" Module providing nginx with API to communicate with supervisord and manage (start/stop) backends on-demand.
-syn keyword ngxDirectiveThirdParty supervisord
-syn keyword ngxDirectiveThirdParty supervisord_inherit_backend_status
-syn keyword ngxDirectiveThirdParty supervisord_name
-syn keyword ngxDirectiveThirdParty supervisord_start
-syn keyword ngxDirectiveThirdParty supervisord_stop
+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
" Tarantool Upstream Module <https://github.com/tarantool/nginx_upstream_module>
" Tarantool NginX upstream module (REST, JSON API, websockets, load balancing)
-syn keyword ngxDirectiveThirdParty tnt_pass
-syn keyword ngxDirectiveThirdParty tnt_http_methods
-syn keyword ngxDirectiveThirdParty tnt_http_rest_methods
-syn keyword ngxDirectiveThirdParty tnt_pass_http_request
-syn keyword ngxDirectiveThirdParty tnt_pass_http_request_buffer_size
-syn keyword ngxDirectiveThirdParty tnt_method
-syn keyword ngxDirectiveThirdParty tnt_http_allowed_methods - experemental
-syn keyword ngxDirectiveThirdParty tnt_send_timeout
-syn keyword ngxDirectiveThirdParty tnt_read_timeout
-syn keyword ngxDirectiveThirdParty tnt_buffer_size
-syn keyword ngxDirectiveThirdParty tnt_next_upstream
-syn keyword ngxDirectiveThirdParty tnt_connect_timeout
-syn keyword ngxDirectiveThirdParty tnt_next_upstream
-syn keyword ngxDirectiveThirdParty tnt_next_upstream_tries
-syn keyword ngxDirectiveThirdParty tnt_next_upstream_timeout
+syn keyword ngxDirectiveThirdParty contained tnt_pass
+syn keyword ngxDirectiveThirdParty contained tnt_http_methods
+syn keyword ngxDirectiveThirdParty contained tnt_http_rest_methods
+syn keyword ngxDirectiveThirdParty contained tnt_pass_http_request
+syn keyword ngxDirectiveThirdParty contained tnt_pass_http_request_buffer_size
+syn keyword ngxDirectiveThirdParty contained tnt_method
+syn keyword ngxDirectiveThirdParty contained tnt_http_allowed_methods - experemental
+syn keyword ngxDirectiveThirdParty contained tnt_send_timeout
+syn keyword ngxDirectiveThirdParty contained tnt_read_timeout
+syn keyword ngxDirectiveThirdParty contained tnt_buffer_size
+syn keyword ngxDirectiveThirdParty contained tnt_next_upstream
+syn keyword ngxDirectiveThirdParty contained tnt_connect_timeout
+syn keyword ngxDirectiveThirdParty contained tnt_next_upstream
+syn keyword ngxDirectiveThirdParty contained tnt_next_upstream_tries
+syn keyword ngxDirectiveThirdParty contained tnt_next_upstream_timeout
" TCP Proxy Module <http://yaoweibin.github.io/nginx_tcp_proxy_module/>
" Add the feature of tcp proxy with nginx, with health check and status monitor
-syn keyword ngxDirectiveBlock tcp
-" syn keyword ngxDirectiveThirdParty server
-" syn keyword ngxDirectiveThirdParty listen
-" syn keyword ngxDirectiveThirdParty allow
-" syn keyword ngxDirectiveThirdParty deny
-" syn keyword ngxDirectiveThirdParty so_keepalive
-" syn keyword ngxDirectiveThirdParty tcp_nodelay
-" syn keyword ngxDirectiveThirdParty timeout
-" syn keyword ngxDirectiveThirdParty server_name
-" syn keyword ngxDirectiveThirdParty resolver
-" syn keyword ngxDirectiveThirdParty resolver_timeout
-" syn keyword ngxDirectiveThirdParty upstream
-syn keyword ngxDirectiveThirdParty check
-syn keyword ngxDirectiveThirdParty check_http_send
-syn keyword ngxDirectiveThirdParty check_http_expect_alive
-syn keyword ngxDirectiveThirdParty check_smtp_send
-syn keyword ngxDirectiveThirdParty check_smtp_expect_alive
-syn keyword ngxDirectiveThirdParty check_shm_size
-syn keyword ngxDirectiveThirdParty check_status
-" syn keyword ngxDirectiveThirdParty ip_hash
-" syn keyword ngxDirectiveThirdParty proxy_pass
-" syn keyword ngxDirectiveThirdParty proxy_buffer
-" syn keyword ngxDirectiveThirdParty proxy_connect_timeout
-" syn keyword ngxDirectiveThirdParty proxy_read_timeout
-syn keyword ngxDirectiveThirdParty proxy_write_timeout
+syn keyword ngxDirectiveBlock contained tcp
+" syn keyword ngxDirectiveThirdParty contained server
+" syn keyword ngxDirectiveThirdParty contained listen
+" syn keyword ngxDirectiveThirdParty contained allow
+" syn keyword ngxDirectiveThirdParty contained deny
+" syn keyword ngxDirectiveThirdParty contained so_keepalive
+" syn keyword ngxDirectiveThirdParty contained tcp_nodelay
+" syn keyword ngxDirectiveThirdParty contained timeout
+" syn keyword ngxDirectiveThirdParty contained server_name
+" syn keyword ngxDirectiveThirdParty contained resolver
+" syn keyword ngxDirectiveThirdParty contained resolver_timeout
+" syn keyword ngxDirectiveThirdParty contained upstream
+syn keyword ngxDirectiveThirdParty contained check
+syn keyword ngxDirectiveThirdParty contained check_http_send
+syn keyword ngxDirectiveThirdParty contained check_http_expect_alive
+syn keyword ngxDirectiveThirdParty contained check_smtp_send
+syn keyword ngxDirectiveThirdParty contained check_smtp_expect_alive
+syn keyword ngxDirectiveThirdParty contained check_shm_size
+syn keyword ngxDirectiveThirdParty contained check_status
+" syn keyword ngxDirectiveThirdParty contained ip_hash
+" syn keyword ngxDirectiveThirdParty contained proxy_pass
+" syn keyword ngxDirectiveThirdParty contained proxy_buffer
+" syn keyword ngxDirectiveThirdParty contained proxy_connect_timeout
+" syn keyword ngxDirectiveThirdParty contained proxy_read_timeout
+syn keyword ngxDirectiveThirdParty contained proxy_write_timeout
" Testcookie Module <https://github.com/kyprizel/testcookie-nginx-module>
" NGINX module for L7 DDoS attack mitigation
-syn keyword ngxDirectiveThirdParty testcookie
-syn keyword ngxDirectiveThirdParty testcookie_name
-syn keyword ngxDirectiveThirdParty testcookie_domain
-syn keyword ngxDirectiveThirdParty testcookie_expires
-syn keyword ngxDirectiveThirdParty testcookie_path
-syn keyword ngxDirectiveThirdParty testcookie_secret
-syn keyword ngxDirectiveThirdParty testcookie_session
-syn keyword ngxDirectiveThirdParty testcookie_arg
-syn keyword ngxDirectiveThirdParty testcookie_max_attempts
-syn keyword ngxDirectiveThirdParty testcookie_p3p
-syn keyword ngxDirectiveThirdParty testcookie_fallback
-syn keyword ngxDirectiveThirdParty testcookie_whitelist
-syn keyword ngxDirectiveThirdParty testcookie_pass
-syn keyword ngxDirectiveThirdParty testcookie_redirect_via_refresh
-syn keyword ngxDirectiveThirdParty testcookie_refresh_template
-syn keyword ngxDirectiveThirdParty testcookie_refresh_status
-syn keyword ngxDirectiveThirdParty testcookie_deny_keepalive
-syn keyword ngxDirectiveThirdParty testcookie_get_only
-syn keyword ngxDirectiveThirdParty testcookie_https_location
-syn keyword ngxDirectiveThirdParty testcookie_refresh_encrypt_cookie
-syn keyword ngxDirectiveThirdParty testcookie_refresh_encrypt_cookie_key
-syn keyword ngxDirectiveThirdParty testcookie_refresh_encrypt_iv
-syn keyword ngxDirectiveThirdParty testcookie_internal
-syn keyword ngxDirectiveThirdParty testcookie_httponly_flag
-syn keyword ngxDirectiveThirdParty testcookie_secure_flag
+syn keyword ngxDirectiveThirdParty contained testcookie
+syn keyword ngxDirectiveThirdParty contained testcookie_name
+syn keyword ngxDirectiveThirdParty contained testcookie_domain
+syn keyword ngxDirectiveThirdParty contained testcookie_expires
+syn keyword ngxDirectiveThirdParty contained testcookie_path
+syn keyword ngxDirectiveThirdParty contained testcookie_secret
+syn keyword ngxDirectiveThirdParty contained testcookie_session
+syn keyword ngxDirectiveThirdParty contained testcookie_arg
+syn keyword ngxDirectiveThirdParty contained testcookie_max_attempts
+syn keyword ngxDirectiveThirdParty contained testcookie_p3p
+syn keyword ngxDirectiveThirdParty contained testcookie_fallback
+syn keyword ngxDirectiveThirdParty contained testcookie_whitelist
+syn keyword ngxDirectiveThirdParty contained testcookie_pass
+syn keyword ngxDirectiveThirdParty contained testcookie_redirect_via_refresh
+syn keyword ngxDirectiveThirdParty contained testcookie_refresh_template
+syn keyword ngxDirectiveThirdParty contained testcookie_refresh_status
+syn keyword ngxDirectiveThirdParty contained testcookie_deny_keepalive
+syn keyword ngxDirectiveThirdParty contained testcookie_get_only
+syn keyword ngxDirectiveThirdParty contained testcookie_https_location
+syn keyword ngxDirectiveThirdParty contained testcookie_refresh_encrypt_cookie
+syn keyword ngxDirectiveThirdParty contained testcookie_refresh_encrypt_cookie_key
+syn keyword ngxDirectiveThirdParty contained testcookie_refresh_encrypt_iv
+syn keyword ngxDirectiveThirdParty contained testcookie_internal
+syn keyword ngxDirectiveThirdParty contained testcookie_httponly_flag
+syn keyword ngxDirectiveThirdParty contained testcookie_secure_flag
" Types Filter Module <https://github.com/flygoast/ngx_http_types_filter>
" Change the `Content-Type` output header depending on an extension variable according to a condition specified in the 'if' clause.
-syn keyword ngxDirectiveThirdParty types_filter
-syn keyword ngxDirectiveThirdParty types_filter_use_default
+syn keyword ngxDirectiveThirdParty contained types_filter
+syn keyword ngxDirectiveThirdParty contained types_filter_use_default
" Unzip Module <https://github.com/youzee/nginx-unzip-module>
" Enabling fetching of files that are stored in zipped archives.
-syn keyword ngxDirectiveThirdParty file_in_unzip_archivefile
-syn keyword ngxDirectiveThirdParty file_in_unzip_extract
-syn keyword ngxDirectiveThirdParty file_in_unzip
+syn keyword ngxDirectiveThirdParty contained file_in_unzip_archivefile
+syn keyword ngxDirectiveThirdParty contained file_in_unzip_extract
+syn keyword ngxDirectiveThirdParty contained file_in_unzip
" Upload Progress Module <https://www.nginx.com/resources/wiki/modules/upload_progress/>
" An upload progress system, that monitors RFC1867 POST upload as they are transmitted to upstream servers
-syn keyword ngxDirectiveThirdParty upload_progress
-syn keyword ngxDirectiveThirdParty track_uploads
-syn keyword ngxDirectiveThirdParty report_uploads
-syn keyword ngxDirectiveThirdParty upload_progress_content_type
-syn keyword ngxDirectiveThirdParty upload_progress_header
-syn keyword ngxDirectiveThirdParty upload_progress_jsonp_parameter
-syn keyword ngxDirectiveThirdParty upload_progress_json_output
-syn keyword ngxDirectiveThirdParty upload_progress_jsonp_output
-syn keyword ngxDirectiveThirdParty upload_progress_template
+syn keyword ngxDirectiveThirdParty contained upload_progress
+syn keyword ngxDirectiveThirdParty contained track_uploads
+syn keyword ngxDirectiveThirdParty contained report_uploads
+syn keyword ngxDirectiveThirdParty contained upload_progress_content_type
+syn keyword ngxDirectiveThirdParty contained upload_progress_header
+syn keyword ngxDirectiveThirdParty contained upload_progress_jsonp_parameter
+syn keyword ngxDirectiveThirdParty contained upload_progress_json_output
+syn keyword ngxDirectiveThirdParty contained upload_progress_jsonp_output
+syn keyword ngxDirectiveThirdParty contained upload_progress_template
" Upload Module <https://www.nginx.com/resources/wiki/modules/upload/>
" Parses request body storing all files being uploaded to a directory specified by upload_store directive
-syn keyword ngxDirectiveThirdParty upload_pass
-syn keyword ngxDirectiveThirdParty upload_resumable
-syn keyword ngxDirectiveThirdParty upload_store
-syn keyword ngxDirectiveThirdParty upload_state_store
-syn keyword ngxDirectiveThirdParty upload_store_access
-syn keyword ngxDirectiveThirdParty upload_set_form_field
-syn keyword ngxDirectiveThirdParty upload_aggregate_form_field
-syn keyword ngxDirectiveThirdParty upload_pass_form_field
-syn keyword ngxDirectiveThirdParty upload_cleanup
-syn keyword ngxDirectiveThirdParty upload_buffer_size
-syn keyword ngxDirectiveThirdParty upload_max_part_header_len
-syn keyword ngxDirectiveThirdParty upload_max_file_size
-syn keyword ngxDirectiveThirdParty upload_limit_rate
-syn keyword ngxDirectiveThirdParty upload_max_output_body_len
-syn keyword ngxDirectiveThirdParty upload_tame_arrays
-syn keyword ngxDirectiveThirdParty upload_pass_args
+syn keyword ngxDirectiveThirdParty contained upload_pass
+syn keyword ngxDirectiveThirdParty contained upload_resumable
+syn keyword ngxDirectiveThirdParty contained upload_store
+syn keyword ngxDirectiveThirdParty contained upload_state_store
+syn keyword ngxDirectiveThirdParty contained upload_store_access
+syn keyword ngxDirectiveThirdParty contained upload_set_form_field
+syn keyword ngxDirectiveThirdParty contained upload_aggregate_form_field
+syn keyword ngxDirectiveThirdParty contained upload_pass_form_field
+syn keyword ngxDirectiveThirdParty contained upload_cleanup
+syn keyword ngxDirectiveThirdParty contained upload_buffer_size
+syn keyword ngxDirectiveThirdParty contained upload_max_part_header_len
+syn keyword ngxDirectiveThirdParty contained upload_max_file_size
+syn keyword ngxDirectiveThirdParty contained upload_limit_rate
+syn keyword ngxDirectiveThirdParty contained upload_max_output_body_len
+syn keyword ngxDirectiveThirdParty contained upload_tame_arrays
+syn keyword ngxDirectiveThirdParty contained upload_pass_args
" Upstream Fair Module <https://github.com/gnosek/nginx-upstream-fair>
" The fair load balancer module for nginx http://nginx.localdomain.pl
-syn keyword ngxDirectiveThirdParty fair
-syn keyword ngxDirectiveThirdParty upstream_fair_shm_size
+syn keyword ngxDirectiveThirdParty contained fair
+syn keyword ngxDirectiveThirdParty contained upstream_fair_shm_size
" Upstream Hash Module (DEPRECATED) <http://wiki.nginx.org/NginxHttpUpstreamRequestHashModule>
" Provides simple upstream load distribution by hashing a configurable variable.
-" syn keyword ngxDirectiveDeprecated hash
-syn keyword ngxDirectiveDeprecated hash_again
+" syn keyword ngxDirectiveDeprecated contained hash
+syn keyword ngxDirectiveDeprecated contained hash_again
" Upstream Domain Resolve Module <https://www.nginx.com/resources/wiki/modules/domain_resolve/>
" A load-balancer that resolves an upstream domain name asynchronously.
-syn keyword ngxDirectiveThirdParty jdomain
+syn keyword ngxDirectiveThirdParty contained jdomain
" Upsync Module <https://github.com/weibocom/nginx-upsync-module>
" Sync upstreams from consul or others, dynamiclly modify backend-servers attribute(weight, max_fails,...), needn't reload nginx
-syn keyword ngxDirectiveThirdParty upsync
-syn keyword ngxDirectiveThirdParty upsync_dump_path
-syn keyword ngxDirectiveThirdParty upsync_lb
-syn keyword ngxDirectiveThirdParty upstream_show
+syn keyword ngxDirectiveThirdParty contained upsync
+syn keyword ngxDirectiveThirdParty contained upsync_dump_path
+syn keyword ngxDirectiveThirdParty contained upsync_lb
+syn keyword ngxDirectiveThirdParty contained upstream_show
" URL Module <https://github.com/vozlt/nginx-module-url>
" Nginx url encoding converting module
-syn keyword ngxDirectiveThirdParty url_encoding_convert
-syn keyword ngxDirectiveThirdParty url_encoding_convert_from
-syn keyword ngxDirectiveThirdParty url_encoding_convert_to
+syn keyword ngxDirectiveThirdParty contained url_encoding_convert
+syn keyword ngxDirectiveThirdParty contained url_encoding_convert_from
+syn keyword ngxDirectiveThirdParty contained url_encoding_convert_to
" User Agent Module <https://github.com/alibaba/nginx-http-user-agent>
" Match browsers and crawlers
-syn keyword ngxDirectiveThirdParty user_agent
+syn keyword ngxDirectiveThirdParty contained user_agent
" Upstrema Ketama Chash Module <https://github.com/flygoast/ngx_http_upstream_ketama_chash>
" Nginx load-balancer module implementing ketama consistent hashing.
-syn keyword ngxDirectiveThirdParty ketama_chash
+syn keyword ngxDirectiveThirdParty contained ketama_chash
" Video Thumbextractor Module <https://github.com/wandenberg/nginx-video-thumbextractor-module>
" Extract thumbs from a video file
-syn keyword ngxDirectiveThirdParty video_thumbextractor
-syn keyword ngxDirectiveThirdParty video_thumbextractor_video_filename
-syn keyword ngxDirectiveThirdParty video_thumbextractor_video_second
-syn keyword ngxDirectiveThirdParty video_thumbextractor_image_width
-syn keyword ngxDirectiveThirdParty video_thumbextractor_image_height
-syn keyword ngxDirectiveThirdParty video_thumbextractor_only_keyframe
-syn keyword ngxDirectiveThirdParty video_thumbextractor_next_time
-syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_rows
-syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_cols
-syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_max_rows
-syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_max_cols
-syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_sample_interval
-syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_color
-syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_margin
-syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_padding
-syn keyword ngxDirectiveThirdParty video_thumbextractor_threads
-syn keyword ngxDirectiveThirdParty video_thumbextractor_processes_per_worker
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_video_filename
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_video_second
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_image_width
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_image_height
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_only_keyframe
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_next_time
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_rows
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_cols
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_max_rows
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_max_cols
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_sample_interval
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_color
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_margin
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_padding
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_threads
+syn keyword ngxDirectiveThirdParty contained video_thumbextractor_processes_per_worker
" Eval Module <http://www.grid.net.ru/nginx/eval.en.html>
" Module for nginx web server evaluates response of proxy or memcached module into variables.
-syn keyword ngxDirectiveThirdParty eval
-syn keyword ngxDirectiveThirdParty eval_escalate
-syn keyword ngxDirectiveThirdParty eval_override_content_type
+syn keyword ngxDirectiveThirdParty contained eval
+syn keyword ngxDirectiveThirdParty contained eval_escalate
+syn keyword ngxDirectiveThirdParty contained eval_override_content_type
" VTS Module <https://github.com/vozlt/nginx-module-vts>
" Nginx virtual host traffic status module
-syn keyword ngxDirectiveThirdParty vhost_traffic_status
-syn keyword ngxDirectiveThirdParty vhost_traffic_status_zone
-syn keyword ngxDirectiveThirdParty vhost_traffic_status_display
-syn keyword ngxDirectiveThirdParty vhost_traffic_status_display_format
-syn keyword ngxDirectiveThirdParty vhost_traffic_status_display_jsonp
-syn keyword ngxDirectiveThirdParty vhost_traffic_status_filter
-syn keyword ngxDirectiveThirdParty vhost_traffic_status_filter_by_host
-syn keyword ngxDirectiveThirdParty vhost_traffic_status_filter_by_set_key
-syn keyword ngxDirectiveThirdParty vhost_traffic_status_filter_check_duplicate
-syn keyword ngxDirectiveThirdParty vhost_traffic_status_limit
-syn keyword ngxDirectiveThirdParty vhost_traffic_status_limit_traffic
-syn keyword ngxDirectiveThirdParty vhost_traffic_status_limit_traffic_by_set_key
-syn keyword ngxDirectiveThirdParty vhost_traffic_status_limit_check_duplicate
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_zone
+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_filter
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter_by_host
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter_by_set_key
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter_check_duplicate
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit_traffic
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit_traffic_by_set_key
+syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit_check_duplicate
" XSS Module <https://github.com/openresty/xss-nginx-module>
" Native support for cross-site scripting (XSS) in an nginx.
-syn keyword ngxDirectiveThirdParty xss_get
-syn keyword ngxDirectiveThirdParty xss_callback_arg
-syn keyword ngxDirectiveThirdParty xss_override_status
-syn keyword ngxDirectiveThirdParty xss_check_status
-syn keyword ngxDirectiveThirdParty xss_input_types
+syn keyword ngxDirectiveThirdParty contained xss_get
+syn keyword ngxDirectiveThirdParty contained xss_callback_arg
+syn keyword ngxDirectiveThirdParty contained xss_override_status
+syn keyword ngxDirectiveThirdParty contained xss_check_status
+syn keyword ngxDirectiveThirdParty contained xss_input_types
" ZIP Module <https://www.nginx.com/resources/wiki/modules/zip/>
" ZIP archiver for nginx
@@ -2122,15 +2152,17 @@
" highlight
hi link ngxComment Comment
+hi link ngxParamComment Comment
+hi link ngxListenComment Comment
hi link ngxVariable Identifier
-hi link ngxVariableBlock Identifier
hi link ngxVariableString PreProc
-hi link ngxBlock Normal
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
@@ -2138,7 +2170,5 @@
hi link ngxDirectiveThirdParty Special
hi link ngxListenOptions Keyword
-hi link ngxMailProtocol Keyword
-hi link ngxSSLProtocol Keyword
let b:current_syntax = "nginx"
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/core/nginx.h
^
|
@@ -9,8 +9,8 @@
#define _NGINX_H_INCLUDED_
-#define nginx_version 1011013
-#define NGINX_VERSION "1.11.13"
+#define nginx_version 1013001
+#define NGINX_VERSION "1.13.1"
#define NGINX_VER "nginx/" NGINX_VERSION
#ifdef NGX_BUILD
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/core/ngx_connection.c
^
|
@@ -1346,6 +1346,49 @@
ngx_int_t
+ngx_tcp_nodelay(ngx_connection_t *c)
+{
+ int tcp_nodelay;
+
+ if (c->tcp_nodelay != NGX_TCP_NODELAY_UNSET) {
+ return NGX_OK;
+ }
+
+ ngx_log_debug0(NGX_LOG_DEBUG_CORE, c->log, 0, "tcp_nodelay");
+
+ tcp_nodelay = 1;
+
+ if (setsockopt(c->fd, IPPROTO_TCP, TCP_NODELAY,
+ (const void *) &tcp_nodelay, sizeof(int))
+ == -1)
+ {
+#if (NGX_SOLARIS)
+ if (c->log_error == NGX_ERROR_INFO) {
+
+ /* Solaris returns EINVAL if a socket has been shut down */
+ c->log_error = NGX_ERROR_IGNORE_EINVAL;
+
+ ngx_connection_error(c, ngx_socket_errno,
+ "setsockopt(TCP_NODELAY) failed");
+
+ c->log_error = NGX_ERROR_INFO;
+
+ return NGX_ERROR;
+ }
+#endif
+
+ ngx_connection_error(c, ngx_socket_errno,
+ "setsockopt(TCP_NODELAY) failed");
+ return NGX_ERROR;
+ }
+
+ c->tcp_nodelay = NGX_TCP_NODELAY_SET;
+
+ return NGX_OK;
+}
+
+
+ngx_int_t
ngx_connection_error(ngx_connection_t *c, ngx_err_t err, char *text)
{
ngx_uint_t level;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/core/ngx_connection.h
^
|
@@ -214,6 +214,7 @@
void ngx_close_idle_connections(ngx_cycle_t *cycle);
ngx_int_t ngx_connection_local_sockaddr(ngx_connection_t *c, ngx_str_t *s,
ngx_uint_t port);
+ngx_int_t ngx_tcp_nodelay(ngx_connection_t *c);
ngx_int_t ngx_connection_error(ngx_connection_t *c, ngx_err_t err, char *text);
ngx_connection_t *ngx_get_connection(ngx_socket_t s, ngx_log_t *log);
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/core/ngx_murmurhash.c
^
|
@@ -35,8 +35,10 @@
switch (len) {
case 3:
h ^= data[2] << 16;
+ /* fall through */
case 2:
h ^= data[1] << 8;
+ /* fall through */
case 1:
h ^= data[0];
h *= 0x5bd1e995;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/core/ngx_palloc.h
^
|
@@ -72,9 +72,6 @@
} ngx_pool_cleanup_file_t;
-void *ngx_alloc(size_t size, ngx_log_t *log);
-void *ngx_calloc(size_t size, ngx_log_t *log);
-
ngx_pool_t *ngx_create_pool(size_t size, ngx_log_t *log);
void ngx_destroy_pool(ngx_pool_t *pool);
void ngx_reset_pool(ngx_pool_t *pool);
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/core/ngx_string.c
^
|
@@ -1808,7 +1808,19 @@
len++;
} else if (ch <= 0x1f) {
- len += sizeof("\\u001F") - 2;
+
+ switch (ch) {
+ case '\n':
+ case '\r':
+ case '\t':
+ case '\b':
+ case '\f':
+ len++;
+ break;
+
+ default:
+ len += sizeof("\\u001F") - 2;
+ }
}
size--;
@@ -1829,12 +1841,37 @@
*dst++ = ch;
} else {
- *dst++ = '\\'; *dst++ = 'u'; *dst++ = '0'; *dst++ = '0';
- *dst++ = '0' + (ch >> 4);
+ *dst++ = '\\';
+
+ switch (ch) {
+ case '\n':
+ *dst++ = 'n';
+ break;
+
+ case '\r':
+ *dst++ = 'r';
+ break;
+
+ case '\t':
+ *dst++ = 't';
+ break;
- ch &= 0xf;
+ case '\b':
+ *dst++ = 'b';
+ break;
- *dst++ = (ch < 10) ? ('0' + ch) : ('A' + ch - 10);
+ case '\f':
+ *dst++ = 'f';
+ break;
+
+ default:
+ *dst++ = 'u'; *dst++ = '0'; *dst++ = '0';
+ *dst++ = '0' + (ch >> 4);
+
+ ch &= 0xf;
+
+ *dst++ = (ch < 10) ? ('0' + ch) : ('A' + ch - 10);
+ }
}
size--;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/event/ngx_event_accept.c
^
|
@@ -238,7 +238,7 @@
if (ev->deferred_accept) {
rev->ready = 1;
-#if (NGX_HAVE_KQUEUE)
+#if (NGX_HAVE_KQUEUE || NGX_HAVE_EPOLLRDHUP)
rev->available = 1;
#endif
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/event/ngx_event_openssl.c
^
|
@@ -323,6 +323,12 @@
SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_TLSv1_2);
}
#endif
+#ifdef SSL_OP_NO_TLSv1_3
+ SSL_CTX_clear_options(ssl->ctx, SSL_OP_NO_TLSv1_3);
+ if (!(protocols & NGX_SSL_TLSv1_3)) {
+ SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_TLSv1_3);
+ }
+#endif
#ifdef SSL_OP_NO_COMPRESSION
SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_COMPRESSION);
@@ -831,7 +837,9 @@
BIO *rbio, *wbio;
ngx_connection_t *c;
- if (where & SSL_CB_HANDSHAKE_START) {
+ if ((where & SSL_CB_HANDSHAKE_START)
+ && SSL_is_server((ngx_ssl_conn_t *) ssl_conn))
+ {
c = ngx_ssl_get_connection((ngx_ssl_conn_t *) ssl_conn);
if (c->ssl->handshaked) {
@@ -1082,7 +1090,7 @@
* maximum interoperability.
*/
-#ifdef SSL_CTRL_SET_CURVES_LIST
+#if (defined SSL_CTX_set1_curves_list || defined SSL_CTRL_SET_CURVES_LIST)
/*
* OpenSSL 1.0.2+ allows configuring a curve list instead of a single
@@ -1292,7 +1300,7 @@
#ifdef SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS
/* initial handshake done, disable renegotiation (CVE-2009-3555) */
- if (c->ssl->connection->s3) {
+ if (c->ssl->connection->s3 && SSL_is_server(c->ssl->connection)) {
c->ssl->connection->s3->flags |= SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/event/ngx_event_openssl.h
^
|
@@ -54,6 +54,11 @@
#define ngx_ssl_conn_t SSL
+#if (OPENSSL_VERSION_NUMBER < 0x10002000L)
+#define SSL_is_server(s) (s)->server
+#endif
+
+
struct ngx_ssl_s {
SSL_CTX *ctx;
ngx_log_t *log;
@@ -131,6 +136,7 @@
#define NGX_SSL_TLSv1 0x0008
#define NGX_SSL_TLSv1_1 0x0010
#define NGX_SSL_TLSv1_2 0x0020
+#define NGX_SSL_TLSv1_3 0x0040
#define NGX_SSL_BUFFER 1
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_access_module.c
^
|
@@ -309,27 +309,21 @@
ngx_http_access_rule_un_t *rule_un;
#endif
+ all = 0;
ngx_memzero(&cidr, sizeof(ngx_cidr_t));
value = cf->args->elts;
- all = (value[1].len == 3 && ngx_strcmp(value[1].data, "all") == 0);
-
- if (!all) {
+ if (value[1].len == 3 && ngx_strcmp(value[1].data, "all") == 0) {
+ all = 1;
#if (NGX_HAVE_UNIX_DOMAIN)
+ } else if (value[1].len == 5 && ngx_strcmp(value[1].data, "unix:") == 0) {
+ cidr.family = AF_UNIX;
+#endif
- if (value[1].len == 5 && ngx_strcmp(value[1].data, "unix:") == 0) {
- cidr.family = AF_UNIX;
- rc = NGX_OK;
-
- } else {
- rc = ngx_ptocidr(&value[1], &cidr);
- }
-
-#else
+ } else {
rc = ngx_ptocidr(&value[1], &cidr);
-#endif
if (rc == NGX_ERROR) {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_auth_basic_module.c
^
|
@@ -361,6 +361,8 @@
basic = ngx_pnalloc(r->pool, len);
if (basic == NULL) {
+ r->headers_out.www_authenticate->hash = 0;
+ r->headers_out.www_authenticate = NULL;
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_dav_module.c
^
|
@@ -1080,6 +1080,7 @@
} else {
location = ngx_pnalloc(r->pool, r->uri.len);
if (location == NULL) {
+ ngx_http_clear_location(r);
return NGX_ERROR;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_fastcgi_module.c
^
|
@@ -1878,6 +1878,7 @@
p = ngx_pnalloc(r->pool, size);
if (p == NULL) {
+ h->hash = 0;
return NGX_ERROR;
}
@@ -1900,6 +1901,7 @@
ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
"invalid header after joining "
"FastCGI records");
+ h->hash = 0;
return NGX_ERROR;
}
@@ -1925,6 +1927,7 @@
h->key.len + 1 + h->value.len + 1
+ h->key.len);
if (h->key.data == NULL) {
+ h->hash = 0;
return NGX_ERROR;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_flv_module.c
^
|
@@ -203,7 +203,7 @@
}
if (i == 0) {
- b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
+ b = ngx_calloc_buf(r->pool);
if (b == NULL) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
@@ -217,7 +217,7 @@
}
- b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
+ b = ngx_calloc_buf(r->pool);
if (b == NULL) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_gzip_filter_module.c
^
|
@@ -644,7 +644,7 @@
static u_char gzheader[10] =
{ 0x1f, 0x8b, Z_DEFLATED, 0, 0, 0, 0, 0, 0, 3 };
- b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
+ b = ngx_calloc_buf(r->pool);
if (b == NULL) {
return NGX_ERROR;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_gzip_static_module.c
^
|
@@ -238,7 +238,7 @@
h = ngx_list_push(&r->headers_out.headers);
if (h == NULL) {
- return NGX_ERROR;
+ return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
h->hash = 1;
@@ -248,7 +248,7 @@
/* we need to allocate all before the header would be sent */
- b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
+ b = ngx_calloc_buf(r->pool);
if (b == NULL) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_image_filter_module.c
^
|
@@ -581,7 +581,7 @@
size_t len;
ngx_buf_t *b;
- b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
+ b = ngx_calloc_buf(r->pool);
if (b == NULL) {
return NULL;
}
@@ -633,7 +633,7 @@
{
ngx_buf_t *b;
- b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
+ b = ngx_calloc_buf(r->pool);
if (b == NULL) {
return NULL;
}
@@ -1067,7 +1067,7 @@
return NULL;
}
- b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
+ b = ngx_calloc_buf(r->pool);
if (b == NULL) {
gdFree(out);
return NULL;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_mp4_module.c
^
|
@@ -636,7 +636,7 @@
}
if (mp4 == NULL) {
- b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
+ b = ngx_calloc_buf(r->pool);
if (b == NULL) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_proxy_module.c
^
|
@@ -235,6 +235,7 @@
{ ngx_string("TLSv1"), NGX_SSL_TLSv1 },
{ ngx_string("TLSv1.1"), NGX_SSL_TLSv1_1 },
{ ngx_string("TLSv1.2"), NGX_SSL_TLSv1_2 },
+ { ngx_string("TLSv1.3"), NGX_SSL_TLSv1_3 },
{ ngx_null_string, 0 }
};
@@ -1797,6 +1798,7 @@
h->key.data = ngx_pnalloc(r->pool,
h->key.len + 1 + h->value.len + 1 + h->key.len);
if (h->key.data == NULL) {
+ h->hash = 0;
return NGX_ERROR;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_range_filter_module.c
^
|
@@ -425,6 +425,8 @@
content_range->value.data = ngx_pnalloc(r->pool,
sizeof("bytes -/") - 1 + 3 * NGX_OFF_T_LEN);
if (content_range->value.data == NULL) {
+ content_range->hash = 0;
+ r->headers_out.content_range = NULL;
return NGX_ERROR;
}
@@ -594,6 +596,8 @@
content_range->value.data = ngx_pnalloc(r->pool,
sizeof("bytes */") - 1 + NGX_OFF_T_LEN);
if (content_range->value.data == NULL) {
+ content_range->hash = 0;
+ r->headers_out.content_range = NULL;
return NGX_ERROR;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_realip_module.c
^
|
@@ -317,9 +317,15 @@
{
ngx_http_realip_loc_conf_t *rlcf = conf;
- ngx_int_t rc;
- ngx_str_t *value;
- ngx_cidr_t *cidr;
+ ngx_int_t rc;
+ ngx_str_t *value;
+ ngx_url_t u;
+ ngx_cidr_t c, *cidr;
+ ngx_uint_t i;
+ struct sockaddr_in *sin;
+#if (NGX_HAVE_INET6)
+ struct sockaddr_in6 *sin6;
+#endif
value = cf->args->elts;
@@ -331,31 +337,78 @@
}
}
- cidr = ngx_array_push(rlcf->from);
- if (cidr == NULL) {
- return NGX_CONF_ERROR;
- }
-
#if (NGX_HAVE_UNIX_DOMAIN)
if (ngx_strcmp(value[1].data, "unix:") == 0) {
+ cidr = ngx_array_push(rlcf->from);
+ if (cidr == NULL) {
+ return NGX_CONF_ERROR;
+ }
+
cidr->family = AF_UNIX;
return NGX_CONF_OK;
}
#endif
- rc = ngx_ptocidr(&value[1], cidr);
+ rc = ngx_ptocidr(&value[1], &c);
+
+ if (rc != NGX_ERROR) {
+ if (rc == NGX_DONE) {
+ ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
+ "low address bits of %V are meaningless",
+ &value[1]);
+ }
+
+ cidr = ngx_array_push(rlcf->from);
+ if (cidr == NULL) {
+ return NGX_CONF_ERROR;
+ }
+
+ *cidr = c;
+
+ return NGX_CONF_OK;
+ }
+
+ ngx_memzero(&u, sizeof(ngx_url_t));
+ u.host = value[1];
+
+ if (ngx_inet_resolve_host(cf->pool, &u) != NGX_OK) {
+ if (u.err) {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "%s in set_real_ip_from \"%V\"",
+ u.err, &u.host);
+ }
- if (rc == NGX_ERROR) {
- ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "invalid parameter \"%V\"",
- &value[1]);
return NGX_CONF_ERROR;
}
- if (rc == NGX_DONE) {
- ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
- "low address bits of %V are meaningless", &value[1]);
+ cidr = ngx_array_push_n(rlcf->from, u.naddrs);
+ if (cidr == NULL) {
+ return NGX_CONF_ERROR;
+ }
+
+ ngx_memzero(cidr, u.naddrs * sizeof(ngx_cidr_t));
+
+ for (i = 0; i < u.naddrs; i++) {
+ cidr[i].family = u.addrs[i].sockaddr->sa_family;
+
+ switch (cidr[i].family) {
+
+#if (NGX_HAVE_INET6)
+ case AF_INET6:
+ sin6 = (struct sockaddr_in6 *) u.addrs[i].sockaddr;
+ cidr[i].u.in6.addr = sin6->sin6_addr;
+ ngx_memset(cidr[i].u.in6.mask.s6_addr, 0xff, 16);
+ break;
+#endif
+
+ default: /* AF_INET */
+ sin = (struct sockaddr_in *) u.addrs[i].sockaddr;
+ cidr[i].u.in.addr = sin->sin_addr.s_addr;
+ cidr[i].u.in.mask = 0xffffffff;
+ break;
+ }
}
return NGX_CONF_OK;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_scgi_module.c
^
|
@@ -1040,6 +1040,7 @@
h->key.len + 1 + h->value.len + 1
+ h->key.len);
if (h->key.data == NULL) {
+ h->hash = 0;
return NGX_ERROR;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_ssl_module.c
^
|
@@ -57,6 +57,7 @@
{ ngx_string("TLSv1"), NGX_SSL_TLSv1 },
{ ngx_string("TLSv1.1"), NGX_SSL_TLSv1_1 },
{ ngx_string("TLSv1.2"), NGX_SSL_TLSv1_2 },
+ { ngx_string("TLSv1.3"), NGX_SSL_TLSv1_3 },
{ ngx_null_string, 0 }
};
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_static_module.c
^
|
@@ -169,6 +169,7 @@
location = ngx_pnalloc(r->pool, len);
if (location == NULL) {
+ ngx_http_clear_location(r);
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
@@ -233,7 +234,7 @@
/* we need to allocate all before the header would be sent */
- b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
+ b = ngx_calloc_buf(r->pool);
if (b == NULL) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_sub_filter_module.c
^
|
@@ -248,8 +248,6 @@
ctx->matches->nelts);
}
- ngx_http_set_ctx(r, ctx, ngx_http_sub_filter_module);
-
ctx->saved.data = ngx_pnalloc(r->pool, ctx->tables->max_match_len - 1);
if (ctx->saved.data == NULL) {
return NGX_ERROR;
@@ -260,6 +258,8 @@
return NGX_ERROR;
}
+ ngx_http_set_ctx(r, ctx, ngx_http_sub_filter_module);
+
ctx->offset = ctx->tables->min_match_len - 1;
ctx->last_out = &ctx->out;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_uwsgi_module.c
^
|
@@ -129,6 +129,7 @@
{ ngx_string("TLSv1"), NGX_SSL_TLSv1 },
{ ngx_string("TLSv1.1"), NGX_SSL_TLSv1_1 },
{ ngx_string("TLSv1.2"), NGX_SSL_TLSv1_2 },
+ { ngx_string("TLSv1.3"), NGX_SSL_TLSv1_3 },
{ ngx_null_string, 0 }
};
@@ -1243,6 +1244,7 @@
h->key.len + 1 + h->value.len + 1
+ h->key.len);
if (h->key.data == NULL) {
+ h->hash = 0;
return NGX_ERROR;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/ngx_http_xslt_filter_module.c
^
|
@@ -584,7 +584,7 @@
return NULL;
}
- b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
+ b = ngx_calloc_buf(r->pool);
if (b == NULL) {
ngx_free(buf);
return NULL;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/perl/nginx.pm
^
|
@@ -24,6 +24,7 @@
HTTP_SEE_OTHER
HTTP_NOT_MODIFIED
HTTP_TEMPORARY_REDIRECT
+ HTTP_PERMANENT_REDIRECT
HTTP_BAD_REQUEST
HTTP_UNAUTHORIZED
@@ -72,6 +73,7 @@
use constant HTTP_SEE_OTHER => 303;
use constant HTTP_NOT_MODIFIED => 304;
use constant HTTP_TEMPORARY_REDIRECT => 307;
+use constant HTTP_PERMANENT_REDIRECT => 308;
use constant HTTP_BAD_REQUEST => 400;
use constant HTTP_UNAUTHORIZED => 401;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/modules/perl/nginx.xs
^
|
@@ -510,10 +510,12 @@
header->hash = 1;
if (ngx_http_perl_sv2str(aTHX_ r, &header->key, key) != NGX_OK) {
+ header->hash = 0;
XSRETURN_EMPTY;
}
if (ngx_http_perl_sv2str(aTHX_ r, &header->value, value) != NGX_OK) {
+ header->hash = 0;
XSRETURN_EMPTY;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/ngx_http_core_module.c
^
|
@@ -1002,6 +1002,7 @@
p = ngx_pnalloc(r->pool, len);
if (p == NULL) {
+ ngx_http_clear_location(r);
ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
return NGX_OK;
}
@@ -1894,7 +1895,8 @@
if (status == NGX_HTTP_MOVED_PERMANENTLY
|| status == NGX_HTTP_MOVED_TEMPORARILY
|| status == NGX_HTTP_SEE_OTHER
- || status == NGX_HTTP_TEMPORARY_REDIRECT)
+ || status == NGX_HTTP_TEMPORARY_REDIRECT
+ || status == NGX_HTTP_PERMANENT_REDIRECT)
{
ngx_http_clear_location(r);
@@ -1926,7 +1928,7 @@
return ngx_http_send_header(r);
}
- b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
+ b = ngx_calloc_buf(r->pool);
if (b == NULL) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
@@ -2516,6 +2518,7 @@
sr->subrequest_in_memory = (flags & NGX_HTTP_SUBREQUEST_IN_MEMORY) != 0;
sr->waited = (flags & NGX_HTTP_SUBREQUEST_WAITED) != 0;
+ sr->background = (flags & NGX_HTTP_SUBREQUEST_BACKGROUND) != 0;
sr->unparsed_uri = r->unparsed_uri;
sr->method_name = ngx_http_core_get_method;
@@ -2529,29 +2532,31 @@
sr->read_event_handler = ngx_http_request_empty_handler;
sr->write_event_handler = ngx_http_handler;
- if (c->data == r && r->postponed == NULL) {
- c->data = sr;
- }
-
sr->variables = r->variables;
sr->log_handler = r->log_handler;
- pr = ngx_palloc(r->pool, sizeof(ngx_http_postponed_request_t));
- if (pr == NULL) {
- return NGX_ERROR;
- }
+ if (!sr->background) {
+ if (c->data == r && r->postponed == NULL) {
+ c->data = sr;
+ }
- pr->request = sr;
- pr->out = NULL;
- pr->next = NULL;
-
- if (r->postponed) {
- for (p = r->postponed; p->next; p = p->next) { /* void */ }
- p->next = pr;
+ pr = ngx_palloc(r->pool, sizeof(ngx_http_postponed_request_t));
+ if (pr == NULL) {
+ return NGX_ERROR;
+ }
- } else {
- r->postponed = pr;
+ pr->request = sr;
+ pr->out = NULL;
+ pr->next = NULL;
+
+ if (r->postponed) {
+ for (p = r->postponed; p->next; p = p->next) { /* void */ }
+ p->next = pr;
+
+ } else {
+ r->postponed = pr;
+ }
}
sr->internal = 1;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/ngx_http_file_cache.c
^
|
@@ -1577,7 +1577,7 @@
/* we need to allocate all before the header would be sent */
- b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
+ b = ngx_calloc_buf(r->pool);
if (b == NULL) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
@@ -1700,13 +1700,14 @@
static time_t
ngx_http_file_cache_forced_expire(ngx_http_file_cache_t *cache)
{
- u_char *name;
+ u_char *name, *p;
size_t len;
time_t wait;
ngx_uint_t tries;
ngx_path_t *path;
- ngx_queue_t *q;
+ ngx_queue_t *q, *sentinel;
ngx_http_file_cache_node_t *fcn;
+ u_char key[2 * NGX_HTTP_CACHE_KEY_LEN];
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0,
"http file cache forced expire");
@@ -1723,13 +1724,21 @@
wait = 10;
tries = 20;
+ sentinel = NULL;
ngx_shmtx_lock(&cache->shpool->mutex);
- for (q = ngx_queue_last(&cache->sh->queue);
- q != ngx_queue_sentinel(&cache->sh->queue);
- q = ngx_queue_prev(q))
- {
+ for ( ;; ) {
+ if (ngx_queue_empty(&cache->sh->queue)) {
+ break;
+ }
+
+ q = ngx_queue_last(&cache->sh->queue);
+
+ if (q == sentinel) {
+ break;
+ }
+
fcn = ngx_queue_data(q, ngx_http_file_cache_node_t, queue);
ngx_log_debug6(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0,
@@ -1740,15 +1749,37 @@
if (fcn->count == 0) {
ngx_http_file_cache_delete(cache, q, name);
wait = 0;
+ break;
+ }
- } else {
- if (--tries) {
- continue;
- }
+ p = ngx_hex_dump(key, (u_char *) &fcn->node.key,
+ sizeof(ngx_rbtree_key_t));
+ len = NGX_HTTP_CACHE_KEY_LEN - sizeof(ngx_rbtree_key_t);
+ (void) ngx_hex_dump(p, fcn->key, len);
+
+ /*
+ * abnormally exited workers may leave locked cache entries,
+ * and although it may be safe to remove them completely,
+ * we prefer to just move them to the top of the inactive queue
+ */
+
+ ngx_queue_remove(q);
+ fcn->expire = ngx_time() + cache->inactive;
+ ngx_queue_insert_head(&cache->sh->queue, &fcn->queue);
+
+ ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, 0,
+ "ignore long locked inactive cache entry %*s, count:%d",
+ (size_t) 2 * NGX_HTTP_CACHE_KEY_LEN, key, fcn->count);
+
+ if (sentinel == NULL) {
+ sentinel = q;
+ }
- wait = 1;
+ if (--tries) {
+ continue;
}
+ wait = 1;
break;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/ngx_http_parse.c
^
|
@@ -723,6 +723,11 @@
}
r->http_major = ch - '0';
+
+ if (r->http_major > 1) {
+ return NGX_HTTP_PARSE_INVALID_VERSION;
+ }
+
state = sw_major_digit;
break;
@@ -737,11 +742,12 @@
return NGX_HTTP_PARSE_INVALID_REQUEST;
}
- if (r->http_major > 99) {
- return NGX_HTTP_PARSE_INVALID_REQUEST;
+ r->http_major = r->http_major * 10 + ch - '0';
+
+ if (r->http_major > 1) {
+ return NGX_HTTP_PARSE_INVALID_VERSION;
}
- r->http_major = r->http_major * 10 + ch - '0';
break;
/* first digit of minor HTTP version */
@@ -1390,6 +1396,7 @@
goto done;
case '+':
r->plus_in_uri = 1;
+ /* fall through */
default:
state = sw_usual;
*u++ = ch;
@@ -1431,6 +1438,7 @@
goto done;
case '+':
r->plus_in_uri = 1;
+ /* fall through */
default:
state = sw_usual;
*u++ = ch;
@@ -1478,6 +1486,7 @@
goto done;
case '+':
r->plus_in_uri = 1;
+ /* fall through */
default:
state = sw_usual;
*u++ = ch;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/ngx_http_request.c
^
|
@@ -72,6 +72,9 @@
/* NGX_HTTP_PARSE_INVALID_REQUEST */
"client sent invalid request",
+ /* NGX_HTTP_PARSE_INVALID_VERSION */
+ "client sent invalid version",
+
/* NGX_HTTP_PARSE_INVALID_09_METHOD */
"client sent invalid method in HTTP/0.9 request"
};
@@ -620,14 +623,15 @@
static void
ngx_http_ssl_handshake(ngx_event_t *rev)
{
- u_char *p, buf[NGX_PROXY_PROTOCOL_MAX_HEADER + 1];
- size_t size;
- ssize_t n;
- ngx_err_t err;
- ngx_int_t rc;
- ngx_connection_t *c;
- ngx_http_connection_t *hc;
- ngx_http_ssl_srv_conf_t *sscf;
+ u_char *p, buf[NGX_PROXY_PROTOCOL_MAX_HEADER + 1];
+ size_t size;
+ ssize_t n;
+ ngx_err_t err;
+ ngx_int_t rc;
+ ngx_connection_t *c;
+ ngx_http_connection_t *hc;
+ ngx_http_ssl_srv_conf_t *sscf;
+ ngx_http_core_loc_conf_t *clcf;
c = rev->data;
hc = c->data;
@@ -709,6 +713,14 @@
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, rev->log, 0,
"https ssl handshake: 0x%02Xd", buf[0]);
+ clcf = ngx_http_get_module_loc_conf(hc->conf_ctx,
+ ngx_http_core_module);
+
+ if (clcf->tcp_nodelay && ngx_tcp_nodelay(c) != NGX_OK) {
+ ngx_http_close_connection(c);
+ return;
+ }
+
sscf = ngx_http_get_module_srv_conf(hc->conf_ctx,
ngx_http_ssl_module);
@@ -1036,7 +1048,14 @@
ngx_log_error(NGX_LOG_INFO, c->log, 0,
ngx_http_client_errors[rc - NGX_HTTP_CLIENT_ERROR]);
- ngx_http_finalize_request(r, NGX_HTTP_BAD_REQUEST);
+
+ if (rc == NGX_HTTP_PARSE_INVALID_VERSION) {
+ ngx_http_finalize_request(r, NGX_HTTP_VERSION_NOT_SUPPORTED);
+
+ } else {
+ ngx_http_finalize_request(r, NGX_HTTP_BAD_REQUEST);
+ }
+
return;
}
@@ -2312,10 +2331,6 @@
return;
}
- if (r->main->blocked) {
- r->write_event_handler = ngx_http_request_finalizer;
- }
-
ngx_http_terminate_request(r, rc);
return;
}
@@ -2347,6 +2362,26 @@
}
if (r != r->main) {
+ clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
+
+ if (r->background) {
+ if (!r->logged) {
+ if (clcf->log_subrequest) {
+ ngx_http_log_request(r);
+ }
+
+ r->logged = 1;
+
+ } else {
+ ngx_log_error(NGX_LOG_ALERT, c->log, 0,
+ "subrequest: \"%V?%V\" logged again",
+ &r->uri, &r->args);
+ }
+
+ r->done = 1;
+ ngx_http_finalize_connection(r);
+ return;
+ }
if (r->buffered || r->postponed) {
@@ -2364,9 +2399,6 @@
r->main->count--;
if (!r->logged) {
-
- clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
-
if (clcf->log_subrequest) {
ngx_http_log_request(r);
}
@@ -2413,7 +2445,7 @@
return;
}
- if (r->buffered || c->buffered || r->postponed || r->blocked) {
+ if (r->buffered || c->buffered || r->postponed) {
if (ngx_http_set_write_handler(r) != NGX_OK) {
ngx_http_terminate_request(r, 0);
@@ -2430,6 +2462,8 @@
}
r->done = 1;
+
+ r->read_event_handler = ngx_http_block_reading;
r->write_event_handler = ngx_http_request_empty_handler;
if (!r->post_action) {
@@ -2492,6 +2526,8 @@
if (mr->write_event_handler) {
if (mr->blocked) {
+ r->connection->error = 1;
+ r->write_event_handler = ngx_http_request_finalizer;
return;
}
@@ -2548,6 +2584,8 @@
return;
}
+ r = r->main;
+
if (r->reading_body) {
r->keepalive = 0;
r->lingering_close = 1;
@@ -3030,30 +3068,9 @@
tcp_nodelay = 1;
}
- if (tcp_nodelay
- && clcf->tcp_nodelay
- && c->tcp_nodelay == NGX_TCP_NODELAY_UNSET)
- {
- ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0, "tcp_nodelay");
-
- if (setsockopt(c->fd, IPPROTO_TCP, TCP_NODELAY,
- (const void *) &tcp_nodelay, sizeof(int))
- == -1)
- {
-#if (NGX_SOLARIS)
- /* Solaris returns EINVAL if a socket has been shut down */
- c->log_error = NGX_ERROR_IGNORE_EINVAL;
-#endif
-
- ngx_connection_error(c, ngx_socket_errno,
- "setsockopt(TCP_NODELAY) failed");
-
- c->log_error = NGX_ERROR_INFO;
- ngx_http_close_connection(c);
- return;
- }
-
- c->tcp_nodelay = NGX_TCP_NODELAY_SET;
+ if (tcp_nodelay && clcf->tcp_nodelay && ngx_tcp_nodelay(c) != NGX_OK) {
+ ngx_http_close_connection(c);
+ return;
}
#if 0
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/ngx_http_request.h
^
|
@@ -54,15 +54,17 @@
#define NGX_HTTP_CLIENT_ERROR 10
#define NGX_HTTP_PARSE_INVALID_METHOD 10
#define NGX_HTTP_PARSE_INVALID_REQUEST 11
-#define NGX_HTTP_PARSE_INVALID_09_METHOD 12
+#define NGX_HTTP_PARSE_INVALID_VERSION 12
+#define NGX_HTTP_PARSE_INVALID_09_METHOD 13
-#define NGX_HTTP_PARSE_INVALID_HEADER 13
+#define NGX_HTTP_PARSE_INVALID_HEADER 14
/* unused 1 */
#define NGX_HTTP_SUBREQUEST_IN_MEMORY 2
#define NGX_HTTP_SUBREQUEST_WAITED 4
#define NGX_HTTP_SUBREQUEST_CLONE 8
+#define NGX_HTTP_SUBREQUEST_BACKGROUND 16
#define NGX_HTTP_LOG_UNSAFE 1
@@ -83,6 +85,7 @@
#define NGX_HTTP_SEE_OTHER 303
#define NGX_HTTP_NOT_MODIFIED 304
#define NGX_HTTP_TEMPORARY_REDIRECT 307
+#define NGX_HTTP_PERMANENT_REDIRECT 308
#define NGX_HTTP_BAD_REQUEST 400
#define NGX_HTTP_UNAUTHORIZED 401
@@ -135,6 +138,7 @@
#define NGX_HTTP_BAD_GATEWAY 502
#define NGX_HTTP_SERVICE_UNAVAILABLE 503
#define NGX_HTTP_GATEWAY_TIME_OUT 504
+#define NGX_HTTP_VERSION_NOT_SUPPORTED 505
#define NGX_HTTP_INSUFFICIENT_STORAGE 507
@@ -483,7 +487,6 @@
#if (NGX_HTTP_CACHE)
unsigned cached:1;
- unsigned cache_updater:1;
#endif
#if (NGX_HTTP_GZIP)
@@ -540,6 +543,7 @@
unsigned stat_writing:1;
unsigned stat_processing:1;
+ unsigned background:1;
unsigned health_check:1;
/* used to parse HTTP headers */
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/ngx_http_request_body.c
^
|
@@ -46,13 +46,6 @@
return NGX_OK;
}
-#if (NGX_HTTP_V2)
- if (r->stream) {
- rc = ngx_http_v2_read_request_body(r, post_handler);
- goto done;
- }
-#endif
-
if (ngx_http_test_expect(r) != NGX_OK) {
rc = NGX_HTTP_INTERNAL_SERVER_ERROR;
goto done;
@@ -85,6 +78,13 @@
return NGX_OK;
}
+#if (NGX_HTTP_V2)
+ if (r->stream) {
+ rc = ngx_http_v2_read_request_body(r);
+ goto done;
+ }
+#endif
+
preread = r->header_in->last - r->header_in->pos;
if (preread) {
@@ -805,7 +805,11 @@
if (r->expect_tested
|| r->headers_in.expect == NULL
- || r->http_version < NGX_HTTP_VERSION_11)
+ || r->http_version < NGX_HTTP_VERSION_11
+#if (NGX_HTTP_V2)
+ || r->stream != NULL
+#endif
+ )
{
return NGX_OK;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/ngx_http_special_response.c
^
|
@@ -89,6 +89,14 @@
;
+static char ngx_http_error_308_page[] =
+"<html>" CRLF
+"<head><title>308 Permanent Redirect</title></head>" CRLF
+"<body bgcolor=\"white\">" CRLF
+"<center><h1>308 Permanent Redirect</h1></center>" CRLF
+;
+
+
static char ngx_http_error_400_page[] =
"<html>" CRLF
"<head><title>400 Bad Request</title></head>" CRLF
@@ -313,6 +321,14 @@
;
+static char ngx_http_error_505_page[] =
+"<html>" CRLF
+"<head><title>505 HTTP Version Not Supported</title></head>" CRLF
+"<body bgcolor=\"white\">" CRLF
+"<center><h1>505 HTTP Version Not Supported</h1></center>" CRLF
+;
+
+
static char ngx_http_error_507_page[] =
"<html>" CRLF
"<head><title>507 Insufficient Storage</title></head>" CRLF
@@ -336,8 +352,9 @@
ngx_null_string, /* 305 */
ngx_null_string, /* 306 */
ngx_string(ngx_http_error_307_page),
+ ngx_string(ngx_http_error_308_page),
-#define NGX_HTTP_LAST_3XX 308
+#define NGX_HTTP_LAST_3XX 309
#define NGX_HTTP_OFF_4XX (NGX_HTTP_LAST_3XX - 301 + NGX_HTTP_OFF_3XX)
ngx_string(ngx_http_error_400_page),
@@ -386,7 +403,7 @@
ngx_string(ngx_http_error_502_page),
ngx_string(ngx_http_error_503_page),
ngx_string(ngx_http_error_504_page),
- ngx_null_string, /* 505 */
+ ngx_string(ngx_http_error_505_page),
ngx_null_string, /* 506 */
ngx_string(ngx_http_error_507_page)
@@ -615,7 +632,8 @@
if (overwrite != NGX_HTTP_MOVED_PERMANENTLY
&& overwrite != NGX_HTTP_MOVED_TEMPORARILY
&& overwrite != NGX_HTTP_SEE_OTHER
- && overwrite != NGX_HTTP_TEMPORARY_REDIRECT)
+ && overwrite != NGX_HTTP_TEMPORARY_REDIRECT
+ && overwrite != NGX_HTTP_PERMANENT_REDIRECT)
{
r->err_status = NGX_HTTP_MOVED_TEMPORARILY;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/ngx_http_upstream.c
^
|
@@ -879,7 +879,7 @@
case NGX_HTTP_CACHE_STALE:
if (((u->conf->cache_use_stale & NGX_HTTP_UPSTREAM_FT_UPDATING)
- || c->stale_updating) && !r->cache_updater
+ || c->stale_updating) && !r->background
&& u->conf->cache_background_update)
{
r->cache->background = 1;
@@ -892,7 +892,7 @@
case NGX_HTTP_CACHE_UPDATING:
if (((u->conf->cache_use_stale & NGX_HTTP_UPSTREAM_FT_UPDATING)
- || c->stale_updating) && !r->cache_updater)
+ || c->stale_updating) && !r->background)
{
u->cache_status = rc;
rc = NGX_OK;
@@ -1076,14 +1076,14 @@
}
if (ngx_http_subrequest(r, &r->uri, &r->args, &sr, NULL,
- NGX_HTTP_SUBREQUEST_CLONE)
+ NGX_HTTP_SUBREQUEST_CLONE
+ |NGX_HTTP_SUBREQUEST_BACKGROUND)
!= NGX_OK)
{
return NGX_ERROR;
}
sr->header_only = 1;
- sr->cache_updater = 1;
return NGX_OK;
}
@@ -1606,7 +1606,6 @@
ngx_http_upstream_ssl_init_connection(ngx_http_request_t *r,
ngx_http_upstream_t *u, ngx_connection_t *c)
{
- int tcp_nodelay;
ngx_int_t rc;
ngx_http_core_loc_conf_t *clcf;
@@ -1646,22 +1645,10 @@
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
- if (clcf->tcp_nodelay && c->tcp_nodelay == NGX_TCP_NODELAY_UNSET) {
- ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0, "tcp_nodelay");
-
- tcp_nodelay = 1;
-
- if (setsockopt(c->fd, IPPROTO_TCP, TCP_NODELAY,
- (const void *) &tcp_nodelay, sizeof(int)) == -1)
- {
- ngx_connection_error(c, ngx_socket_errno,
- "setsockopt(TCP_NODELAY) failed");
- ngx_http_upstream_finalize_request(r, u,
+ if (clcf->tcp_nodelay && ngx_tcp_nodelay(c) != NGX_OK) {
+ ngx_http_upstream_finalize_request(r, u,
NGX_HTTP_INTERNAL_SERVER_ERROR);
- return;
- }
-
- c->tcp_nodelay = NGX_TCP_NODELAY_SET;
+ return;
}
}
@@ -2014,7 +2001,6 @@
ngx_http_upstream_send_request_body(ngx_http_request_t *r,
ngx_http_upstream_t *u, ngx_uint_t do_write)
{
- int tcp_nodelay;
ngx_int_t rc;
ngx_chain_t *out, *cl, *ln;
ngx_connection_t *c;
@@ -2051,20 +2037,8 @@
c = u->peer.connection;
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
- if (clcf->tcp_nodelay && c->tcp_nodelay == NGX_TCP_NODELAY_UNSET) {
- ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0, "tcp_nodelay");
-
- tcp_nodelay = 1;
-
- if (setsockopt(c->fd, IPPROTO_TCP, TCP_NODELAY,
- (const void *) &tcp_nodelay, sizeof(int)) == -1)
- {
- ngx_connection_error(c, ngx_socket_errno,
- "setsockopt(TCP_NODELAY) failed");
- return NGX_ERROR;
- }
-
- c->tcp_nodelay = NGX_TCP_NODELAY_SET;
+ if (clcf->tcp_nodelay && ngx_tcp_nodelay(c) != NGX_OK) {
+ return NGX_ERROR;
}
r->read_event_handler = ngx_http_upstream_read_request_handler;
@@ -2822,7 +2796,6 @@
static void
ngx_http_upstream_send_response(ngx_http_request_t *r, ngx_http_upstream_t *u)
{
- int tcp_nodelay;
ssize_t n;
ngx_int_t rc;
ngx_event_pipe_t *p;
@@ -2903,21 +2876,9 @@
return;
}
- if (clcf->tcp_nodelay && c->tcp_nodelay == NGX_TCP_NODELAY_UNSET) {
- ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0, "tcp_nodelay");
-
- tcp_nodelay = 1;
-
- if (setsockopt(c->fd, IPPROTO_TCP, TCP_NODELAY,
- (const void *) &tcp_nodelay, sizeof(int)) == -1)
- {
- ngx_connection_error(c, ngx_socket_errno,
- "setsockopt(TCP_NODELAY) failed");
- ngx_http_upstream_finalize_request(r, u, NGX_ERROR);
- return;
- }
-
- c->tcp_nodelay = NGX_TCP_NODELAY_SET;
+ if (clcf->tcp_nodelay && ngx_tcp_nodelay(c) != NGX_OK) {
+ ngx_http_upstream_finalize_request(r, u, NGX_ERROR);
+ return;
}
n = u->buffer.last - u->buffer.pos;
@@ -3176,7 +3137,6 @@
static void
ngx_http_upstream_upgrade(ngx_http_request_t *r, ngx_http_upstream_t *u)
{
- int tcp_nodelay;
ngx_connection_t *c;
ngx_http_core_loc_conf_t *clcf;
@@ -3194,37 +3154,15 @@
r->write_event_handler = ngx_http_upstream_upgraded_write_downstream;
if (clcf->tcp_nodelay) {
- tcp_nodelay = 1;
-
- if (c->tcp_nodelay == NGX_TCP_NODELAY_UNSET) {
- ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0, "tcp_nodelay");
- if (setsockopt(c->fd, IPPROTO_TCP, TCP_NODELAY,
- (const void *) &tcp_nodelay, sizeof(int)) == -1)
- {
- ngx_connection_error(c, ngx_socket_errno,
- "setsockopt(TCP_NODELAY) failed");
- ngx_http_upstream_finalize_request(r, u, NGX_ERROR);
- return;
- }
-
- c->tcp_nodelay = NGX_TCP_NODELAY_SET;
+ if (ngx_tcp_nodelay(c) != NGX_OK) {
+ ngx_http_upstream_finalize_request(r, u, NGX_ERROR);
+ return;
}
- if (u->peer.connection->tcp_nodelay == NGX_TCP_NODELAY_UNSET) {
- ngx_log_debug0(NGX_LOG_DEBUG_HTTP, u->peer.connection->log, 0,
- "tcp_nodelay");
-
- if (setsockopt(u->peer.connection->fd, IPPROTO_TCP, TCP_NODELAY,
- (const void *) &tcp_nodelay, sizeof(int)) == -1)
- {
- ngx_connection_error(u->peer.connection, ngx_socket_errno,
- "setsockopt(TCP_NODELAY) failed");
- ngx_http_upstream_finalize_request(r, u, NGX_ERROR);
- return;
- }
-
- u->peer.connection->tcp_nodelay = NGX_TCP_NODELAY_SET;
+ if (ngx_tcp_nodelay(u->peer.connection) != NGX_OK) {
+ ngx_http_upstream_finalize_request(r, u, NGX_ERROR);
+ return;
}
}
@@ -4897,17 +4835,18 @@
}
}
- ph = ngx_array_push(pa);
- if (ph == NULL) {
- return NGX_ERROR;
- }
-
ho = ngx_list_push(&r->headers_out.headers);
if (ho == NULL) {
return NGX_ERROR;
}
*ho = *h;
+
+ ph = ngx_array_push(pa);
+ if (ph == NULL) {
+ return NGX_ERROR;
+ }
+
*ph = ho;
return NGX_OK;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/v2/ngx_http_v2.c
^
|
@@ -529,29 +529,8 @@
tcp_nodelay = 1;
}
- if (tcp_nodelay
- && clcf->tcp_nodelay
- && c->tcp_nodelay == NGX_TCP_NODELAY_UNSET)
- {
- ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0, "tcp_nodelay");
-
- if (setsockopt(c->fd, IPPROTO_TCP, TCP_NODELAY,
- (const void *) &tcp_nodelay, sizeof(int))
- == -1)
- {
-#if (NGX_SOLARIS)
- /* Solaris returns EINVAL if a socket has been shut down */
- c->log_error = NGX_ERROR_IGNORE_EINVAL;
-#endif
-
- ngx_connection_error(c, ngx_socket_errno,
- "setsockopt(TCP_NODELAY) failed");
-
- c->log_error = NGX_ERROR_INFO;
- goto error;
- }
-
- c->tcp_nodelay = NGX_TCP_NODELAY_SET;
+ if (tcp_nodelay && clcf->tcp_nodelay && ngx_tcp_nodelay(c) != NGX_OK) {
+ goto error;
}
for ( /* void */ ; out; out = fn) {
@@ -2166,6 +2145,44 @@
"http2 WINDOW_UPDATE frame sid:%ui window:%uz",
h2c->state.sid, window);
+ if (window == 0) {
+ if (h2c->state.sid == 0) {
+ ngx_log_error(NGX_LOG_INFO, h2c->connection->log, 0,
+ "client sent WINDOW_UPDATE frame "
+ "with incorrect window increment 0");
+
+ return ngx_http_v2_connection_error(h2c,
+ NGX_HTTP_V2_PROTOCOL_ERROR);
+ }
+
+ ngx_log_error(NGX_LOG_INFO, h2c->connection->log, 0,
+ "client sent WINDOW_UPDATE frame for stream %ui "
+ "with incorrect window increment 0", h2c->state.sid);
+
+ node = ngx_http_v2_get_node_by_id(h2c, h2c->state.sid, 0);
+
+ if (node && node->stream) {
+ if (ngx_http_v2_terminate_stream(h2c, node->stream,
+ NGX_HTTP_V2_PROTOCOL_ERROR)
+ == NGX_ERROR)
+ {
+ return ngx_http_v2_connection_error(h2c,
+ NGX_HTTP_V2_INTERNAL_ERROR);
+ }
+
+ } else {
+ if (ngx_http_v2_send_rst_stream(h2c, h2c->state.sid,
+ NGX_HTTP_V2_PROTOCOL_ERROR)
+ == NGX_ERROR)
+ {
+ return ngx_http_v2_connection_error(h2c,
+ NGX_HTTP_V2_INTERNAL_ERROR);
+ }
+ }
+
+ return ngx_http_v2_state_complete(h2c, pos, end);
+ }
+
if (h2c->state.sid) {
node = ngx_http_v2_get_node_by_id(h2c, h2c->state.sid, 0);
@@ -3484,8 +3501,7 @@
ngx_int_t
-ngx_http_v2_read_request_body(ngx_http_request_t *r,
- ngx_http_client_body_handler_pt post_handler)
+ngx_http_v2_read_request_body(ngx_http_request_t *r)
{
off_t len;
size_t size;
@@ -3498,33 +3514,14 @@
ngx_http_v2_connection_t *h2c;
stream = r->stream;
+ rb = r->request_body;
if (stream->skip_data) {
r->request_body_no_buffering = 0;
- post_handler(r);
+ rb->post_handler(r);
return NGX_OK;
}
- rb = ngx_pcalloc(r->pool, sizeof(ngx_http_request_body_t));
- if (rb == NULL) {
- return NGX_HTTP_INTERNAL_SERVER_ERROR;
- }
-
- /*
- * set by ngx_pcalloc():
- *
- * rb->bufs = NULL;
- * rb->buf = NULL;
- * rb->received = 0;
- * rb->free = NULL;
- * rb->busy = NULL;
- */
-
- rb->rest = 1;
- rb->post_handler = post_handler;
-
- r->request_body = rb;
-
h2scf = ngx_http_get_module_srv_conf(r, ngx_http_v2_module);
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
@@ -3574,6 +3571,8 @@
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
+ rb->rest = 1;
+
buf = stream->preread;
if (stream->in_closed) {
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/v2/ngx_http_v2.h
^
|
@@ -264,8 +264,7 @@
void ngx_http_v2_init(ngx_event_t *rev);
void ngx_http_v2_request_headers_init(void);
-ngx_int_t ngx_http_v2_read_request_body(ngx_http_request_t *r,
- ngx_http_client_body_handler_pt post_handler);
+ngx_int_t ngx_http_v2_read_request_body(ngx_http_request_t *r);
ngx_int_t ngx_http_v2_read_unbuffered_request_body(ngx_http_request_t *r);
void ngx_http_v2_close_stream(ngx_http_v2_stream_t *stream, ngx_int_t rc);
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/http/v2/ngx_http_v2_filter_module.c
^
|
@@ -619,6 +619,8 @@
ngx_http_v2_queue_blocked_frame(r->stream->connection, frame);
+ r->stream->queued = 1;
+
cln = ngx_http_cleanup_add(r, 0);
if (cln == NULL) {
return NGX_ERROR;
@@ -627,8 +629,6 @@
cln->handler = ngx_http_v2_filter_cleanup;
cln->data = r->stream;
- r->stream->queued = 1;
-
fc->send_chain = ngx_http_v2_send_chain;
fc->need_last_buf = 1;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/mail/ngx_mail.c
^
|
@@ -333,6 +333,8 @@
ls->log.handler = ngx_accept_log_error;
ls->backlog = addr[i].opt.backlog;
+ ls->rcvbuf = addr[i].opt.rcvbuf;
+ ls->sndbuf = addr[i].opt.sndbuf;
ls->keepalive = addr[i].opt.so_keepalive;
#if (NGX_HAVE_KEEPALIVE_TUNABLE)
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/mail/ngx_mail.h
^
|
@@ -46,6 +46,8 @@
int tcp_keepcnt;
#endif
int backlog;
+ int rcvbuf;
+ int sndbuf;
} ngx_mail_listen_t;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/mail/ngx_mail_core_module.c
^
|
@@ -295,7 +295,7 @@
{
ngx_mail_core_srv_conf_t *cscf = conf;
- ngx_str_t *value;
+ ngx_str_t *value, size;
ngx_url_t u;
ngx_uint_t i, m;
ngx_mail_listen_t *ls;
@@ -350,6 +350,8 @@
ls->socklen = u.socklen;
ls->backlog = NGX_LISTEN_BACKLOG;
+ ls->rcvbuf = -1;
+ ls->sndbuf = -1;
ls->wildcard = u.wildcard;
ls->ctx = cf->ctx;
@@ -395,6 +397,38 @@
return NGX_CONF_ERROR;
}
+ continue;
+ }
+
+ if (ngx_strncmp(value[i].data, "rcvbuf=", 7) == 0) {
+ size.len = value[i].len - 7;
+ size.data = value[i].data + 7;
+
+ ls->rcvbuf = ngx_parse_size(&size);
+ ls->bind = 1;
+
+ if (ls->rcvbuf == NGX_ERROR) {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "invalid rcvbuf \"%V\"", &value[i]);
+ return NGX_CONF_ERROR;
+ }
+
+ continue;
+ }
+
+ if (ngx_strncmp(value[i].data, "sndbuf=", 7) == 0) {
+ size.len = value[i].len - 7;
+ size.data = value[i].data + 7;
+
+ ls->sndbuf = ngx_parse_size(&size);
+ ls->bind = 1;
+
+ if (ls->sndbuf == NGX_ERROR) {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "invalid sndbuf \"%V\"", &value[i]);
+ return NGX_CONF_ERROR;
+ }
+
continue;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/mail/ngx_mail_handler.c
^
|
@@ -222,7 +222,7 @@
ngx_mail_session_t *s;
ngx_mail_core_srv_conf_t *cscf;
- if (ngx_ssl_create_connection(ssl, c, 0) == NGX_ERROR) {
+ if (ngx_ssl_create_connection(ssl, c, 0) != NGX_OK) {
ngx_mail_close_connection(c);
return;
}
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/mail/ngx_mail_ssl_module.c
^
|
@@ -42,6 +42,7 @@
{ ngx_string("TLSv1"), NGX_SSL_TLSv1 },
{ ngx_string("TLSv1.1"), NGX_SSL_TLSv1_1 },
{ ngx_string("TLSv1.2"), NGX_SSL_TLSv1_2 },
+ { ngx_string("TLSv1.3"), NGX_SSL_TLSv1_3 },
{ ngx_null_string, 0 }
};
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/os/unix/ngx_darwin_config.h
^
|
@@ -9,6 +9,9 @@
#define _NGX_DARWIN_CONFIG_H_INCLUDED_
+#define __APPLE_USE_RFC_3542 /* IPV6_PKTINFO */
+
+
#include <sys/types.h>
#include <sys/time.h>
#include <unistd.h>
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/os/unix/ngx_process.c
^
|
@@ -15,13 +15,13 @@
int signo;
char *signame;
char *name;
- void (*handler)(int signo);
+ void (*handler)(int signo, siginfo_t *siginfo, void *ucontext);
} ngx_signal_t;
static void ngx_execute_proc(ngx_cycle_t *cycle, void *data);
-static void ngx_signal_handler(int signo);
+static void ngx_signal_handler(int signo, siginfo_t *siginfo, void *ucontext);
static void ngx_process_get_status(void);
static void ngx_unlock_mutexes(ngx_pid_t pid);
@@ -75,9 +75,9 @@
{ SIGCHLD, "SIGCHLD", "", ngx_signal_handler },
- { SIGSYS, "SIGSYS, SIG_IGN", "", SIG_IGN },
+ { SIGSYS, "SIGSYS, SIG_IGN", "", NULL },
- { SIGPIPE, "SIGPIPE, SIG_IGN", "", SIG_IGN },
+ { SIGPIPE, "SIGPIPE, SIG_IGN", "", NULL },
{ 0, NULL, "", NULL }
};
@@ -288,7 +288,15 @@
for (sig = signals; sig->signo != 0; sig++) {
ngx_memzero(&sa, sizeof(struct sigaction));
- sa.sa_handler = sig->handler;
+
+ if (sig->handler) {
+ sa.sa_sigaction = sig->handler;
+ sa.sa_flags = SA_SIGINFO;
+
+ } else {
+ sa.sa_handler = SIG_IGN;
+ }
+
sigemptyset(&sa.sa_mask);
if (sigaction(sig->signo, &sa, NULL) == -1) {
#if (NGX_VALGRIND)
@@ -307,7 +315,7 @@
static void
-ngx_signal_handler(int signo)
+ngx_signal_handler(int signo, siginfo_t *siginfo, void *ucontext)
{
char *action;
ngx_int_t ignore;
@@ -405,6 +413,7 @@
break;
}
ngx_debug_quit = 1;
+ /* fall through */
case ngx_signal_value(NGX_SHUTDOWN_SIGNAL):
ngx_quit = 1;
action = ", shutting down";
@@ -431,8 +440,16 @@
break;
}
- ngx_log_error(NGX_LOG_NOTICE, ngx_cycle->log, 0,
- "signal %d (%s) received%s", signo, sig->signame, action);
+ if (siginfo && siginfo->si_pid) {
+ ngx_log_error(NGX_LOG_NOTICE, ngx_cycle->log, 0,
+ "signal %d (%s) received from %P%s",
+ signo, sig->signame, siginfo->si_pid, action);
+
+ } else {
+ ngx_log_error(NGX_LOG_NOTICE, ngx_cycle->log, 0,
+ "signal %d (%s) received%s",
+ signo, sig->signame, action);
+ }
if (ignore) {
ngx_log_error(NGX_LOG_CRIT, ngx_cycle->log, 0,
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/os/unix/ngx_udp_sendmsg_chain.c
^
|
@@ -203,6 +203,20 @@
ngx_err_t err;
struct msghdr msg;
+#if (NGX_HAVE_MSGHDR_MSG_CONTROL)
+
+#if (NGX_HAVE_IP_SENDSRCADDR)
+ u_char msg_control[CMSG_SPACE(sizeof(struct in_addr))];
+#elif (NGX_HAVE_IP_PKTINFO)
+ u_char msg_control[CMSG_SPACE(sizeof(struct in_pktinfo))];
+#endif
+
+#if (NGX_HAVE_INET6 && NGX_HAVE_IPV6_RECVPKTINFO)
+ u_char msg_control6[CMSG_SPACE(sizeof(struct in6_pktinfo))];
+#endif
+
+#endif
+
ngx_memzero(&msg, sizeof(struct msghdr));
if (c->socklen) {
@@ -213,6 +227,82 @@
msg.msg_iov = vec->iovs;
msg.msg_iovlen = vec->count;
+#if (NGX_HAVE_MSGHDR_MSG_CONTROL)
+
+ if (c->listening && c->listening->wildcard && c->local_sockaddr) {
+
+#if (NGX_HAVE_IP_SENDSRCADDR)
+
+ if (c->local_sockaddr->sa_family == AF_INET) {
+ struct cmsghdr *cmsg;
+ struct in_addr *addr;
+ struct sockaddr_in *sin;
+
+ msg.msg_control = &msg_control;
+ msg.msg_controllen = sizeof(msg_control);
+
+ cmsg = CMSG_FIRSTHDR(&msg);
+ cmsg->cmsg_level = IPPROTO_IP;
+ cmsg->cmsg_type = IP_SENDSRCADDR;
+ cmsg->cmsg_len = CMSG_LEN(sizeof(struct in_addr));
+
+ sin = (struct sockaddr_in *) c->local_sockaddr;
+
+ addr = (struct in_addr *) CMSG_DATA(cmsg);
+ *addr = sin->sin_addr;
+ }
+
+#elif (NGX_HAVE_IP_PKTINFO)
+
+ if (c->local_sockaddr->sa_family == AF_INET) {
+ struct cmsghdr *cmsg;
+ struct in_pktinfo *pkt;
+ struct sockaddr_in *sin;
+
+ msg.msg_control = &msg_control;
+ msg.msg_controllen = sizeof(msg_control);
+
+ cmsg = CMSG_FIRSTHDR(&msg);
+ cmsg->cmsg_level = IPPROTO_IP;
+ cmsg->cmsg_type = IP_PKTINFO;
+ cmsg->cmsg_len = CMSG_LEN(sizeof(struct in_pktinfo));
+
+ sin = (struct sockaddr_in *) c->local_sockaddr;
+
+ pkt = (struct in_pktinfo *) CMSG_DATA(cmsg);
+ ngx_memzero(pkt, sizeof(struct in_pktinfo));
+ pkt->ipi_spec_dst = sin->sin_addr;
+ }
+
+#endif
+
+#if (NGX_HAVE_INET6 && NGX_HAVE_IPV6_RECVPKTINFO)
+
+ if (c->local_sockaddr->sa_family == AF_INET6) {
+ struct cmsghdr *cmsg;
+ struct in6_pktinfo *pkt6;
+ struct sockaddr_in6 *sin6;
+
+ msg.msg_control = &msg_control6;
+ msg.msg_controllen = sizeof(msg_control6);
+
+ cmsg = CMSG_FIRSTHDR(&msg);
+ cmsg->cmsg_level = IPPROTO_IPV6;
+ cmsg->cmsg_type = IPV6_PKTINFO;
+ cmsg->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo));
+
+ sin6 = (struct sockaddr_in6 *) c->local_sockaddr;
+
+ pkt6 = (struct in6_pktinfo *) CMSG_DATA(cmsg);
+ ngx_memzero(pkt6, sizeof(struct in6_pktinfo));
+ pkt6->ipi6_addr = sin6->sin6_addr;
+ }
+
+#endif
+ }
+
+#endif
+
eintr:
n = sendmsg(c->fd, &msg, 0);
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/stream/ngx_stream.c
^
|
@@ -494,6 +494,8 @@
ls->log.handler = ngx_accept_log_error;
ls->backlog = addr[i].opt.backlog;
+ ls->rcvbuf = addr[i].opt.rcvbuf;
+ ls->sndbuf = addr[i].opt.sndbuf;
ls->wildcard = addr[i].opt.wildcard;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/stream/ngx_stream.h
^
|
@@ -62,6 +62,8 @@
int tcp_keepcnt;
#endif
int backlog;
+ int rcvbuf;
+ int sndbuf;
int type;
} ngx_stream_listen_t;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/stream/ngx_stream_access_module.c
^
|
@@ -299,27 +299,21 @@
ngx_stream_access_rule_un_t *rule_un;
#endif
+ all = 0;
ngx_memzero(&cidr, sizeof(ngx_cidr_t));
value = cf->args->elts;
- all = (value[1].len == 3 && ngx_strcmp(value[1].data, "all") == 0);
-
- if (!all) {
+ if (value[1].len == 3 && ngx_strcmp(value[1].data, "all") == 0) {
+ all = 1;
#if (NGX_HAVE_UNIX_DOMAIN)
+ } else if (value[1].len == 5 && ngx_strcmp(value[1].data, "unix:") == 0) {
+ cidr.family = AF_UNIX;
+#endif
- if (value[1].len == 5 && ngx_strcmp(value[1].data, "unix:") == 0) {
- cidr.family = AF_UNIX;
- rc = NGX_OK;
-
- } else {
- rc = ngx_ptocidr(&value[1], &cidr);
- }
-
-#else
+ } else {
rc = ngx_ptocidr(&value[1], &cidr);
-#endif
if (rc == NGX_ERROR) {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/stream/ngx_stream_core_module.c
^
|
@@ -309,7 +309,6 @@
ngx_stream_core_content_phase(ngx_stream_session_t *s,
ngx_stream_phase_handler_t *ph)
{
- int tcp_nodelay;
ngx_connection_t *c;
ngx_stream_core_srv_conf_t *cscf;
@@ -321,22 +320,10 @@
if (c->type == SOCK_STREAM
&& cscf->tcp_nodelay
- && c->tcp_nodelay == NGX_TCP_NODELAY_UNSET)
+ && ngx_tcp_nodelay(c) != NGX_OK)
{
- ngx_log_debug0(NGX_LOG_DEBUG_STREAM, c->log, 0, "tcp_nodelay");
-
- tcp_nodelay = 1;
-
- if (setsockopt(c->fd, IPPROTO_TCP, TCP_NODELAY,
- (const void *) &tcp_nodelay, sizeof(int)) == -1)
- {
- ngx_connection_error(c, ngx_socket_errno,
- "setsockopt(TCP_NODELAY) failed");
- ngx_stream_finalize_session(s, NGX_STREAM_INTERNAL_SERVER_ERROR);
- return NGX_OK;
- }
-
- c->tcp_nodelay = NGX_TCP_NODELAY_SET;
+ ngx_stream_finalize_session(s, NGX_STREAM_INTERNAL_SERVER_ERROR);
+ return NGX_OK;
}
cscf->handler(s);
@@ -582,7 +569,7 @@
{
ngx_stream_core_srv_conf_t *cscf = conf;
- ngx_str_t *value;
+ ngx_str_t *value, size;
ngx_url_t u;
ngx_uint_t i, backlog;
ngx_stream_listen_t *ls, *als;
@@ -620,6 +607,8 @@
ls->socklen = u.socklen;
ls->backlog = NGX_LISTEN_BACKLOG;
+ ls->rcvbuf = -1;
+ ls->sndbuf = -1;
ls->type = SOCK_STREAM;
ls->wildcard = u.wildcard;
ls->ctx = cf->ctx;
@@ -658,6 +647,38 @@
continue;
}
+
+ if (ngx_strncmp(value[i].data, "rcvbuf=", 7) == 0) {
+ size.len = value[i].len - 7;
+ size.data = value[i].data + 7;
+
+ ls->rcvbuf = ngx_parse_size(&size);
+ ls->bind = 1;
+
+ if (ls->rcvbuf == NGX_ERROR) {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "invalid rcvbuf \"%V\"", &value[i]);
+ return NGX_CONF_ERROR;
+ }
+
+ continue;
+ }
+
+ if (ngx_strncmp(value[i].data, "sndbuf=", 7) == 0) {
+ size.len = value[i].len - 7;
+ size.data = value[i].data + 7;
+
+ ls->sndbuf = ngx_parse_size(&size);
+ ls->bind = 1;
+
+ if (ls->sndbuf == NGX_ERROR) {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "invalid sndbuf \"%V\"", &value[i]);
+ return NGX_CONF_ERROR;
+ }
+
+ continue;
+ }
if (ngx_strncmp(value[i].data, "ipv6only=o", 10) == 0) {
#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/stream/ngx_stream_proxy_module.c
^
|
@@ -103,6 +103,7 @@
{ ngx_string("TLSv1"), NGX_SSL_TLSv1 },
{ ngx_string("TLSv1.1"), NGX_SSL_TLSv1_1 },
{ ngx_string("TLSv1.2"), NGX_SSL_TLSv1_2 },
+ { ngx_string("TLSv1.3"), NGX_SSL_TLSv1_3 },
{ ngx_null_string, 0 }
};
@@ -728,7 +729,6 @@
static void
ngx_stream_proxy_init_upstream(ngx_stream_session_t *s)
{
- int tcp_nodelay;
u_char *p;
ngx_chain_t *cl;
ngx_connection_t *c, *pc;
@@ -744,22 +744,10 @@
if (pc->type == SOCK_STREAM
&& cscf->tcp_nodelay
- && pc->tcp_nodelay == NGX_TCP_NODELAY_UNSET)
+ && ngx_tcp_nodelay(pc) != NGX_OK)
{
- ngx_log_debug0(NGX_LOG_DEBUG_STREAM, pc->log, 0, "tcp_nodelay");
-
- tcp_nodelay = 1;
-
- if (setsockopt(pc->fd, IPPROTO_TCP, TCP_NODELAY,
- (const void *) &tcp_nodelay, sizeof(int)) == -1)
- {
- ngx_connection_error(pc, ngx_socket_errno,
- "setsockopt(TCP_NODELAY) failed");
- ngx_stream_proxy_next_upstream(s);
- return;
- }
-
- pc->tcp_nodelay = NGX_TCP_NODELAY_SET;
+ ngx_stream_proxy_next_upstream(s);
+ return;
}
pscf = ngx_stream_get_module_srv_conf(s, ngx_stream_proxy_module);
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/stream/ngx_stream_realip_module.c
^
|
@@ -178,9 +178,15 @@
{
ngx_stream_realip_srv_conf_t *rscf = conf;
- ngx_int_t rc;
- ngx_str_t *value;
- ngx_cidr_t *cidr;
+ ngx_int_t rc;
+ ngx_str_t *value;
+ ngx_url_t u;
+ ngx_cidr_t c, *cidr;
+ ngx_uint_t i;
+ struct sockaddr_in *sin;
+#if (NGX_HAVE_INET6)
+ struct sockaddr_in6 *sin6;
+#endif
value = cf->args->elts;
@@ -192,31 +198,78 @@
}
}
- cidr = ngx_array_push(rscf->from);
- if (cidr == NULL) {
- return NGX_CONF_ERROR;
- }
-
#if (NGX_HAVE_UNIX_DOMAIN)
if (ngx_strcmp(value[1].data, "unix:") == 0) {
+ cidr = ngx_array_push(rscf->from);
+ if (cidr == NULL) {
+ return NGX_CONF_ERROR;
+ }
+
cidr->family = AF_UNIX;
return NGX_CONF_OK;
}
#endif
- rc = ngx_ptocidr(&value[1], cidr);
+ rc = ngx_ptocidr(&value[1], &c);
+
+ if (rc != NGX_ERROR) {
+ if (rc == NGX_DONE) {
+ ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
+ "low address bits of %V are meaningless",
+ &value[1]);
+ }
+
+ cidr = ngx_array_push(rscf->from);
+ if (cidr == NULL) {
+ return NGX_CONF_ERROR;
+ }
+
+ *cidr = c;
+
+ return NGX_CONF_OK;
+ }
+
+ ngx_memzero(&u, sizeof(ngx_url_t));
+ u.host = value[1];
+
+ if (ngx_inet_resolve_host(cf->pool, &u) != NGX_OK) {
+ if (u.err) {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "%s in set_real_ip_from \"%V\"",
+ u.err, &u.host);
+ }
- if (rc == NGX_ERROR) {
- ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "invalid parameter \"%V\"",
- &value[1]);
return NGX_CONF_ERROR;
}
- if (rc == NGX_DONE) {
- ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
- "low address bits of %V are meaningless", &value[1]);
+ cidr = ngx_array_push_n(rscf->from, u.naddrs);
+ if (cidr == NULL) {
+ return NGX_CONF_ERROR;
+ }
+
+ ngx_memzero(cidr, u.naddrs * sizeof(ngx_cidr_t));
+
+ for (i = 0; i < u.naddrs; i++) {
+ cidr[i].family = u.addrs[i].sockaddr->sa_family;
+
+ switch (cidr[i].family) {
+
+#if (NGX_HAVE_INET6)
+ case AF_INET6:
+ sin6 = (struct sockaddr_in6 *) u.addrs[i].sockaddr;
+ cidr[i].u.in6.addr = sin6->sin6_addr;
+ ngx_memset(cidr[i].u.in6.mask.s6_addr, 0xff, 16);
+ break;
+#endif
+
+ default: /* AF_INET */
+ sin = (struct sockaddr_in *) u.addrs[i].sockaddr;
+ cidr[i].u.in.addr = sin->sin_addr.s_addr;
+ cidr[i].u.in.mask = 0xffffffff;
+ break;
+ }
}
return NGX_CONF_OK;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.1.tar.gz/src/stream/ngx_stream_ssl_module.c
^
|
@@ -45,6 +45,7 @@
{ ngx_string("TLSv1"), NGX_SSL_TLSv1 },
{ ngx_string("TLSv1.1"), NGX_SSL_TLSv1_1 },
{ ngx_string("TLSv1.2"), NGX_SSL_TLSv1_2 },
+ { ngx_string("TLSv1.3"), NGX_SSL_TLSv1_3 },
{ ngx_null_string, 0 }
};
@@ -351,13 +352,20 @@
static ngx_int_t
ngx_stream_ssl_init_connection(ngx_ssl_t *ssl, ngx_connection_t *c)
{
- ngx_int_t rc;
- ngx_stream_session_t *s;
- ngx_stream_ssl_conf_t *sslcf;
+ ngx_int_t rc;
+ ngx_stream_session_t *s;
+ ngx_stream_ssl_conf_t *sslcf;
+ ngx_stream_core_srv_conf_t *cscf;
s = c->data;
- if (ngx_ssl_create_connection(ssl, c, 0) == NGX_ERROR) {
+ cscf = ngx_stream_get_module_srv_conf(s, ngx_stream_core_module);
+
+ if (cscf->tcp_nodelay && ngx_tcp_nodelay(c) != NGX_OK) {
+ return NGX_ERROR;
+ }
+
+ if (ngx_ssl_create_connection(ssl, c, 0) != NGX_OK) {
return NGX_ERROR;
}
|
|
Added |
_service:download_url:openssl-1.1.0f.tar.gz
^
|