gitextract_yjuswt18/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── question-about-tengine.md │ └── workflows/ │ ├── ci-arm64.yml │ ├── ci.yml │ ├── test-nginx-core.yml │ └── test-ntls.yml ├── .gitignore ├── AUTHORS.te ├── CHANGES ├── CHANGES.cn ├── CHANGES.te ├── LICENSE ├── README.markdown ├── THANKS.te ├── auto/ │ ├── cc/ │ │ ├── acc │ │ ├── bcc │ │ ├── ccc │ │ ├── clang │ │ ├── conf │ │ ├── gcc │ │ ├── icc │ │ ├── msvc │ │ ├── name │ │ ├── owc │ │ └── sunc │ ├── configure │ ├── define │ ├── endianness │ ├── feature │ ├── have │ ├── have_headers │ ├── headers │ ├── include │ ├── init │ ├── install │ ├── lib/ │ │ ├── conf │ │ ├── geoip/ │ │ │ └── conf │ │ ├── google-perftools/ │ │ │ └── conf │ │ ├── jemalloc/ │ │ │ ├── conf │ │ │ └── make │ │ ├── libatomic/ │ │ │ ├── conf │ │ │ └── make │ │ ├── libgd/ │ │ │ └── conf │ │ ├── libxslt/ │ │ │ └── conf │ │ ├── make │ │ ├── openssl/ │ │ │ ├── conf │ │ │ ├── make │ │ │ ├── makefile.bcc │ │ │ └── makefile.msvc │ │ ├── pcre/ │ │ │ ├── conf │ │ │ ├── make │ │ │ ├── makefile.bcc │ │ │ ├── makefile.msvc │ │ │ └── makefile.owc │ │ ├── perl/ │ │ │ ├── conf │ │ │ └── make │ │ └── zlib/ │ │ ├── conf │ │ ├── make │ │ ├── makefile.bcc │ │ ├── makefile.msvc │ │ └── makefile.owc │ ├── make │ ├── module │ ├── modules │ ├── nohave │ ├── options │ ├── os/ │ │ ├── conf │ │ ├── darwin │ │ ├── freebsd │ │ ├── linux │ │ ├── solaris │ │ └── win32 │ ├── sources │ ├── stubs │ ├── summary │ ├── threads │ ├── types/ │ │ ├── sizeof │ │ ├── typedef │ │ ├── uintptr_t │ │ └── value │ └── unix ├── conf/ │ ├── browsers │ ├── fastcgi.conf │ ├── fastcgi_params │ ├── koi-utf │ ├── koi-win │ ├── mime.types │ ├── nginx.conf │ ├── scgi_params │ ├── uwsgi_params │ └── win-utf ├── configure ├── contrib/ │ ├── README │ ├── dso.in │ ├── geo2nginx.pl │ ├── stylechecker.py │ ├── unicode2nginx/ │ │ ├── koi-utf │ │ ├── unicode-to-nginx.pl │ │ └── win-utf │ └── vim/ │ ├── ftdetect/ │ │ └── nginx.vim │ ├── ftplugin/ │ │ └── nginx.vim │ ├── indent/ │ │ └── nginx.vim │ └── syntax/ │ └── nginx.vim ├── docs/ │ ├── core.md │ ├── core_cn.md │ └── modules/ │ ├── TFS_RESTful_API.md │ ├── TFS_RESTful_API_cn.md │ ├── ngx_backtrace_module.md │ ├── ngx_debug_pool.md │ ├── ngx_debug_pool_cn.md │ ├── ngx_dso_module.md │ ├── ngx_dso_module_cn.md │ ├── ngx_http_concat_cn.md │ ├── ngx_http_core_module.md │ ├── ngx_http_core_module_cn.md │ ├── ngx_http_dubbo_module.md │ ├── ngx_http_dubbo_module_cn.md │ ├── ngx_http_limit_req_module.md │ ├── ngx_http_proxy_connect_module.md │ ├── ngx_http_proxy_connect_module_cn.md │ ├── ngx_http_reqstat_module.md │ ├── ngx_http_reqstat_module_cn.md │ ├── ngx_http_spdy_module.md │ ├── ngx_http_spdy_module_cn.md │ ├── ngx_http_ssl_asynchronous_mode.md │ ├── ngx_http_ssl_asynchronous_mode_cn.md │ ├── ngx_http_sysguard.md │ ├── ngx_http_sysguard_cn.md │ ├── ngx_http_tfs_module.md │ ├── ngx_http_tfs_module_cn.md │ ├── ngx_http_trim_filter_module.md │ ├── ngx_http_trim_filter_module_cn.md │ ├── ngx_http_upstream_check_module.md │ ├── ngx_http_upstream_check_module_cn.md │ ├── ngx_http_upstream_consistent_hash_module.md │ ├── ngx_http_upstream_consistent_hash_module_cn.md │ ├── ngx_http_upstream_dynamic.md │ ├── ngx_http_upstream_dynamic_cn.md │ ├── ngx_http_upstream_dyups_module.md │ ├── ngx_http_upstream_iwrr_module.md │ ├── ngx_http_upstream_iwrr_module_cn.md │ ├── ngx_http_upstream_session_sticky_module.md │ ├── ngx_http_upstream_session_sticky_module_cn.md │ ├── ngx_http_upstream_vnswrr_module.md │ ├── ngx_http_upstream_vnswrr_module_cn.md │ ├── ngx_http_user_agent.md │ ├── ngx_limit_upstream.md │ ├── ngx_limit_upstream_cn.md │ ├── ngx_log_pipe.md │ ├── ngx_log_pipe_cn.md │ ├── ngx_procs_module.md │ └── ngx_procs_module_cn.md ├── html/ │ ├── 50x.html │ └── index.html ├── man/ │ └── nginx.8 ├── modules/ │ ├── mod_common/ │ │ ├── config │ │ ├── ngx_comm_encrypt.c │ │ ├── ngx_comm_encrypt.h │ │ ├── ngx_comm_serialize.c │ │ ├── ngx_comm_serialize.h │ │ ├── ngx_comm_shm.c │ │ ├── ngx_comm_shm.h │ │ ├── ngx_comm_string.c │ │ └── ngx_comm_string.h │ ├── mod_config/ │ │ └── config │ ├── mod_dubbo/ │ │ ├── README.md │ │ ├── config │ │ ├── hessian2/ │ │ │ ├── hessian2_ext.cc │ │ │ ├── hessian2_ext.h │ │ │ ├── hessian2_input.cc │ │ │ ├── hessian2_input.h │ │ │ ├── hessian2_output.cc │ │ │ └── hessian2_output.h │ │ ├── ngx_dubbo.c │ │ ├── ngx_dubbo.h │ │ ├── ngx_dubbo_util.cpp │ │ ├── ngx_http_dubbo_module.c │ │ ├── ngx_http_dubbo_module.h │ │ └── utils/ │ │ ├── exceptions.h │ │ ├── objects.cc │ │ ├── objects.h │ │ ├── utils.cc │ │ └── utils.h │ ├── mod_strategy/ │ │ ├── config │ │ ├── ngx_http_strategy_module.c │ │ ├── ngx_proc_strategy_module.c │ │ └── ngx_proc_strategy_module.h │ ├── mod_xudp/ │ │ ├── config │ │ ├── ngx_xudp.c │ │ ├── ngx_xudp.h │ │ ├── ngx_xudp_inc.h │ │ ├── ngx_xudp_internal.h │ │ ├── ngx_xudp_module.c │ │ ├── ngx_xudp_module.h │ │ └── xquic-xdp/ │ │ ├── dispatch_xquic.c │ │ ├── readme.md │ │ ├── test.c │ │ └── xquic_xdp.h │ ├── ngx_backtrace_module/ │ │ ├── config │ │ └── ngx_backtrace_module.c │ ├── ngx_debug_conn/ │ │ ├── README.cn │ │ ├── README.md │ │ ├── config │ │ ├── ngx_http_debug_conn_module.c │ │ └── t/ │ │ └── test.t │ ├── ngx_debug_pool/ │ │ ├── config │ │ ├── debug_pool.gdb │ │ ├── ngx_http_debug_pool_module.c │ │ ├── ngx_palloc.c │ │ ├── ngx_palloc.h │ │ └── t/ │ │ └── test.t │ ├── ngx_debug_timer/ │ │ ├── README.cn │ │ ├── README.md │ │ ├── config │ │ ├── ngx_http_debug_timer_module.c │ │ └── t/ │ │ └── test.t │ ├── ngx_http_concat_module/ │ │ ├── config │ │ └── ngx_http_concat_module.c │ ├── ngx_http_footer_filter_module/ │ │ ├── config │ │ └── ngx_http_footer_filter_module.c │ ├── ngx_http_lua_module/ │ │ ├── .mergify.yml │ │ ├── .travis.yml │ │ ├── README.markdown │ │ ├── config │ │ ├── doc/ │ │ │ └── HttpLuaModule.wiki │ │ ├── dtrace/ │ │ │ └── ngx_lua_provider.d │ │ ├── misc/ │ │ │ └── recv-until-pm/ │ │ │ ├── lib/ │ │ │ │ └── RecvUntil.pm │ │ │ └── t/ │ │ │ └── sanity.t │ │ ├── src/ │ │ │ ├── api/ │ │ │ │ └── ngx_http_lua_api.h │ │ │ ├── ddebug.h │ │ │ ├── ngx_http_lua_accessby.c │ │ │ ├── ngx_http_lua_accessby.h │ │ │ ├── ngx_http_lua_api.c │ │ │ ├── ngx_http_lua_args.c │ │ │ ├── ngx_http_lua_args.h │ │ │ ├── ngx_http_lua_balancer.c │ │ │ ├── ngx_http_lua_balancer.h │ │ │ ├── ngx_http_lua_bodyfilterby.c │ │ │ ├── ngx_http_lua_bodyfilterby.h │ │ │ ├── ngx_http_lua_cache.c │ │ │ ├── ngx_http_lua_cache.h │ │ │ ├── ngx_http_lua_capturefilter.c │ │ │ ├── ngx_http_lua_capturefilter.h │ │ │ ├── ngx_http_lua_clfactory.c │ │ │ ├── ngx_http_lua_clfactory.h │ │ │ ├── ngx_http_lua_common.h │ │ │ ├── ngx_http_lua_config.c │ │ │ ├── ngx_http_lua_config.h │ │ │ ├── ngx_http_lua_consts.c │ │ │ ├── ngx_http_lua_consts.h │ │ │ ├── ngx_http_lua_contentby.c │ │ │ ├── ngx_http_lua_contentby.h │ │ │ ├── ngx_http_lua_control.c │ │ │ ├── ngx_http_lua_control.h │ │ │ ├── ngx_http_lua_coroutine.c │ │ │ ├── ngx_http_lua_coroutine.h │ │ │ ├── ngx_http_lua_ctx.c │ │ │ ├── ngx_http_lua_ctx.h │ │ │ ├── ngx_http_lua_directive.c │ │ │ ├── ngx_http_lua_directive.h │ │ │ ├── ngx_http_lua_exception.c │ │ │ ├── ngx_http_lua_exception.h │ │ │ ├── ngx_http_lua_exitworkerby.c │ │ │ ├── ngx_http_lua_exitworkerby.h │ │ │ ├── ngx_http_lua_headerfilterby.c │ │ │ ├── ngx_http_lua_headerfilterby.h │ │ │ ├── ngx_http_lua_headers.c │ │ │ ├── ngx_http_lua_headers.h │ │ │ ├── ngx_http_lua_headers_in.c │ │ │ ├── ngx_http_lua_headers_in.h │ │ │ ├── ngx_http_lua_headers_out.c │ │ │ ├── ngx_http_lua_headers_out.h │ │ │ ├── ngx_http_lua_initby.c │ │ │ ├── ngx_http_lua_initby.h │ │ │ ├── ngx_http_lua_initworkerby.c │ │ │ ├── ngx_http_lua_initworkerby.h │ │ │ ├── ngx_http_lua_input_filters.c │ │ │ ├── ngx_http_lua_input_filters.h │ │ │ ├── ngx_http_lua_lex.c │ │ │ ├── ngx_http_lua_lex.h │ │ │ ├── ngx_http_lua_log.c │ │ │ ├── ngx_http_lua_log.h │ │ │ ├── ngx_http_lua_log_ringbuf.c │ │ │ ├── ngx_http_lua_log_ringbuf.h │ │ │ ├── ngx_http_lua_logby.c │ │ │ ├── ngx_http_lua_logby.h │ │ │ ├── ngx_http_lua_misc.c │ │ │ ├── ngx_http_lua_misc.h │ │ │ ├── ngx_http_lua_module.c │ │ │ ├── ngx_http_lua_ndk.c │ │ │ ├── ngx_http_lua_ndk.h │ │ │ ├── ngx_http_lua_output.c │ │ │ ├── ngx_http_lua_output.h │ │ │ ├── ngx_http_lua_pcrefix.c │ │ │ ├── ngx_http_lua_pcrefix.h │ │ │ ├── ngx_http_lua_phase.c │ │ │ ├── ngx_http_lua_phase.h │ │ │ ├── ngx_http_lua_pipe.c │ │ │ ├── ngx_http_lua_pipe.h │ │ │ ├── ngx_http_lua_probe.h │ │ │ ├── ngx_http_lua_regex.c │ │ │ ├── ngx_http_lua_regex.h │ │ │ ├── ngx_http_lua_req_body.c │ │ │ ├── ngx_http_lua_req_body.h │ │ │ ├── ngx_http_lua_req_method.c │ │ │ ├── ngx_http_lua_req_method.h │ │ │ ├── ngx_http_lua_rewriteby.c │ │ │ ├── ngx_http_lua_rewriteby.h │ │ │ ├── ngx_http_lua_script.c │ │ │ ├── ngx_http_lua_script.h │ │ │ ├── ngx_http_lua_semaphore.c │ │ │ ├── ngx_http_lua_semaphore.h │ │ │ ├── ngx_http_lua_server_rewriteby.c │ │ │ ├── ngx_http_lua_server_rewriteby.h │ │ │ ├── ngx_http_lua_setby.c │ │ │ ├── ngx_http_lua_setby.h │ │ │ ├── ngx_http_lua_shdict.c │ │ │ ├── ngx_http_lua_shdict.h │ │ │ ├── ngx_http_lua_sleep.c │ │ │ ├── ngx_http_lua_sleep.h │ │ │ ├── ngx_http_lua_socket_tcp.c │ │ │ ├── ngx_http_lua_socket_tcp.h │ │ │ ├── ngx_http_lua_socket_udp.c │ │ │ ├── ngx_http_lua_socket_udp.h │ │ │ ├── ngx_http_lua_ssl.c │ │ │ ├── ngx_http_lua_ssl.h │ │ │ ├── ngx_http_lua_ssl_certby.c │ │ │ ├── ngx_http_lua_ssl_certby.h │ │ │ ├── ngx_http_lua_ssl_client_helloby.c │ │ │ ├── ngx_http_lua_ssl_client_helloby.h │ │ │ ├── ngx_http_lua_ssl_ocsp.c │ │ │ ├── ngx_http_lua_ssl_session_fetchby.c │ │ │ ├── ngx_http_lua_ssl_session_fetchby.h │ │ │ ├── ngx_http_lua_ssl_session_storeby.c │ │ │ ├── ngx_http_lua_ssl_session_storeby.h │ │ │ ├── ngx_http_lua_string.c │ │ │ ├── ngx_http_lua_string.h │ │ │ ├── ngx_http_lua_subrequest.c │ │ │ ├── ngx_http_lua_subrequest.h │ │ │ ├── ngx_http_lua_time.c │ │ │ ├── ngx_http_lua_time.h │ │ │ ├── ngx_http_lua_timer.c │ │ │ ├── ngx_http_lua_timer.h │ │ │ ├── ngx_http_lua_uri.c │ │ │ ├── ngx_http_lua_uri.h │ │ │ ├── ngx_http_lua_uthread.c │ │ │ ├── ngx_http_lua_uthread.h │ │ │ ├── ngx_http_lua_util.c │ │ │ ├── ngx_http_lua_util.h │ │ │ ├── ngx_http_lua_variable.c │ │ │ ├── ngx_http_lua_variable.h │ │ │ ├── ngx_http_lua_worker.c │ │ │ ├── ngx_http_lua_worker.h │ │ │ ├── ngx_http_lua_worker_thread.c │ │ │ └── ngx_http_lua_worker_thread.h │ │ ├── t/ │ │ │ ├── .gitignore │ │ │ ├── 000--init.t │ │ │ ├── 000-sanity.t │ │ │ ├── 001-set.t │ │ │ ├── 002-content.t │ │ │ ├── 003-errors.t │ │ │ ├── 004-require.t │ │ │ ├── 005-exit.t │ │ │ ├── 006-escape.t │ │ │ ├── 007-md5.t │ │ │ ├── 008-today.t │ │ │ ├── 009-log.t │ │ │ ├── 010-request_body.t │ │ │ ├── 011-md5_bin.t │ │ │ ├── 012-now.t │ │ │ ├── 013-base64.t │ │ │ ├── 014-bugs.t │ │ │ ├── 015-status.t │ │ │ ├── 016-resp-header.t │ │ │ ├── 017-exec.t │ │ │ ├── 018-ndk.t │ │ │ ├── 019-const.t │ │ │ ├── 020-subrequest.t │ │ │ ├── 021-cookie-time.t │ │ │ ├── 022-redirect.t │ │ │ ├── 023-rewrite/ │ │ │ │ ├── client-abort.t │ │ │ │ ├── exec.t │ │ │ │ ├── exit.t │ │ │ │ ├── mixed.t │ │ │ │ ├── multi-capture.t │ │ │ │ ├── on-abort.t │ │ │ │ ├── redirect.t │ │ │ │ ├── req-body.t │ │ │ │ ├── req-socket.t │ │ │ │ ├── request_body.t │ │ │ │ ├── sanity.t │ │ │ │ ├── sleep.t │ │ │ │ ├── socket-keepalive.t │ │ │ │ ├── subrequest.t │ │ │ │ ├── tcp-socket-timeout.t │ │ │ │ ├── tcp-socket.t │ │ │ │ ├── unix-socket.t │ │ │ │ ├── uthread-exec.t │ │ │ │ ├── uthread-exit.t │ │ │ │ ├── uthread-redirect.t │ │ │ │ └── uthread-spawn.t │ │ │ ├── 024-access/ │ │ │ │ ├── auth.t │ │ │ │ ├── client-abort.t │ │ │ │ ├── exec.t │ │ │ │ ├── exit.t │ │ │ │ ├── mixed.t │ │ │ │ ├── multi-capture.t │ │ │ │ ├── on-abort.t │ │ │ │ ├── redirect.t │ │ │ │ ├── req-body.t │ │ │ │ ├── request_body.t │ │ │ │ ├── sanity.t │ │ │ │ ├── satisfy.t │ │ │ │ ├── sleep.t │ │ │ │ ├── subrequest.t │ │ │ │ ├── uthread-exec.t │ │ │ │ ├── uthread-exit.t │ │ │ │ ├── uthread-redirect.t │ │ │ │ └── uthread-spawn.t │ │ │ ├── 025-codecache.t │ │ │ ├── 026-mysql.t │ │ │ ├── 027-multi-capture.t │ │ │ ├── 028-req-header.t │ │ │ ├── 029-http-time.t │ │ │ ├── 030-uri-args-with-ctrl.t │ │ │ ├── 030-uri-args.t │ │ │ ├── 031-post-args.t │ │ │ ├── 032-iolist.t │ │ │ ├── 033-ctx.t │ │ │ ├── 034-match.t │ │ │ ├── 035-gmatch.t │ │ │ ├── 036-sub.t │ │ │ ├── 037-gsub.t │ │ │ ├── 038-match-o.t │ │ │ ├── 039-sub-o.t │ │ │ ├── 040-gsub-o.t │ │ │ ├── 041-header-filter.t │ │ │ ├── 042-crc32.t │ │ │ ├── 043-shdict.t │ │ │ ├── 044-req-body.t │ │ │ ├── 045-ngx-var.t │ │ │ ├── 046-hmac.t │ │ │ ├── 047-match-jit.t │ │ │ ├── 048-match-dfa.t │ │ │ ├── 049-gmatch-jit.t │ │ │ ├── 050-gmatch-dfa.t │ │ │ ├── 051-sub-jit.t │ │ │ ├── 052-sub-dfa.t │ │ │ ├── 053-gsub-jit.t │ │ │ ├── 054-gsub-dfa.t │ │ │ ├── 055-subreq-vars.t │ │ │ ├── 056-flush.t │ │ │ ├── 057-flush-timeout.t │ │ │ ├── 058-tcp-socket.t │ │ │ ├── 059-unix-socket.t │ │ │ ├── 060-lua-memcached.t │ │ │ ├── 061-lua-redis.t │ │ │ ├── 062-count.t │ │ │ ├── 063-abort.t │ │ │ ├── 064-pcall.t │ │ │ ├── 065-tcp-socket-timeout.t │ │ │ ├── 066-socket-receiveuntil.t │ │ │ ├── 067-req-socket.t │ │ │ ├── 068-socket-keepalive.t │ │ │ ├── 069-null.t │ │ │ ├── 070-sha1.t │ │ │ ├── 071-idle-socket.t │ │ │ ├── 072-conditional-get.t │ │ │ ├── 073-backtrace.t │ │ │ ├── 074-prefix-var.t │ │ │ ├── 075-logby.t │ │ │ ├── 076-no-postpone.t │ │ │ ├── 077-sleep.t │ │ │ ├── 078-hup-vars.t │ │ │ ├── 079-unused-directives.t │ │ │ ├── 080-hup-shdict.t │ │ │ ├── 081-bytecode.t │ │ │ ├── 082-body-filter-2.t │ │ │ ├── 082-body-filter.t │ │ │ ├── 083-bad-sock-self.t │ │ │ ├── 084-inclusive-receiveuntil.t │ │ │ ├── 085-if.t │ │ │ ├── 086-init-by.t │ │ │ ├── 087-udp-socket.t │ │ │ ├── 088-req-method.t │ │ │ ├── 089-phase.t │ │ │ ├── 090-log-socket-errors.t │ │ │ ├── 091-coroutine.t │ │ │ ├── 092-eof.t │ │ │ ├── 093-uthread-spawn.t │ │ │ ├── 094-uthread-exit.t │ │ │ ├── 095-uthread-exec.t │ │ │ ├── 096-uthread-redirect.t │ │ │ ├── 097-uthread-rewrite.t │ │ │ ├── 098-uthread-wait.t │ │ │ ├── 099-c-api.t │ │ │ ├── 100-client-abort.t │ │ │ ├── 101-on-abort.t │ │ │ ├── 102-req-start-time.t │ │ │ ├── 103-req-http-ver.t │ │ │ ├── 104-req-raw-header.t │ │ │ ├── 105-pressure.t │ │ │ ├── 106-timer.t │ │ │ ├── 107-timer-errors.t │ │ │ ├── 108-timer-safe.t │ │ │ ├── 109-timer-hup.t │ │ │ ├── 110-etag.t │ │ │ ├── 111-req-header-ua.t │ │ │ ├── 112-req-header-conn.t │ │ │ ├── 113-req-header-cookie.t │ │ │ ├── 114-config.t │ │ │ ├── 115-quote-sql-str.t │ │ │ ├── 116-raw-req-socket.t │ │ │ ├── 117-raw-req-socket-timeout.t │ │ │ ├── 118-use-default-type.t │ │ │ ├── 119-config-prefix.t │ │ │ ├── 120-re-find.t │ │ │ ├── 121-version.t │ │ │ ├── 122-worker-2.t │ │ │ ├── 122-worker-3.t │ │ │ ├── 122-worker.t │ │ │ ├── 123-lua-path.t │ │ │ ├── 124-init-worker.t │ │ │ ├── 125-configure-args.t │ │ │ ├── 126-shdict-frag.t │ │ │ ├── 127-uthread-kill.t │ │ │ ├── 128-duplex-tcp-socket.t │ │ │ ├── 129-ssl-socket.t │ │ │ ├── 130-internal-api.t │ │ │ ├── 131-duplex-req-socket.t │ │ │ ├── 132-lua-blocks.t │ │ │ ├── 133-worker-count.t │ │ │ ├── 134-worker-count-5.t │ │ │ ├── 135-worker-id.t │ │ │ ├── 136-timer-counts.t │ │ │ ├── 137-req-misc.t │ │ │ ├── 138-balancer.t │ │ │ ├── 139-ssl-cert-by.t │ │ │ ├── 140-ssl-c-api.t │ │ │ ├── 141-luajit.t │ │ │ ├── 142-ssl-session-store.t │ │ │ ├── 143-ssl-session-fetch.t │ │ │ ├── 144-shdict-incr-init.t │ │ │ ├── 145-shdict-list.t │ │ │ ├── 146-malloc-trim.t │ │ │ ├── 147-tcp-socket-timeouts.t │ │ │ ├── 148-fake-shm-zone.t │ │ │ ├── 149-hup-fake-shm-zone.t │ │ │ ├── 150-fake-delayed-load.t │ │ │ ├── 151-initby-hup.t │ │ │ ├── 152-timer-every.t │ │ │ ├── 153-semaphore-hup.t │ │ │ ├── 154-semaphore.t │ │ │ ├── 155-tls13.t │ │ │ ├── 156-slow-network.t │ │ │ ├── 157-socket-keepalive-hup.t │ │ │ ├── 158-global-var.t │ │ │ ├── 159-sa-restart.t │ │ │ ├── 160-disable-init-by-lua.t │ │ │ ├── 161-load-resty-core.t │ │ │ ├── 162-exit-worker.t │ │ │ ├── 162-fake-merge.t │ │ │ ├── 162-socket-tls-handshake.t │ │ │ ├── 162-static-module-location.t │ │ │ ├── 163-exit-worker-hup.t │ │ │ ├── 163-signal.t │ │ │ ├── 164-say.t │ │ │ ├── 165-thread-cache.t │ │ │ ├── 166-ssl-client-hello.t │ │ │ ├── 166-worker-thread.t │ │ │ ├── 167-server-rewrite.t │ │ │ ├── 168-tcp-socket-bind.t │ │ │ ├── 185-ngx-buf-double-free.t │ │ │ ├── 186-cosocket-busy-bufs.t │ │ │ ├── StapThread.pm │ │ │ ├── cert/ │ │ │ │ ├── dst-ca.crt │ │ │ │ ├── equifax.crt │ │ │ │ ├── mtls_ca.crt │ │ │ │ ├── mtls_ca.key │ │ │ │ ├── mtls_cert_gen/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── generate.sh │ │ │ │ │ ├── mtls_ca.json │ │ │ │ │ ├── mtls_client.json │ │ │ │ │ ├── mtls_server.json │ │ │ │ │ └── profile.json │ │ │ │ ├── mtls_client.crt │ │ │ │ ├── mtls_client.key │ │ │ │ ├── mtls_server.crt │ │ │ │ ├── mtls_server.key │ │ │ │ ├── test.crl │ │ │ │ ├── test.crt │ │ │ │ ├── test.key │ │ │ │ ├── test2.crt │ │ │ │ ├── test2.key │ │ │ │ ├── test_ecdsa.crt │ │ │ │ ├── test_ecdsa.key │ │ │ │ ├── test_passphrase.crt │ │ │ │ └── test_passphrase.key │ │ │ ├── data/ │ │ │ │ ├── fake-delayed-load-module/ │ │ │ │ │ ├── config │ │ │ │ │ └── ngx_http_lua_fake_delayed_load_module.c │ │ │ │ ├── fake-merge-module/ │ │ │ │ │ ├── config │ │ │ │ │ └── ngx_http_fake_merge_module.c │ │ │ │ ├── fake-module/ │ │ │ │ │ ├── config │ │ │ │ │ └── ngx_http_fake_module.c │ │ │ │ └── fake-shm-module/ │ │ │ │ ├── config │ │ │ │ └── ngx_http_lua_fake_shm_module.c │ │ │ └── lib/ │ │ │ ├── CRC32.lua │ │ │ ├── Memcached.lua │ │ │ ├── Redis.lua │ │ │ └── ljson.lua │ │ ├── tapset/ │ │ │ └── ngx_lua.stp │ │ ├── util/ │ │ │ ├── build-with-dd.sh │ │ │ ├── build-without-ssl.sh │ │ │ ├── build.sh │ │ │ ├── fix-comments │ │ │ ├── gen-lexer-c │ │ │ ├── nc_server.py │ │ │ ├── ngx-links │ │ │ ├── releng │ │ │ ├── retab │ │ │ ├── revim │ │ │ ├── run_test.sh │ │ │ └── update-readme.sh │ │ └── valgrind.suppress │ ├── ngx_http_proxy_connect_module/ │ │ ├── config │ │ ├── ngx_http_proxy_connect_module.c │ │ └── t/ │ │ ├── http_proxy_connect.t │ │ ├── http_proxy_connect_lua.t │ │ ├── http_proxy_connect_resolve_variables.t │ │ └── http_proxy_connect_timeout.t │ ├── ngx_http_reqstat_module/ │ │ ├── config │ │ ├── ngx_http_reqstat.h │ │ └── ngx_http_reqstat_module.c │ ├── ngx_http_slice_module/ │ │ ├── config │ │ └── ngx_http_slice_module.c │ ├── ngx_http_sysguard_module/ │ │ ├── config │ │ └── ngx_http_sysguard_module.c │ ├── ngx_http_tfs_module/ │ │ ├── config │ │ ├── ngx_http_connection_pool.c │ │ ├── ngx_http_connection_pool.h │ │ ├── ngx_http_tfs.c │ │ ├── ngx_http_tfs.h │ │ ├── ngx_http_tfs_block_cache.c │ │ ├── ngx_http_tfs_block_cache.h │ │ ├── ngx_http_tfs_data_server_message.c │ │ ├── ngx_http_tfs_data_server_message.h │ │ ├── ngx_http_tfs_duplicate.c │ │ ├── ngx_http_tfs_duplicate.h │ │ ├── ngx_http_tfs_errno.h │ │ ├── ngx_http_tfs_json.c │ │ ├── ngx_http_tfs_json.h │ │ ├── ngx_http_tfs_local_block_cache.c │ │ ├── ngx_http_tfs_local_block_cache.h │ │ ├── ngx_http_tfs_meta_server_message.c │ │ ├── ngx_http_tfs_meta_server_message.h │ │ ├── ngx_http_tfs_module.c │ │ ├── ngx_http_tfs_name_server_message.c │ │ ├── ngx_http_tfs_name_server_message.h │ │ ├── ngx_http_tfs_peer_connection.c │ │ ├── ngx_http_tfs_peer_connection.h │ │ ├── ngx_http_tfs_protocol.h │ │ ├── ngx_http_tfs_raw_fsname.c │ │ ├── ngx_http_tfs_raw_fsname.h │ │ ├── ngx_http_tfs_rc_server_info.c │ │ ├── ngx_http_tfs_rc_server_info.h │ │ ├── ngx_http_tfs_rc_server_message.c │ │ ├── ngx_http_tfs_rc_server_message.h │ │ ├── ngx_http_tfs_remote_block_cache.c │ │ ├── ngx_http_tfs_remote_block_cache.h │ │ ├── ngx_http_tfs_restful.c │ │ ├── ngx_http_tfs_restful.h │ │ ├── ngx_http_tfs_root_server_message.c │ │ ├── ngx_http_tfs_root_server_message.h │ │ ├── ngx_http_tfs_serialization.c │ │ ├── ngx_http_tfs_serialization.h │ │ ├── ngx_http_tfs_server_handler.c │ │ ├── ngx_http_tfs_server_handler.h │ │ ├── ngx_http_tfs_tair_helper.c │ │ ├── ngx_http_tfs_tair_helper.h │ │ ├── ngx_http_tfs_timers.c │ │ ├── ngx_http_tfs_timers.h │ │ ├── ngx_tfs_common.c │ │ └── ngx_tfs_common.h │ ├── ngx_http_trim_filter_module/ │ │ ├── config │ │ └── ngx_http_trim_filter_module.c │ ├── ngx_http_upstream_check_module/ │ │ ├── config │ │ ├── ngx_http_upstream_check_module.c │ │ └── ngx_http_upstream_check_module.h │ ├── ngx_http_upstream_consistent_hash_module/ │ │ ├── config │ │ └── ngx_http_upstream_consistent_hash_module.c │ ├── ngx_http_upstream_dynamic_module/ │ │ ├── config │ │ └── ngx_http_upstream_dynamic_module.c │ ├── ngx_http_upstream_dyups_module/ │ │ ├── config │ │ ├── ngx_http_dyups.h │ │ ├── ngx_http_dyups_lua.c │ │ ├── ngx_http_dyups_lua.h │ │ └── ngx_http_dyups_module.c │ ├── ngx_http_upstream_iwrr_module/ │ │ ├── config │ │ └── ngx_http_upstream_iwrr_module.c │ ├── ngx_http_upstream_keepalive_module/ │ │ ├── config │ │ ├── ngx_http_upstream_keepalive_module.c │ │ ├── ngx_http_upstream_keepalive_module.md │ │ └── proxy_keepalive.t │ ├── ngx_http_upstream_session_sticky_module/ │ │ ├── config │ │ └── ngx_http_upstream_session_sticky_module.c │ ├── ngx_http_upstream_vnswrr_module/ │ │ ├── config │ │ └── ngx_http_upstream_vnswrr_module.c │ ├── ngx_http_user_agent_module/ │ │ ├── config │ │ └── ngx_http_user_agent_module.c │ ├── ngx_http_xquic_module/ │ │ ├── README.md │ │ ├── config │ │ ├── ngx_http_v3_stream.c │ │ ├── ngx_http_v3_stream.h │ │ ├── ngx_http_xquic.c │ │ ├── ngx_http_xquic.h │ │ ├── ngx_http_xquic_filter_module.c │ │ ├── ngx_http_xquic_module.c │ │ ├── ngx_http_xquic_module.h │ │ ├── ngx_xquic.c │ │ ├── ngx_xquic.h │ │ ├── ngx_xquic_intercom.c │ │ ├── ngx_xquic_intercom.h │ │ ├── ngx_xquic_recv.c │ │ ├── ngx_xquic_recv.h │ │ ├── ngx_xquic_send.c │ │ └── ngx_xquic_send.h │ ├── ngx_ingress_module/ │ │ ├── config │ │ ├── ingress.pb-c.c │ │ ├── ingress.pb-c.h │ │ ├── ingress.proto │ │ ├── ngx_ingress_module.c │ │ ├── ngx_ingress_module.h │ │ ├── ngx_ingress_protobuf.c │ │ └── ngx_ingress_protobuf.h │ ├── ngx_multi_upstream_module/ │ │ ├── config │ │ ├── ngx_http_multi_upstream.c │ │ ├── ngx_http_multi_upstream_module.c │ │ ├── ngx_http_multi_upstream_module.h │ │ ├── ngx_multi_upstream_module.c │ │ ├── ngx_multi_upstream_module.h │ │ ├── ngx_stream_multi_upstream_module.c │ │ └── ngx_stream_multi_upstream_module.h │ ├── ngx_slab_stat/ │ │ ├── README.cn │ │ ├── README.md │ │ ├── config │ │ ├── ngx_http_slab_stat_module.c │ │ ├── slab_stat.patch │ │ └── t/ │ │ └── test.t │ └── ngx_tongsuo_ntls/ │ ├── README.md │ ├── config │ └── t/ │ ├── CA.pm │ ├── ntls.t │ ├── ntls_certificate_chain.t │ ├── ntls_proxy.t │ ├── ntls_session_cache.t │ ├── ntls_sni.t │ ├── ntls_sni_sessions.t │ ├── ntls_variables.t │ ├── ntls_verify_client.t │ ├── ntls_verify_depth.t │ ├── stream_ntls.t │ ├── stream_ntls_proxy.t │ ├── stream_ntls_session_cache.t │ ├── stream_ntls_variables.t │ ├── stream_ntls_verify_client.t │ └── stream_sni.t ├── packages/ │ └── debian/ │ ├── README.Debian │ ├── README.md │ ├── README.source │ ├── changelog │ ├── compat │ ├── control │ ├── copyright │ ├── docs │ ├── files │ ├── init.d │ ├── logrotate │ ├── nginx-debug.install │ ├── nginx.conf │ ├── nginx.default │ ├── nginx.vh.default.conf │ ├── nginx.vh.example_ssl.conf │ ├── rules │ ├── source/ │ │ └── format │ ├── tengine.debhelper.log │ ├── tengine.dirs │ ├── tengine.doc-base.EX │ ├── tengine.docs │ ├── tengine.postinst │ ├── tengine.postinst.debhelper │ ├── tengine.postrm │ ├── tengine.postrm.debhelper │ ├── tengine.preinst │ ├── tengine.prerm │ ├── tengine.prerm.debhelper │ └── tengine.substvars ├── src/ │ ├── core/ │ │ ├── nginx.c │ │ ├── nginx.h │ │ ├── ngx_array.c │ │ ├── ngx_array.h │ │ ├── ngx_buf.c │ │ ├── ngx_buf.h │ │ ├── ngx_conf_file.c │ │ ├── ngx_conf_file.h │ │ ├── ngx_config.h │ │ ├── ngx_connection.c │ │ ├── ngx_connection.h │ │ ├── ngx_core.h │ │ ├── ngx_cpuinfo.c │ │ ├── ngx_crc.h │ │ ├── ngx_crc32.c │ │ ├── ngx_crc32.h │ │ ├── ngx_crypt.c │ │ ├── ngx_crypt.h │ │ ├── ngx_cycle.c │ │ ├── ngx_cycle.h │ │ ├── ngx_file.c │ │ ├── ngx_file.h │ │ ├── ngx_hash.c │ │ ├── ngx_hash.h │ │ ├── ngx_inet.c │ │ ├── ngx_inet.h │ │ ├── ngx_list.c │ │ ├── ngx_list.h │ │ ├── ngx_log.c │ │ ├── ngx_log.h │ │ ├── ngx_md5.c │ │ ├── ngx_md5.h │ │ ├── ngx_module.c │ │ ├── ngx_module.h │ │ ├── ngx_murmurhash.c │ │ ├── ngx_murmurhash.h │ │ ├── ngx_open_file_cache.c │ │ ├── ngx_open_file_cache.h │ │ ├── ngx_output_chain.c │ │ ├── ngx_palloc.c │ │ ├── ngx_palloc.h │ │ ├── ngx_parse.c │ │ ├── ngx_parse.h │ │ ├── ngx_parse_time.c │ │ ├── ngx_parse_time.h │ │ ├── ngx_proxy_protocol.c │ │ ├── ngx_proxy_protocol.h │ │ ├── ngx_queue.c │ │ ├── ngx_queue.h │ │ ├── ngx_radix_tree.c │ │ ├── ngx_radix_tree.h │ │ ├── ngx_rbtree.c │ │ ├── ngx_rbtree.h │ │ ├── ngx_regex.c │ │ ├── ngx_regex.h │ │ ├── ngx_resolver.c │ │ ├── ngx_resolver.h │ │ ├── ngx_rwlock.c │ │ ├── ngx_rwlock.h │ │ ├── ngx_segment_tree.c │ │ ├── ngx_segment_tree.h │ │ ├── ngx_sha1.c │ │ ├── ngx_sha1.h │ │ ├── ngx_shmtx.c │ │ ├── ngx_shmtx.h │ │ ├── ngx_slab.c │ │ ├── ngx_slab.h │ │ ├── ngx_spinlock.c │ │ ├── ngx_string.c │ │ ├── ngx_string.h │ │ ├── ngx_syslog.c │ │ ├── ngx_syslog.h │ │ ├── ngx_thread_pool.c │ │ ├── ngx_thread_pool.h │ │ ├── ngx_times.c │ │ ├── ngx_times.h │ │ ├── ngx_trie.c │ │ └── ngx_trie.h │ ├── event/ │ │ ├── modules/ │ │ │ ├── ngx_aio_module.c │ │ │ ├── ngx_devpoll_module.c │ │ │ ├── ngx_epoll_module.c │ │ │ ├── ngx_eventport_module.c │ │ │ ├── ngx_iocp_module.c │ │ │ ├── ngx_iocp_module.h │ │ │ ├── ngx_kqueue_module.c │ │ │ ├── ngx_poll_module.c │ │ │ ├── ngx_rtsig_module.c │ │ │ ├── ngx_select_module.c │ │ │ ├── ngx_win32_poll_module.c │ │ │ └── ngx_win32_select_module.c │ │ ├── ngx_dlopen.h │ │ ├── ngx_event.c │ │ ├── ngx_event.h │ │ ├── ngx_event_accept.c │ │ ├── ngx_event_acceptex.c │ │ ├── ngx_event_connect.c │ │ ├── ngx_event_connect.h │ │ ├── ngx_event_connectex.c │ │ ├── ngx_event_openssl.c │ │ ├── ngx_event_openssl.h │ │ ├── ngx_event_openssl_stapling.c │ │ ├── ngx_event_pipe.c │ │ ├── ngx_event_pipe.h │ │ ├── ngx_event_posted.c │ │ ├── ngx_event_posted.h │ │ ├── ngx_event_timer.c │ │ ├── ngx_event_timer.h │ │ ├── ngx_event_udp.c │ │ ├── ngx_event_udp.h │ │ ├── ngx_event_udpv2.c │ │ └── ngx_event_udpv2.h │ ├── http/ │ │ ├── modules/ │ │ │ ├── ngx_http_access_module.c │ │ │ ├── ngx_http_addition_filter_module.c │ │ │ ├── ngx_http_auth_basic_module.c │ │ │ ├── ngx_http_auth_request_module.c │ │ │ ├── ngx_http_autoindex_module.c │ │ │ ├── ngx_http_browser_module.c │ │ │ ├── ngx_http_charset_filter_module.c │ │ │ ├── ngx_http_chunked_filter_module.c │ │ │ ├── ngx_http_dav_module.c │ │ │ ├── ngx_http_degradation_module.c │ │ │ ├── ngx_http_empty_gif_module.c │ │ │ ├── ngx_http_fastcgi_module.c │ │ │ ├── ngx_http_flv_module.c │ │ │ ├── ngx_http_geo_module.c │ │ │ ├── ngx_http_geoip_module.c │ │ │ ├── ngx_http_grpc_module.c │ │ │ ├── ngx_http_gunzip_filter_module.c │ │ │ ├── ngx_http_gzip_filter_module.c │ │ │ ├── ngx_http_gzip_static_module.c │ │ │ ├── ngx_http_headers_filter_module.c │ │ │ ├── ngx_http_image_filter_module.c │ │ │ ├── ngx_http_index_module.c │ │ │ ├── ngx_http_limit_conn_module.c │ │ │ ├── ngx_http_limit_req_module.c │ │ │ ├── ngx_http_log_module.c │ │ │ ├── ngx_http_map_module.c │ │ │ ├── ngx_http_memcached_module.c │ │ │ ├── ngx_http_mirror_module.c │ │ │ ├── ngx_http_mp4_module.c │ │ │ ├── ngx_http_not_modified_filter_module.c │ │ │ ├── ngx_http_proxy_module.c │ │ │ ├── ngx_http_random_index_module.c │ │ │ ├── ngx_http_range_filter_module.c │ │ │ ├── ngx_http_realip_module.c │ │ │ ├── ngx_http_referer_module.c │ │ │ ├── ngx_http_rewrite_module.c │ │ │ ├── ngx_http_scgi_module.c │ │ │ ├── ngx_http_secure_link_module.c │ │ │ ├── ngx_http_slice_filter_module.c │ │ │ ├── ngx_http_split_clients_module.c │ │ │ ├── ngx_http_ssi_filter_module.c │ │ │ ├── ngx_http_ssi_filter_module.h │ │ │ ├── ngx_http_ssl_module.c │ │ │ ├── ngx_http_ssl_module.h │ │ │ ├── ngx_http_static_module.c │ │ │ ├── ngx_http_stub_status_module.c │ │ │ ├── ngx_http_sub_filter_module.c │ │ │ ├── ngx_http_try_files_module.c │ │ │ ├── ngx_http_upstream_hash_module.c │ │ │ ├── ngx_http_upstream_ip_hash_module.c │ │ │ ├── ngx_http_upstream_keepalive_module.c │ │ │ ├── ngx_http_upstream_least_conn_module.c │ │ │ ├── ngx_http_upstream_random_module.c │ │ │ ├── ngx_http_upstream_zone_module.c │ │ │ ├── ngx_http_userid_filter_module.c │ │ │ ├── ngx_http_uwsgi_module.c │ │ │ ├── ngx_http_xslt_filter_module.c │ │ │ └── perl/ │ │ │ ├── Makefile.PL │ │ │ ├── nginx.pm │ │ │ ├── nginx.xs │ │ │ ├── ngx_http_perl_module.c │ │ │ ├── ngx_http_perl_module.h │ │ │ └── typemap │ │ ├── ngx_http.c │ │ ├── ngx_http.h │ │ ├── ngx_http_cache.h │ │ ├── ngx_http_config.h │ │ ├── ngx_http_copy_filter_module.c │ │ ├── ngx_http_core_module.c │ │ ├── ngx_http_core_module.h │ │ ├── ngx_http_file_cache.c │ │ ├── ngx_http_header_filter_module.c │ │ ├── ngx_http_huff_decode.c │ │ ├── ngx_http_huff_encode.c │ │ ├── ngx_http_parse.c │ │ ├── ngx_http_postpone_filter_module.c │ │ ├── ngx_http_request.c │ │ ├── ngx_http_request.h │ │ ├── ngx_http_request_body.c │ │ ├── ngx_http_script.c │ │ ├── ngx_http_script.h │ │ ├── ngx_http_special_response.c │ │ ├── ngx_http_upstream.c │ │ ├── ngx_http_upstream.h │ │ ├── ngx_http_upstream_round_robin.c │ │ ├── ngx_http_upstream_round_robin.h │ │ ├── ngx_http_variables.c │ │ ├── ngx_http_variables.h │ │ ├── ngx_http_write_filter_module.c │ │ └── v2/ │ │ ├── ngx_http_v2.c │ │ ├── ngx_http_v2.h │ │ ├── ngx_http_v2_encode.c │ │ ├── ngx_http_v2_filter_module.c │ │ ├── ngx_http_v2_module.c │ │ ├── ngx_http_v2_module.h │ │ └── ngx_http_v2_table.c │ ├── mail/ │ │ ├── ngx_mail.c │ │ ├── ngx_mail.h │ │ ├── ngx_mail_auth_http_module.c │ │ ├── ngx_mail_core_module.c │ │ ├── ngx_mail_handler.c │ │ ├── ngx_mail_imap_handler.c │ │ ├── ngx_mail_imap_module.c │ │ ├── ngx_mail_imap_module.h │ │ ├── ngx_mail_parse.c │ │ ├── ngx_mail_pop3_handler.c │ │ ├── ngx_mail_pop3_module.c │ │ ├── ngx_mail_pop3_module.h │ │ ├── ngx_mail_proxy_module.c │ │ ├── ngx_mail_realip_module.c │ │ ├── ngx_mail_smtp_handler.c │ │ ├── ngx_mail_smtp_module.c │ │ ├── ngx_mail_smtp_module.h │ │ ├── ngx_mail_ssl_module.c │ │ └── ngx_mail_ssl_module.h │ ├── misc/ │ │ ├── ngx_cpp_test_module.cpp │ │ └── ngx_google_perftools_module.c │ ├── os/ │ │ └── unix/ │ │ ├── ngx_aio_read.c │ │ ├── ngx_aio_read_chain.c │ │ ├── ngx_aio_write.c │ │ ├── ngx_aio_write_chain.c │ │ ├── ngx_alloc.c │ │ ├── ngx_alloc.h │ │ ├── ngx_atomic.h │ │ ├── ngx_channel.c │ │ ├── ngx_channel.h │ │ ├── ngx_daemon.c │ │ ├── ngx_darwin.h │ │ ├── ngx_darwin_config.h │ │ ├── ngx_darwin_init.c │ │ ├── ngx_darwin_sendfile_chain.c │ │ ├── ngx_dlopen.c │ │ ├── ngx_dlopen.h │ │ ├── ngx_errno.c │ │ ├── ngx_errno.h │ │ ├── ngx_file_aio_read.c │ │ ├── ngx_files.c │ │ ├── ngx_files.h │ │ ├── ngx_freebsd.h │ │ ├── ngx_freebsd_config.h │ │ ├── ngx_freebsd_init.c │ │ ├── ngx_freebsd_sendfile_chain.c │ │ ├── ngx_gcc_atomic_amd64.h │ │ ├── ngx_gcc_atomic_ppc.h │ │ ├── ngx_gcc_atomic_sparc64.h │ │ ├── ngx_gcc_atomic_x86.h │ │ ├── ngx_linux.h │ │ ├── ngx_linux_aio_read.c │ │ ├── ngx_linux_config.h │ │ ├── ngx_linux_init.c │ │ ├── ngx_linux_sendfile_chain.c │ │ ├── ngx_os.h │ │ ├── ngx_pipe.c │ │ ├── ngx_pipe.h │ │ ├── ngx_posix_config.h │ │ ├── ngx_posix_init.c │ │ ├── ngx_process.c │ │ ├── ngx_process.h │ │ ├── ngx_process_cycle.c │ │ ├── ngx_process_cycle.h │ │ ├── ngx_readv_chain.c │ │ ├── ngx_recv.c │ │ ├── ngx_send.c │ │ ├── ngx_setaffinity.c │ │ ├── ngx_setaffinity.h │ │ ├── ngx_setproctitle.c │ │ ├── ngx_setproctitle.h │ │ ├── ngx_shmem.c │ │ ├── ngx_shmem.h │ │ ├── ngx_socket.c │ │ ├── ngx_socket.h │ │ ├── ngx_solaris.h │ │ ├── ngx_solaris_config.h │ │ ├── ngx_solaris_init.c │ │ ├── ngx_solaris_sendfilev_chain.c │ │ ├── ngx_sunpro_amd64.il │ │ ├── ngx_sunpro_atomic_sparc64.h │ │ ├── ngx_sunpro_sparc64.il │ │ ├── ngx_sunpro_x86.il │ │ ├── ngx_sysinfo.c │ │ ├── ngx_sysinfo.h │ │ ├── ngx_thread.h │ │ ├── ngx_thread_cond.c │ │ ├── ngx_thread_id.c │ │ ├── ngx_thread_mutex.c │ │ ├── ngx_time.c │ │ ├── ngx_time.h │ │ ├── ngx_udp_recv.c │ │ ├── ngx_udp_send.c │ │ ├── ngx_udp_sendmsg_chain.c │ │ ├── ngx_user.c │ │ ├── ngx_user.h │ │ └── ngx_writev_chain.c │ ├── proc/ │ │ ├── ngx_proc.c │ │ └── ngx_proc.h │ └── stream/ │ ├── ngx_stream.c │ ├── ngx_stream.h │ ├── ngx_stream_access_module.c │ ├── ngx_stream_core_module.c │ ├── ngx_stream_geo_module.c │ ├── ngx_stream_geoip_module.c │ ├── ngx_stream_handler.c │ ├── ngx_stream_limit_conn_module.c │ ├── ngx_stream_log_module.c │ ├── ngx_stream_map_module.c │ ├── ngx_stream_proxy_module.c │ ├── ngx_stream_realip_module.c │ ├── ngx_stream_return_module.c │ ├── ngx_stream_script.c │ ├── ngx_stream_script.h │ ├── ngx_stream_set_module.c │ ├── ngx_stream_split_clients_module.c │ ├── ngx_stream_ssl_module.c │ ├── ngx_stream_ssl_module.h │ ├── ngx_stream_ssl_preread_module.c │ ├── ngx_stream_upstream.c │ ├── ngx_stream_upstream.h │ ├── ngx_stream_upstream_hash_module.c │ ├── ngx_stream_upstream_least_conn_module.c │ ├── ngx_stream_upstream_random_module.c │ ├── ngx_stream_upstream_round_robin.c │ ├── ngx_stream_upstream_round_robin.h │ ├── ngx_stream_upstream_zone_module.c │ ├── ngx_stream_variables.c │ ├── ngx_stream_variables.h │ └── ngx_stream_write_filter_module.c └── tests/ ├── nginx-tests/ │ ├── nginx-tests/ │ │ ├── LICENSE │ │ ├── README │ │ ├── access.t │ │ ├── access_log.t │ │ ├── access_log_variables.t │ │ ├── addition.t │ │ ├── addition_buffered.t │ │ ├── auth_basic.t │ │ ├── auth_delay.t │ │ ├── auth_request.t │ │ ├── auth_request_satisfy.t │ │ ├── auth_request_set.t │ │ ├── autoindex.t │ │ ├── autoindex_format.t │ │ ├── binary_upgrade.t │ │ ├── body.t │ │ ├── body_chunked.t │ │ ├── charset.t │ │ ├── charset_gzip_static.t │ │ ├── config_dump.t │ │ ├── dav.t │ │ ├── dav_chunked.t │ │ ├── dav_utf8.t │ │ ├── debug_connection.t │ │ ├── debug_connection_syslog.t │ │ ├── debug_connection_unix.t │ │ ├── empty_gif.t │ │ ├── error_log.t │ │ ├── fastcgi.t │ │ ├── fastcgi_body.t │ │ ├── fastcgi_body2.t │ │ ├── fastcgi_buffering.t │ │ ├── fastcgi_cache.t │ │ ├── fastcgi_extra_data.t │ │ ├── fastcgi_header_params.t │ │ ├── fastcgi_keepalive.t │ │ ├── fastcgi_merge_params.t │ │ ├── fastcgi_merge_params2.t │ │ ├── fastcgi_request_buffering.t │ │ ├── fastcgi_request_buffering_chunked.t │ │ ├── fastcgi_split.t │ │ ├── fastcgi_unix.t │ │ ├── fastcgi_variables.t │ │ ├── geo.t │ │ ├── geo_binary.t │ │ ├── geo_ipv6.t │ │ ├── geo_unix.t │ │ ├── geoip.t │ │ ├── grpc.t │ │ ├── grpc_next_upstream.t │ │ ├── grpc_pass.t │ │ ├── grpc_request_buffering.t │ │ ├── grpc_ssl.t │ │ ├── gunzip.t │ │ ├── gunzip_memcached.t │ │ ├── gunzip_perl.t │ │ ├── gunzip_ssi.t │ │ ├── gunzip_static.t │ │ ├── gzip.t │ │ ├── gzip_flush.t │ │ ├── h2.t │ │ ├── h2_absolute_redirect.t │ │ ├── h2_auth_request.t │ │ ├── h2_error_page.t │ │ ├── h2_fastcgi_request_buffering.t │ │ ├── h2_headers.t │ │ ├── h2_keepalive.t │ │ ├── h2_limit_conn.t │ │ ├── h2_limit_req.t │ │ ├── h2_priority.t │ │ ├── h2_proxy_cache.t │ │ ├── h2_proxy_max_temp_file_size.t │ │ ├── h2_proxy_protocol.t │ │ ├── h2_proxy_request_buffering.t │ │ ├── h2_proxy_request_buffering_redirect.t │ │ ├── h2_proxy_request_buffering_ssl.t │ │ ├── h2_proxy_ssl.t │ │ ├── h2_request_body.t │ │ ├── h2_request_body_extra.t │ │ ├── h2_request_body_js.t │ │ ├── h2_request_body_preread.t │ │ ├── h2_server_push.t │ │ ├── h2_server_tokens.t │ │ ├── h2_ssl.t │ │ ├── h2_ssl_proxy_cache.t │ │ ├── h2_ssl_proxy_protocol.t │ │ ├── h2_ssl_variables.t │ │ ├── h2_ssl_verify_client.t │ │ ├── h2_trailers.t │ │ ├── h2_variables.t │ │ ├── headers.t │ │ ├── http_absolute_redirect.t │ │ ├── http_disable_symlinks.t │ │ ├── http_error_page.t │ │ ├── http_expect_100_continue.t │ │ ├── http_header_buffers.t │ │ ├── http_headers_multi.t │ │ ├── http_host.t │ │ ├── http_include.t │ │ ├── http_keepalive.t │ │ ├── http_keepalive_shutdown.t │ │ ├── http_listen.t │ │ ├── http_listen_wildcard.t │ │ ├── http_location.t │ │ ├── http_location_auto.t │ │ ├── http_location_win32.t │ │ ├── http_method.t │ │ ├── http_resolver.t │ │ ├── http_resolver_aaaa.t │ │ ├── http_resolver_cleanup.t │ │ ├── http_resolver_cname.t │ │ ├── http_resolver_ipv4.t │ │ ├── http_server_name.t │ │ ├── http_time_http_variable.t │ │ ├── http_try_files.t │ │ ├── http_uri.t │ │ ├── http_variables.t │ │ ├── ignore_invalid_headers.t │ │ ├── image_filter.t │ │ ├── image_filter_finalize.t │ │ ├── image_filter_webp.t │ │ ├── index.t │ │ ├── js.t │ │ ├── js_args.t │ │ ├── js_async.t │ │ ├── js_body_filter.t │ │ ├── js_body_filter_if.t │ │ ├── js_buffer.t │ │ ├── js_dump.t │ │ ├── js_fetch.t │ │ ├── js_fetch_https.t │ │ ├── js_fetch_resolver.t │ │ ├── js_fetch_timeout.t │ │ ├── js_fetch_verify.t │ │ ├── js_header_filter.t │ │ ├── js_header_filter_if.t │ │ ├── js_headers.t │ │ ├── js_import.t │ │ ├── js_import2.t │ │ ├── js_internal_redirect.t │ │ ├── js_modules.t │ │ ├── js_ngx.t │ │ ├── js_object.t │ │ ├── js_paths.t │ │ ├── js_preload_object.t │ │ ├── js_promise.t │ │ ├── js_request_body.t │ │ ├── js_return.t │ │ ├── js_subrequests.t │ │ ├── js_var.t │ │ ├── js_var2.t │ │ ├── js_variables.t │ │ ├── lib/ │ │ │ ├── Test/ │ │ │ │ ├── Nginx/ │ │ │ │ │ ├── HTTP2.pm │ │ │ │ │ ├── IMAP.pm │ │ │ │ │ ├── POP3.pm │ │ │ │ │ ├── SMTP.pm │ │ │ │ │ └── Stream.pm │ │ │ │ └── Nginx.pm │ │ │ └── Time/ │ │ │ ├── Parse.pm │ │ │ └── Zone.pm │ │ ├── limit_conn.t │ │ ├── limit_conn_complex.t │ │ ├── limit_conn_dry_run.t │ │ ├── limit_rate.t │ │ ├── limit_req.t │ │ ├── limit_req2.t │ │ ├── limit_req_delay.t │ │ ├── limit_req_dry_run.t │ │ ├── mail_capability.t │ │ ├── mail_error_log.t │ │ ├── mail_imap.t │ │ ├── mail_imap_ssl.t │ │ ├── mail_max_errors.t │ │ ├── mail_pop3.t │ │ ├── mail_proxy_protocol.t │ │ ├── mail_proxy_smtp_auth.t │ │ ├── mail_resolver.t │ │ ├── mail_smtp.t │ │ ├── mail_smtp_greeting_delay.t │ │ ├── mail_smtp_xclient.t │ │ ├── mail_ssl.t │ │ ├── mail_ssl_conf_command.t │ │ ├── mail_ssl_session_reuse.t │ │ ├── map.t │ │ ├── map_complex.t │ │ ├── map_volatile.t │ │ ├── memcached.t │ │ ├── memcached_fake.t │ │ ├── memcached_fake_extra.t │ │ ├── memcached_keepalive.t │ │ ├── memcached_keepalive_stale.t │ │ ├── merge_slashes.t │ │ ├── mirror.t │ │ ├── mirror_proxy.t │ │ ├── mp4.t │ │ ├── mp4_ssi.t │ │ ├── mp4_start_key_frame.t │ │ ├── msie_refresh.t │ │ ├── not_modified.t │ │ ├── not_modified_finalize.t │ │ ├── not_modified_proxy.t │ │ ├── perl.t │ │ ├── perl_gzip.t │ │ ├── perl_sleep.t │ │ ├── perl_ssi.t │ │ ├── post_action.t │ │ ├── proxy.t │ │ ├── proxy_available.t │ │ ├── proxy_bind.t │ │ ├── proxy_bind_transparent.t │ │ ├── proxy_bind_transparent_capability.t │ │ ├── proxy_cache.t │ │ ├── proxy_cache_bypass.t │ │ ├── proxy_cache_chunked.t │ │ ├── proxy_cache_control.t │ │ ├── proxy_cache_convert_head.t │ │ ├── proxy_cache_error.t │ │ ├── proxy_cache_lock.t │ │ ├── proxy_cache_lock_age.t │ │ ├── proxy_cache_lock_ssi.t │ │ ├── proxy_cache_manager.t │ │ ├── proxy_cache_max_range_offset.t │ │ ├── proxy_cache_min_free.t │ │ ├── proxy_cache_path.t │ │ ├── proxy_cache_range.t │ │ ├── proxy_cache_revalidate.t │ │ ├── proxy_cache_use_stale.t │ │ ├── proxy_cache_valid.t │ │ ├── proxy_cache_variables.t │ │ ├── proxy_cache_vary.t │ │ ├── proxy_chunked.t │ │ ├── proxy_chunked_extra.t │ │ ├── proxy_cookie.t │ │ ├── proxy_cookie_flags.t │ │ ├── proxy_duplicate_headers.t │ │ ├── proxy_extra_data.t │ │ ├── proxy_force_ranges.t │ │ ├── proxy_if.t │ │ ├── proxy_implicit.t │ │ ├── proxy_intercept_errors.t │ │ ├── proxy_keepalive.t │ │ ├── proxy_limit_rate.t │ │ ├── proxy_max_temp_file_size.t │ │ ├── proxy_merge_headers.t │ │ ├── proxy_method.t │ │ ├── proxy_next_upstream.t │ │ ├── proxy_next_upstream_tries.t │ │ ├── proxy_noclose.t │ │ ├── proxy_non_idempotent.t │ │ ├── proxy_pass_request.t │ │ ├── proxy_protocol.t │ │ ├── proxy_protocol2.t │ │ ├── proxy_protocol2_port.t │ │ ├── proxy_protocol2_server.t │ │ ├── proxy_protocol2_tlv.t │ │ ├── proxy_protocol_ipv6.t │ │ ├── proxy_protocol_port.t │ │ ├── proxy_protocol_server.t │ │ ├── proxy_protocol_unix.t │ │ ├── proxy_redirect.t │ │ ├── proxy_request_buffering.t │ │ ├── proxy_request_buffering_chunked.t │ │ ├── proxy_request_buffering_keepalive.t │ │ ├── proxy_request_buffering_ssl.t │ │ ├── proxy_set_body.t │ │ ├── proxy_ssi_body.t │ │ ├── proxy_ssl.t │ │ ├── proxy_ssl_certificate.t │ │ ├── proxy_ssl_certificate_empty.t │ │ ├── proxy_ssl_certificate_vars.t │ │ ├── proxy_ssl_conf_command.t │ │ ├── proxy_ssl_keepalive.t │ │ ├── proxy_ssl_name.t │ │ ├── proxy_ssl_verify.t │ │ ├── proxy_store.t │ │ ├── proxy_unfinished.t │ │ ├── proxy_unix.t │ │ ├── proxy_upgrade.t │ │ ├── proxy_upstream_cookie.t │ │ ├── proxy_variables.t │ │ ├── proxy_websocket.t │ │ ├── proxy_xar.t │ │ ├── random_index.t │ │ ├── range.t │ │ ├── range_charset.t │ │ ├── range_clearing.t │ │ ├── range_flv.t │ │ ├── range_if_range.t │ │ ├── range_mp4.t │ │ ├── realip.t │ │ ├── realip_hostname.t │ │ ├── realip_remote_addr.t │ │ ├── realip_remote_port.t │ │ ├── referer.t │ │ ├── request_id.t │ │ ├── rewrite.t │ │ ├── rewrite_if.t │ │ ├── rewrite_set.t │ │ ├── rewrite_unescape.t │ │ ├── scgi.t │ │ ├── scgi_body.t │ │ ├── scgi_cache.t │ │ ├── scgi_extra_data.t │ │ ├── scgi_gzip.t │ │ ├── scgi_merge_params.t │ │ ├── secure_link.t │ │ ├── server_tokens.t │ │ ├── slice.t │ │ ├── split_clients.t │ │ ├── ssi.t │ │ ├── ssi_delayed.t │ │ ├── ssi_if.t │ │ ├── ssi_include_big.t │ │ ├── ssi_waited.t │ │ ├── ssl.t │ │ ├── ssl_certificate.t │ │ ├── ssl_certificate_chain.t │ │ ├── ssl_certificate_perl.t │ │ ├── ssl_certificates.t │ │ ├── ssl_client_escaped_cert.t │ │ ├── ssl_conf_command.t │ │ ├── ssl_crl.t │ │ ├── ssl_curve.t │ │ ├── ssl_engine_keys.t │ │ ├── ssl_password_file.t │ │ ├── ssl_proxy_protocol.t │ │ ├── ssl_proxy_upgrade.t │ │ ├── ssl_reject_handshake.t │ │ ├── ssl_session_reuse.t │ │ ├── ssl_session_ticket_key.t │ │ ├── ssl_sni.t │ │ ├── ssl_sni_reneg.t │ │ ├── ssl_sni_sessions.t │ │ ├── ssl_stapling.t │ │ ├── ssl_verify_client.t │ │ ├── ssl_verify_depth.t │ │ ├── stream_access.t │ │ ├── stream_access_log.t │ │ ├── stream_access_log_escape.t │ │ ├── stream_access_log_none.t │ │ ├── stream_error_log.t │ │ ├── stream_geo.t │ │ ├── stream_geo_binary.t │ │ ├── stream_geo_ipv6.t │ │ ├── stream_geo_unix.t │ │ ├── stream_geoip.t │ │ ├── stream_js.t │ │ ├── stream_js_buffer.t │ │ ├── stream_js_exit.t │ │ ├── stream_js_fetch.t │ │ ├── stream_js_fetch_https.t │ │ ├── stream_js_import.t │ │ ├── stream_js_import2.t │ │ ├── stream_js_ngx.t │ │ ├── stream_js_object.t │ │ ├── stream_js_preload_object.t │ │ ├── stream_js_var.t │ │ ├── stream_js_var2.t │ │ ├── stream_js_variables.t │ │ ├── stream_limit_conn.t │ │ ├── stream_limit_conn_complex.t │ │ ├── stream_limit_conn_dry_run.t │ │ ├── stream_limit_rate.t │ │ ├── stream_limit_rate2.t │ │ ├── stream_map.t │ │ ├── stream_proxy.t │ │ ├── stream_proxy_bind.t │ │ ├── stream_proxy_complex.t │ │ ├── stream_proxy_half_close.t │ │ ├── stream_proxy_next_upstream.t │ │ ├── stream_proxy_protocol.t │ │ ├── stream_proxy_protocol2_tlv.t │ │ ├── stream_proxy_protocol_ipv6.t │ │ ├── stream_proxy_protocol_ssl.t │ │ ├── stream_proxy_ssl.t │ │ ├── stream_proxy_ssl_certificate.t │ │ ├── stream_proxy_ssl_certificate_vars.t │ │ ├── stream_proxy_ssl_conf_command.t │ │ ├── stream_proxy_ssl_name.t │ │ ├── stream_proxy_ssl_name_complex.t │ │ ├── stream_proxy_ssl_verify.t │ │ ├── stream_realip.t │ │ ├── stream_realip_hostname.t │ │ ├── stream_resolver.t │ │ ├── stream_set.t │ │ ├── stream_split_clients.t │ │ ├── stream_ssl.t │ │ ├── stream_ssl_alpn.t │ │ ├── stream_ssl_certificate.t │ │ ├── stream_ssl_conf_command.t │ │ ├── stream_ssl_preread.t │ │ ├── stream_ssl_preread_alpn.t │ │ ├── stream_ssl_preread_protocol.t │ │ ├── stream_ssl_realip.t │ │ ├── stream_ssl_session_reuse.t │ │ ├── stream_ssl_variables.t │ │ ├── stream_ssl_verify_client.t │ │ ├── stream_status_variable.t │ │ ├── stream_tcp_nodelay.t │ │ ├── stream_udp_limit_conn.t │ │ ├── stream_udp_limit_rate.t │ │ ├── stream_udp_proxy.t │ │ ├── stream_udp_proxy_requests.t │ │ ├── stream_udp_stream.t │ │ ├── stream_udp_upstream.t │ │ ├── stream_udp_upstream_hash.t │ │ ├── stream_udp_upstream_least_conn.t │ │ ├── stream_udp_wildcard.t │ │ ├── stream_unix.t │ │ ├── stream_upstream.t │ │ ├── stream_upstream_hash.t │ │ ├── stream_upstream_least_conn.t │ │ ├── stream_upstream_max_conns.t │ │ ├── stream_upstream_random.t │ │ ├── stream_upstream_zone.t │ │ ├── stream_upstream_zone_ssl.t │ │ ├── stream_variables.t │ │ ├── stub_status.t │ │ ├── sub_filter.t │ │ ├── sub_filter_buffering.t │ │ ├── sub_filter_merge.t │ │ ├── sub_filter_multi.t │ │ ├── sub_filter_multi2.t │ │ ├── sub_filter_perl.t │ │ ├── sub_filter_slice.t │ │ ├── sub_filter_ssi.t │ │ ├── subrequest_output_buffer_size.t │ │ ├── syslog.t │ │ ├── trailers.t │ │ ├── upstream.t │ │ ├── upstream_hash.t │ │ ├── upstream_hash_memcached.t │ │ ├── upstream_ip_hash.t │ │ ├── upstream_ip_hash_ipv6.t │ │ ├── upstream_keepalive.t │ │ ├── upstream_least_conn.t │ │ ├── upstream_max_conns.t │ │ ├── upstream_random.t │ │ ├── upstream_zone.t │ │ ├── upstream_zone_ssl.t │ │ ├── userid.t │ │ ├── userid_flags.t │ │ ├── uwsgi.t │ │ ├── uwsgi_body.t │ │ ├── uwsgi_ssl.t │ │ ├── uwsgi_ssl_certificate.t │ │ ├── uwsgi_ssl_certificate_vars.t │ │ ├── uwsgi_ssl_verify.t │ │ ├── worker_shutdown_timeout.t │ │ ├── worker_shutdown_timeout_h2.t │ │ ├── worker_shutdown_timeout_mail.t │ │ ├── worker_shutdown_timeout_proxy_upgrade.t │ │ ├── worker_shutdown_timeout_stream.t │ │ ├── xslt.t │ │ └── xslt_params.t │ └── tengine-tests/ │ ├── concat.t │ ├── consistent_hash.t │ ├── dynamic_resolve.t │ ├── dynamic_resolve_aaaa.t │ ├── dyups.t │ ├── fastcgi_check.t │ ├── gzip_clear_etag.t │ ├── http_raw_uri_variable.t │ ├── http_ssl_asynchronous_mode.t │ ├── http_ssl_handshakd_time.t │ ├── if_numeric_comparison.t │ ├── iwrr.t │ ├── limit_req_enhance.t │ ├── ngx_dtls.t │ ├── ngx_http_upstream_vnswrr.t │ ├── reqstat.t │ ├── resolver.t │ ├── resolver_file.t │ ├── server_banner.t │ ├── session_sticky.t │ ├── slice.t │ ├── stream_sni.t │ ├── stream_ssl_handshakd_time.t │ ├── sysguard.t │ ├── upstream.t │ ├── upstream_keepalive_timeout.t │ ├── variable.t │ └── vnswrr4dynamic_ups.t └── test-nginx/ ├── README ├── cases/ │ ├── footer.t │ ├── ngx_http_upstream_check_module/ │ │ ├── check_interface.t │ │ ├── http_check.t │ │ ├── ssl_hello_check.t │ │ ├── tcp_check.t │ │ └── websocket.t │ ├── req-start-time-variable.t │ ├── trim.t │ └── user_agent.t └── test-nginx/ ├── .gitignore ├── Changes ├── MANIFEST ├── MANIFEST.SKIP ├── META.yml ├── Makefile.PL ├── README ├── inc/ │ ├── Module/ │ │ ├── AutoInstall.pm │ │ ├── Install/ │ │ │ ├── AutoInstall.pm │ │ │ ├── Base.pm │ │ │ ├── Can.pm │ │ │ ├── Fetch.pm │ │ │ ├── Include.pm │ │ │ ├── Makefile.pm │ │ │ ├── Metadata.pm │ │ │ ├── TestBase.pm │ │ │ ├── Win32.pm │ │ │ └── WriteAll.pm │ │ └── Install.pm │ ├── Spiffy.pm │ └── Test/ │ ├── Base/ │ │ └── Filter.pm │ ├── Base.pm │ ├── Builder/ │ │ └── Module.pm │ ├── Builder.pm │ └── More.pm ├── lib/ │ └── Test/ │ ├── Nginx/ │ │ ├── LWP.pm │ │ ├── Socket/ │ │ │ └── Lua.pm │ │ ├── Socket.pm │ │ └── Util.pm │ └── Nginx.pm └── t/ ├── apply_moves.t ├── check_response_body.t ├── get_req_from_block.t ├── parse_request.t ├── pod-coverage.t ├── pod.t └── syntax.t