Nginx
潘广宇
主攻Golang|Python|PHP|数据库|高并发架构|人工智能,Base广州,博客主要写一些工作上遇到的问题和处理经验
展开
-
GET 请求参数过大导致HTTP错误码 414 / 500 的问题
看了很多文章描述,通过修改nginx配置可以解决 414 Request-URI Too Large 的问题,比如可以调大这些参数:client_header_buffer_size 512k;large_client_header_buffers 4 512k;client_max_body_size 100m;如果调大后,重启nginx,发现请求变成了 500 Internal Server Error,查看具体的 nginx 错误日志:[alert] 8300#0: *173067原创 2022-04-12 19:25:16 · 5081 阅读 · 1 评论 -
Nginx Lua 开发 - MongoDB 独立模块的安装
Nginx 使用 lua-resty-mongol 模块访问 MongoDB,但该包并没打包在 Openresty 中,需要单独安装。一、安装 lua-resty-mongol模块地址:https://github.com/bigplum/lua-resty-mongolgit clone https://github.com/bigplum/lua-resty-mongolcd...原创 2019-03-29 11:28:17 · 865 阅读 · 0 评论 -
Nginx Lua 开发 - Memcached 操作
在 Nginx 中访问 Memcached 有两种方式:mem-nginx-module 与 lua-resty-memcached。Openresty 可直接使用这两种方式进行访问。一、mem-nginx-module1)简单例子# mem-nginx-module 使用location /memnginxmodule { set $memc_cmd $arg_cmd; ...原创 2019-03-29 11:03:55 · 876 阅读 · 0 评论 -
Nginx Lua 开发 - MySQL 操作
在 Nginx 中,MySQL 有两种访问方式1)使用 ngx_lua 模块与 lua-resty-mysql 模块,在安装 Openresty 时默认安装的2)使用 drizzle_nginx_module (HttpDrizzleModule) 模块:需要单独安装。一、lua-resty-mysql 访问1)简单在MySQL中创建一些测试数据2)案例,在 nginx.con...原创 2019-03-28 19:47:02 · 1593 阅读 · 0 评论 -
Nginx Lua 开发 - Redis 操作
一、Nginx 支持3种方法访问 Redis1)HttpRedis : 提供指令少,功能单一2)HttpRedis2Module : 比 HttpRedis 操作更灵活,功能更强大3)Lua-resty-redis 库 : Openresty 提供的操作 Redis 的接口库,需要通过 --with-luajit 编译安装二、HttpRedis2Module 适合简单访问 Redi...原创 2019-03-28 17:51:36 · 1263 阅读 · 0 评论 -
Openresty 错误:[emerg] 14574#0: unknown directive "redis2_query"
该问题源头:在 Openresty 中使用 HttpRedis2Module,示例如下:location /http2redisget { set $key hello; redis2_query get $key; redis2_pass 127.0.0.1:6379;}重启 nginx./sbin/nginx -s reload请求 / http...原创 2019-03-28 17:04:08 · 1106 阅读 · 0 评论 -
Nginx Lua 开发 - lua-resty-template 库的使用
该库需要安装,https://github.com/bungle/lua-resty-template一、通过模板输出 Hello World在 nginx.conf 下输入#lua-resty-templatelocation /tem { content_by_lua ' local template = require "resty.template"...原创 2019-04-01 16:07:55 · 1185 阅读 · 0 评论 -
Nginx 核心技术总结
一、Nginx 性能设计1)网络性能:Nginx 在 Linux 上使用了 Epoll 网络模型,在全异步模式及多进程支持下,可处理高达几万至几十万的并发。2)网络效率:Nginx 使用长连接 keepalive 来减少建立、关闭带来的网络交互,使用压缩算法提高网络利用率。3)时延:使用带宽控制技术,使各个会话之间带宽尽量相等。二、Nginx 架构Nginx 使用事件驱动的服务...原创 2019-03-24 13:13:02 · 699 阅读 · 0 评论 -
Nginx 惊群问题的处理
Nginx 里的工作进程一般是按CPU核数进行配置的,有多少个CPU核,一般就配有多少个工作进程。工作进程启动时会fork出指定的多少个工作进程。Nginx 接收网络事件是通过底层的 events 事情处理模块管理的,当客户端的连接请求到来时,一个新连接事件就会上报,各个工作进程就会争相对事情进行抢夺来处理,这就是“惊群”问题。这个问题会导致:如果工作进程都处于休眠状态,忽然同时被唤醒...原创 2019-03-23 23:22:30 · 836 阅读 · 0 评论 -
Nginx 下 Lua 的实现机制(二)
目录一、init_by_lua二、init_worker_by_lua三、set_by_lua四、rewrite_by_lua五、access_by_lua六、content_by_lua七、header_filter_by_lua八、body_filter_by_lua九、log_by_lua十、balancer_by_lua_block一、in...原创 2019-03-26 18:48:29 · 4999 阅读 · 2 评论 -
Openresty 安装与 Hello World
一、Openresty 介绍OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,集成许多优良的 Lua 库、第三方模块等。可以快速构建出足以胜任 10K 甚至 1000K 单机并发连接的高性能 Web 应用系统二、安装 Openresty找到最新的安装包https://openresty.org/cn/download.html,如:openrest...原创 2019-03-23 15:14:45 · 841 阅读 · 0 评论 -
Nginx Lua 开发 - resty.http 库的使用
resty.http 是用于访问外部 Http 资源,外部 web 服务,RESTFul 等的轻量级 http 库。一、安装 resty.http 库git clone https://github.com/ledgetech/lua-resty-http.gitcd lua-resty-http/lib/resty# 直接拷贝文件到 openresty 的 lualibcp...原创 2019-03-29 14:47:30 · 8920 阅读 · 0 评论 -
Nginx 下 Lua 的实现机制(一)
一、ngx_lua 原理ngx_lua 将 Lua 集成进 Nginx。Lua 内建协程,协程调用异步 API ,然后协程挂起。在异步 callback 时间到来时,唤醒该协程,继续执行,从而实现全异步的 Nginx 机制。ngx_lua 中 Lua 的 I/O 操作都委托给 Nginx 事件模型,从而实现完全的非阻塞调用。ngx_lua 在 Nginx 管理 / 工作进程机制上加入了 L...原创 2019-03-25 14:32:44 · 1269 阅读 · 0 评论