├── .gitignore ├── Makefile ├── README.md ├── SUMMARY.md ├── base ├── intro.md └── web_evolution.md ├── codes └── emmylua_ngx.lua ├── config.json ├── cover ├── background.jpg └── logo.png ├── dns ├── main.md └── use_dynamic_dns.md ├── flame_graph.md ├── flame_graph ├── faq.md ├── how.md ├── install.md ├── other.md ├── what.md └── when.md ├── images ├── Flame-Graphic.svg ├── OpenResty图谱-二维码.jpg ├── TLSv1.2-session-id.webp ├── TLSv1.2.png ├── TLSv1.3.png ├── bit_1.png ├── bit_2.png ├── bit_3.png ├── bit_band.png ├── bit_bnot.png ├── bit_bor.png ├── bit_bxor.png ├── bit_lshift.png ├── bit_rshift.png ├── code_coverage.png ├── cosocket_internal.png ├── ffi.png ├── first_helloworld.png ├── flame_graphic_problem.svg ├── forward-proxy.png ├── http-https.webp ├── http_chunked.png ├── http_response_protocal.jpg ├── installplugins.png ├── libevent_benchmark.webp ├── lua_autofunc.png ├── lua_func.png ├── lua_importlib.png ├── lua_quickdoc.png ├── lua_quickdocui.png ├── lua_settingmodules.png ├── nginx.png ├── nginx_conf.jpg ├── nginx_hello.jpg ├── nginx_process.png ├── nginx_web_welcome.png ├── ngx_balance.png ├── openresty_phases.png ├── pipeline.png ├── proxy.png ├── proxy_example.png ├── qq_group.png ├── reverse-proxy.png ├── ssl-tls.png ├── summy_list_20160801.png ├── tcp.png ├── win_luajit.png ├── work_location_flow_1.png └── work_location_flow_2.png ├── json.md ├── json ├── array_or_object.md ├── parse_exception.md └── sparse_array.md ├── lock.md ├── lock └── cache-miss-storm.md ├── lua ├── FFI.md ├── array_size.md ├── break.md ├── brief.md ├── build_env.md ├── call_user_func_array.md ├── class.md ├── control_structrues.md ├── dot_diff.md ├── dummy_var.md ├── editor.md ├── file.md ├── for.md ├── function_before_use.md ├── function_define.md ├── function_descrip.md ├── function_parameter.md ├── function_result.md ├── if_else.md ├── local.md ├── main.md ├── math_library.md ├── metatable.md ├── module.md ├── module_is_evil.md ├── not_nil.md ├── not_use_module.md ├── object_oriented.md ├── operator.md ├── re.md ├── repeat.md ├── string_library.md ├── table_library.md ├── time_date_function.md ├── what_jit.md └── while.md ├── ngx ├── balancer.md ├── nginx.md ├── nginx_brief.md ├── nginx_local_pcre.md ├── nginx_log.md ├── pitfalls_and_common_mistakes.md ├── reverse_proxy.md └── static_file.md ├── ngx_lua.md ├── ngx_lua ├── allow_deny.md ├── block_io.md ├── cache.md ├── continue_after_eof.md ├── debug.md ├── hot_load.md ├── how_one_instance_time.md ├── how_use_third_lib.md ├── keepalive.md ├── log.md ├── lua-limit.md ├── lua-variable-scope.md ├── lua_opt.md ├── on_abort.md ├── phase.md ├── resolve_the_domain_name.md ├── shared_get_keys.md ├── sleep.md ├── timer.md ├── use_case.md └── whats_cosocket.md ├── openresty ├── bit_LuaJIT_BitOp_Api.md ├── bit_bitop_installation.md ├── bit_bitwise_operation_example.md ├── bit_brief.md ├── bit_operations_review.md ├── bit_two's_complement.md ├── get_req_body.md ├── get_url_param.md ├── helloworld.md ├── how_request_http.md ├── inline_var.md ├── install.md ├── install_on_centos.md ├── install_on_ubuntu.md ├── install_on_windows.md ├── install_osx.md ├── log_response.md ├── response.md ├── safe_sql.md ├── share_var.md ├── simple_api.md ├── sub_request.md └── work_with_location.md ├── postgres.md ├── postgres ├── health_check.md ├── how_to_use.md ├── not_support_transaction.md ├── sql_inject.md └── timeout.md ├── redis ├── auth_connect.md ├── dynamic_redis_module_method.md ├── out_package.md ├── pipeline.md ├── pub_sub_package.md ├── script.md └── select-keeplive.md ├── ssl ├── certificate.md ├── introduction.md └── session_resumption.md ├── test.md ├── test ├── abtest.md ├── abtest │ ├── 1.md │ ├── 1_1.png │ ├── 2.md │ ├── 2_1.png │ ├── 3.md │ ├── 3_1.png │ ├── 3_2.png │ ├── 3_3.png │ └── main.png ├── apitest.md ├── ci.md ├── coverage.md ├── performance_test.md ├── static_analysis.md └── unittest.md ├── web.md └── web ├── api.md ├── c10k.md ├── check_data_valid.md ├── code_style.md ├── conn_pool.md ├── docker.md ├── switch_protocol.md └── time_wait.md /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/.gitignore -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/README.md -------------------------------------------------------------------------------- /SUMMARY.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/SUMMARY.md -------------------------------------------------------------------------------- /base/intro.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/base/intro.md -------------------------------------------------------------------------------- /base/web_evolution.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/base/web_evolution.md -------------------------------------------------------------------------------- /codes/emmylua_ngx.lua: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/codes/emmylua_ngx.lua -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/config.json -------------------------------------------------------------------------------- /cover/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/cover/background.jpg -------------------------------------------------------------------------------- /cover/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/cover/logo.png -------------------------------------------------------------------------------- /dns/main.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/dns/main.md -------------------------------------------------------------------------------- /dns/use_dynamic_dns.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/dns/use_dynamic_dns.md -------------------------------------------------------------------------------- /flame_graph.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/flame_graph.md -------------------------------------------------------------------------------- /flame_graph/faq.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/flame_graph/faq.md -------------------------------------------------------------------------------- /flame_graph/how.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/flame_graph/how.md -------------------------------------------------------------------------------- /flame_graph/install.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/flame_graph/install.md -------------------------------------------------------------------------------- /flame_graph/other.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/flame_graph/other.md -------------------------------------------------------------------------------- /flame_graph/what.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/flame_graph/what.md -------------------------------------------------------------------------------- /flame_graph/when.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/flame_graph/when.md -------------------------------------------------------------------------------- /images/Flame-Graphic.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/Flame-Graphic.svg -------------------------------------------------------------------------------- /images/OpenResty图谱-二维码.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/OpenResty图谱-二维码.jpg -------------------------------------------------------------------------------- /images/TLSv1.2-session-id.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/TLSv1.2-session-id.webp -------------------------------------------------------------------------------- /images/TLSv1.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/TLSv1.2.png -------------------------------------------------------------------------------- /images/TLSv1.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/TLSv1.3.png -------------------------------------------------------------------------------- /images/bit_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/bit_1.png -------------------------------------------------------------------------------- /images/bit_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/bit_2.png -------------------------------------------------------------------------------- /images/bit_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/bit_3.png -------------------------------------------------------------------------------- /images/bit_band.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/bit_band.png -------------------------------------------------------------------------------- /images/bit_bnot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/bit_bnot.png -------------------------------------------------------------------------------- /images/bit_bor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/bit_bor.png -------------------------------------------------------------------------------- /images/bit_bxor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/bit_bxor.png -------------------------------------------------------------------------------- /images/bit_lshift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/bit_lshift.png -------------------------------------------------------------------------------- /images/bit_rshift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/bit_rshift.png -------------------------------------------------------------------------------- /images/code_coverage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/code_coverage.png -------------------------------------------------------------------------------- /images/cosocket_internal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/cosocket_internal.png -------------------------------------------------------------------------------- /images/ffi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/ffi.png -------------------------------------------------------------------------------- /images/first_helloworld.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/first_helloworld.png -------------------------------------------------------------------------------- /images/flame_graphic_problem.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/flame_graphic_problem.svg -------------------------------------------------------------------------------- /images/forward-proxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/forward-proxy.png -------------------------------------------------------------------------------- /images/http-https.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/http-https.webp -------------------------------------------------------------------------------- /images/http_chunked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/http_chunked.png -------------------------------------------------------------------------------- /images/http_response_protocal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/http_response_protocal.jpg -------------------------------------------------------------------------------- /images/installplugins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/installplugins.png -------------------------------------------------------------------------------- /images/libevent_benchmark.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/libevent_benchmark.webp -------------------------------------------------------------------------------- /images/lua_autofunc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/lua_autofunc.png -------------------------------------------------------------------------------- /images/lua_func.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/lua_func.png -------------------------------------------------------------------------------- /images/lua_importlib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/lua_importlib.png -------------------------------------------------------------------------------- /images/lua_quickdoc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/lua_quickdoc.png -------------------------------------------------------------------------------- /images/lua_quickdocui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/lua_quickdocui.png -------------------------------------------------------------------------------- /images/lua_settingmodules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/lua_settingmodules.png -------------------------------------------------------------------------------- /images/nginx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/nginx.png -------------------------------------------------------------------------------- /images/nginx_conf.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/nginx_conf.jpg -------------------------------------------------------------------------------- /images/nginx_hello.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/nginx_hello.jpg -------------------------------------------------------------------------------- /images/nginx_process.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/nginx_process.png -------------------------------------------------------------------------------- /images/nginx_web_welcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/nginx_web_welcome.png -------------------------------------------------------------------------------- /images/ngx_balance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/ngx_balance.png -------------------------------------------------------------------------------- /images/openresty_phases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/openresty_phases.png -------------------------------------------------------------------------------- /images/pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/pipeline.png -------------------------------------------------------------------------------- /images/proxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/proxy.png -------------------------------------------------------------------------------- /images/proxy_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/proxy_example.png -------------------------------------------------------------------------------- /images/qq_group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/qq_group.png -------------------------------------------------------------------------------- /images/reverse-proxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/reverse-proxy.png -------------------------------------------------------------------------------- /images/ssl-tls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/ssl-tls.png -------------------------------------------------------------------------------- /images/summy_list_20160801.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/summy_list_20160801.png -------------------------------------------------------------------------------- /images/tcp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/tcp.png -------------------------------------------------------------------------------- /images/win_luajit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/win_luajit.png -------------------------------------------------------------------------------- /images/work_location_flow_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/work_location_flow_1.png -------------------------------------------------------------------------------- /images/work_location_flow_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/images/work_location_flow_2.png -------------------------------------------------------------------------------- /json.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/json.md -------------------------------------------------------------------------------- /json/array_or_object.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/json/array_or_object.md -------------------------------------------------------------------------------- /json/parse_exception.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/json/parse_exception.md -------------------------------------------------------------------------------- /json/sparse_array.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/json/sparse_array.md -------------------------------------------------------------------------------- /lock.md: -------------------------------------------------------------------------------- 1 | # lock 2 | -------------------------------------------------------------------------------- /lock/cache-miss-storm.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lock/cache-miss-storm.md -------------------------------------------------------------------------------- /lua/FFI.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/FFI.md -------------------------------------------------------------------------------- /lua/array_size.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/array_size.md -------------------------------------------------------------------------------- /lua/break.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/break.md -------------------------------------------------------------------------------- /lua/brief.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/brief.md -------------------------------------------------------------------------------- /lua/build_env.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/build_env.md -------------------------------------------------------------------------------- /lua/call_user_func_array.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/call_user_func_array.md -------------------------------------------------------------------------------- /lua/class.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/class.md -------------------------------------------------------------------------------- /lua/control_structrues.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/control_structrues.md -------------------------------------------------------------------------------- /lua/dot_diff.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/dot_diff.md -------------------------------------------------------------------------------- /lua/dummy_var.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/dummy_var.md -------------------------------------------------------------------------------- /lua/editor.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/editor.md -------------------------------------------------------------------------------- /lua/file.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/file.md -------------------------------------------------------------------------------- /lua/for.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/for.md -------------------------------------------------------------------------------- /lua/function_before_use.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/function_before_use.md -------------------------------------------------------------------------------- /lua/function_define.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/function_define.md -------------------------------------------------------------------------------- /lua/function_descrip.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/function_descrip.md -------------------------------------------------------------------------------- /lua/function_parameter.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/function_parameter.md -------------------------------------------------------------------------------- /lua/function_result.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/function_result.md -------------------------------------------------------------------------------- /lua/if_else.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/if_else.md -------------------------------------------------------------------------------- /lua/local.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/local.md -------------------------------------------------------------------------------- /lua/main.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/main.md -------------------------------------------------------------------------------- /lua/math_library.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/math_library.md -------------------------------------------------------------------------------- /lua/metatable.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/metatable.md -------------------------------------------------------------------------------- /lua/module.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/module.md -------------------------------------------------------------------------------- /lua/module_is_evil.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/module_is_evil.md -------------------------------------------------------------------------------- /lua/not_nil.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/not_nil.md -------------------------------------------------------------------------------- /lua/not_use_module.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/not_use_module.md -------------------------------------------------------------------------------- /lua/object_oriented.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/object_oriented.md -------------------------------------------------------------------------------- /lua/operator.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/operator.md -------------------------------------------------------------------------------- /lua/re.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/re.md -------------------------------------------------------------------------------- /lua/repeat.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/repeat.md -------------------------------------------------------------------------------- /lua/string_library.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/string_library.md -------------------------------------------------------------------------------- /lua/table_library.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/table_library.md -------------------------------------------------------------------------------- /lua/time_date_function.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/time_date_function.md -------------------------------------------------------------------------------- /lua/what_jit.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/what_jit.md -------------------------------------------------------------------------------- /lua/while.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/lua/while.md -------------------------------------------------------------------------------- /ngx/balancer.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx/balancer.md -------------------------------------------------------------------------------- /ngx/nginx.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx/nginx.md -------------------------------------------------------------------------------- /ngx/nginx_brief.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx/nginx_brief.md -------------------------------------------------------------------------------- /ngx/nginx_local_pcre.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx/nginx_local_pcre.md -------------------------------------------------------------------------------- /ngx/nginx_log.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx/nginx_log.md -------------------------------------------------------------------------------- /ngx/pitfalls_and_common_mistakes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx/pitfalls_and_common_mistakes.md -------------------------------------------------------------------------------- /ngx/reverse_proxy.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx/reverse_proxy.md -------------------------------------------------------------------------------- /ngx/static_file.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx/static_file.md -------------------------------------------------------------------------------- /ngx_lua.md: -------------------------------------------------------------------------------- 1 | # LuaNginxModule 2 | 3 | -------------------------------------------------------------------------------- /ngx_lua/allow_deny.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/allow_deny.md -------------------------------------------------------------------------------- /ngx_lua/block_io.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/block_io.md -------------------------------------------------------------------------------- /ngx_lua/cache.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/cache.md -------------------------------------------------------------------------------- /ngx_lua/continue_after_eof.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/continue_after_eof.md -------------------------------------------------------------------------------- /ngx_lua/debug.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/debug.md -------------------------------------------------------------------------------- /ngx_lua/hot_load.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/hot_load.md -------------------------------------------------------------------------------- /ngx_lua/how_one_instance_time.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/how_one_instance_time.md -------------------------------------------------------------------------------- /ngx_lua/how_use_third_lib.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/how_use_third_lib.md -------------------------------------------------------------------------------- /ngx_lua/keepalive.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/keepalive.md -------------------------------------------------------------------------------- /ngx_lua/log.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/log.md -------------------------------------------------------------------------------- /ngx_lua/lua-limit.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/lua-limit.md -------------------------------------------------------------------------------- /ngx_lua/lua-variable-scope.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/lua-variable-scope.md -------------------------------------------------------------------------------- /ngx_lua/lua_opt.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/lua_opt.md -------------------------------------------------------------------------------- /ngx_lua/on_abort.md: -------------------------------------------------------------------------------- 1 | # 请求中断后的处理 2 | -------------------------------------------------------------------------------- /ngx_lua/phase.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/phase.md -------------------------------------------------------------------------------- /ngx_lua/resolve_the_domain_name.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/resolve_the_domain_name.md -------------------------------------------------------------------------------- /ngx_lua/shared_get_keys.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/shared_get_keys.md -------------------------------------------------------------------------------- /ngx_lua/sleep.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/sleep.md -------------------------------------------------------------------------------- /ngx_lua/timer.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/timer.md -------------------------------------------------------------------------------- /ngx_lua/use_case.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/use_case.md -------------------------------------------------------------------------------- /ngx_lua/whats_cosocket.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ngx_lua/whats_cosocket.md -------------------------------------------------------------------------------- /openresty/bit_LuaJIT_BitOp_Api.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/bit_LuaJIT_BitOp_Api.md -------------------------------------------------------------------------------- /openresty/bit_bitop_installation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/bit_bitop_installation.md -------------------------------------------------------------------------------- /openresty/bit_bitwise_operation_example.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/bit_bitwise_operation_example.md -------------------------------------------------------------------------------- /openresty/bit_brief.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/bit_brief.md -------------------------------------------------------------------------------- /openresty/bit_operations_review.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/bit_operations_review.md -------------------------------------------------------------------------------- /openresty/bit_two's_complement.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/bit_two's_complement.md -------------------------------------------------------------------------------- /openresty/get_req_body.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/get_req_body.md -------------------------------------------------------------------------------- /openresty/get_url_param.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/get_url_param.md -------------------------------------------------------------------------------- /openresty/helloworld.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/helloworld.md -------------------------------------------------------------------------------- /openresty/how_request_http.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/how_request_http.md -------------------------------------------------------------------------------- /openresty/inline_var.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/inline_var.md -------------------------------------------------------------------------------- /openresty/install.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/install.md -------------------------------------------------------------------------------- /openresty/install_on_centos.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/install_on_centos.md -------------------------------------------------------------------------------- /openresty/install_on_ubuntu.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/install_on_ubuntu.md -------------------------------------------------------------------------------- /openresty/install_on_windows.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/install_on_windows.md -------------------------------------------------------------------------------- /openresty/install_osx.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/install_osx.md -------------------------------------------------------------------------------- /openresty/log_response.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/log_response.md -------------------------------------------------------------------------------- /openresty/response.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/response.md -------------------------------------------------------------------------------- /openresty/safe_sql.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/safe_sql.md -------------------------------------------------------------------------------- /openresty/share_var.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/share_var.md -------------------------------------------------------------------------------- /openresty/simple_api.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/simple_api.md -------------------------------------------------------------------------------- /openresty/sub_request.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/sub_request.md -------------------------------------------------------------------------------- /openresty/work_with_location.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/openresty/work_with_location.md -------------------------------------------------------------------------------- /postgres.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/postgres.md -------------------------------------------------------------------------------- /postgres/health_check.md: -------------------------------------------------------------------------------- 1 | # 健康监测 2 | 3 | -------------------------------------------------------------------------------- /postgres/how_to_use.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/postgres/how_to_use.md -------------------------------------------------------------------------------- /postgres/not_support_transaction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/postgres/not_support_transaction.md -------------------------------------------------------------------------------- /postgres/sql_inject.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/postgres/sql_inject.md -------------------------------------------------------------------------------- /postgres/timeout.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/postgres/timeout.md -------------------------------------------------------------------------------- /redis/auth_connect.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/redis/auth_connect.md -------------------------------------------------------------------------------- /redis/dynamic_redis_module_method.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/redis/dynamic_redis_module_method.md -------------------------------------------------------------------------------- /redis/out_package.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/redis/out_package.md -------------------------------------------------------------------------------- /redis/pipeline.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/redis/pipeline.md -------------------------------------------------------------------------------- /redis/pub_sub_package.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/redis/pub_sub_package.md -------------------------------------------------------------------------------- /redis/script.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/redis/script.md -------------------------------------------------------------------------------- /redis/select-keeplive.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/redis/select-keeplive.md -------------------------------------------------------------------------------- /ssl/certificate.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ssl/certificate.md -------------------------------------------------------------------------------- /ssl/introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ssl/introduction.md -------------------------------------------------------------------------------- /ssl/session_resumption.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/ssl/session_resumption.md -------------------------------------------------------------------------------- /test.md: -------------------------------------------------------------------------------- 1 | # 测试 2 | 3 | -------------------------------------------------------------------------------- /test/abtest.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/test/abtest.md -------------------------------------------------------------------------------- /test/abtest/1.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/test/abtest/1.md -------------------------------------------------------------------------------- /test/abtest/1_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/test/abtest/1_1.png -------------------------------------------------------------------------------- /test/abtest/2.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/test/abtest/2.md -------------------------------------------------------------------------------- /test/abtest/2_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/test/abtest/2_1.png -------------------------------------------------------------------------------- /test/abtest/3.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/test/abtest/3.md -------------------------------------------------------------------------------- /test/abtest/3_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/test/abtest/3_1.png -------------------------------------------------------------------------------- /test/abtest/3_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/test/abtest/3_2.png -------------------------------------------------------------------------------- /test/abtest/3_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/test/abtest/3_3.png -------------------------------------------------------------------------------- /test/abtest/main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/test/abtest/main.png -------------------------------------------------------------------------------- /test/apitest.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/test/apitest.md -------------------------------------------------------------------------------- /test/ci.md: -------------------------------------------------------------------------------- 1 | # 持续集成 2 | 3 | 我们做的还不够好,先占个坑。 4 | 5 | 欢迎贡献章节。 6 | 7 | -------------------------------------------------------------------------------- /test/coverage.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/test/coverage.md -------------------------------------------------------------------------------- /test/performance_test.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/test/performance_test.md -------------------------------------------------------------------------------- /test/static_analysis.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/test/static_analysis.md -------------------------------------------------------------------------------- /test/unittest.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/test/unittest.md -------------------------------------------------------------------------------- /web.md: -------------------------------------------------------------------------------- 1 | # Web 服务 2 | 3 | -------------------------------------------------------------------------------- /web/api.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/web/api.md -------------------------------------------------------------------------------- /web/c10k.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/web/c10k.md -------------------------------------------------------------------------------- /web/check_data_valid.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/web/check_data_valid.md -------------------------------------------------------------------------------- /web/code_style.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/web/code_style.md -------------------------------------------------------------------------------- /web/conn_pool.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/web/conn_pool.md -------------------------------------------------------------------------------- /web/docker.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/web/docker.md -------------------------------------------------------------------------------- /web/switch_protocol.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/web/switch_protocol.md -------------------------------------------------------------------------------- /web/time_wait.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moonbingbing/openresty-best-practices/HEAD/web/time_wait.md --------------------------------------------------------------------------------