
nginx
huangyimo
这个作者很懒,什么都没留下…
展开
-
openresty--centos7下开发环境安装
1. 安装依赖的软件包yum install readline-devel pcre-devel openssl-devel gcc2. 安装openresty-- 1. 下载openresty源码: http://openresty.org/cn/download.html$ wget https://openresty.org/download/openresty-1.9.7.4.tar.g...转载 2018-06-10 20:47:32 · 376 阅读 · 0 评论 -
接入层高性能缓存技术nginx+redis利器
一. OpenRestyOpenResty是一个基于 Nginx与 Lua的高性能 Web平台,其内部集成了大量精良的 Lua库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态Web 应用、Web 服务和动态网关。接入层缓存技术就是使用OpenResty的技术用Lua语言进行二次开发。二.Nginx +redis 下图左边是常用的架构,http请求经过nginx负载...转载 2018-06-20 21:50:35 · 1224 阅读 · 0 评论 -
安装Nginx+Lua+OpenResty开发环境配置全过程实例
安装Nginx+Lua+OpenResty开发环境配置全过程实例OpenResty由Nginx核心加很多第三方模块组成,默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用。借助于Nginx的事件驱动模型和非阻塞IO,可以实现高性能的Web应用程序。而且OpenResty提供了大量组件如Mysql、Redis、Memcached等等,使在Nginx上开发Web应用更方便更简...转载 2018-06-11 15:34:59 · 829 阅读 · 0 评论 -
Nginx+Keepalived+Tomcat搭建高可用/负载均衡/动静分离的Web服务器集群
前言终于到这篇文章了,心情是有点激动的。因为这篇文章会集中以前博客讲到的所有Nginx功能点,包括基本的负载均衡,还有动静分离技术再加上这篇文章的重点,通过Keepalived实现的HA(High Available),为什么要实现高可用呢?以前在搭建的时候只用了一台Nginx服务器,这样的话如果Nginx服务器宕机了,那么整个网站就会挂掉,所以要实现Nginx的高可用,一台挂掉还会有另一转载 2018-01-09 17:17:05 · 514 阅读 · 0 评论 -
keepalived+nginx双机热备+负载均衡
keepalived+nginx双机热备+负载均衡最近因业务扩展,需要将当前的apache 转为nginx(web), 再在web前端放置nginx(负载均衡)。同时结合keepalived 对前端nginx实现HA。nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能。在Master进程分配模式下,Master进程永远不进行业务处理转载 2018-01-09 16:35:00 · 296 阅读 · 0 评论 -
Nginx深入详解之多进程网络模型
一、进程模型 Nginx之所以为广大码农喜爱,除了其高性能外,还有其优雅的系统架构。与Memcached的经典多线程模型相比,Nginx是经典的多进程模型。Nginx启动后以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程,具体如下图:图1 Nginx多进程模型 master进程主要用来管理worker进程,具体包转载 2016-06-10 15:31:36 · 430 阅读 · 1 评论 -
windows平台下开发nginx模块(还添加了gzip模块)
开始前的小小说明:我把nginx源代码放在E:\nginx目录下,运行nginx的工作目录放在D:\nginx目录下。特此说明。1.准备工作下载并安装以下工具:Vs2010,下载地址: http://download.microsoft.com/download/e/5/e/e5e362e1-6a2a-4ce3-bbac-659c9740ab04/vc_web.exe Mingw,转载 2016-02-24 19:41:32 · 2681 阅读 · 0 评论 -
nginx负载均衡简单配置
nginx负载均衡简单配置准备三台虚拟机来做这个实验:192.168.232.132 web服务器192.168.232.133 web服务器192.168.232.134 负载均衡服务器首先三台电脑预装nginx软件:1、导入外部软件库[plain] view plain copy转载 2016-02-24 15:30:55 · 461 阅读 · 0 评论 -
在windows下编译nginx
又有人在windows下编译nginx – 为什么那么多人喜欢自残呢?官网教程Building nginx on the Win32 platform with Visual C本文基本上就是对着做,但需要对其进行微调 – 不爽吗?咬我啊!!准备工具系统: winxp sp3 32位, 例如你可以用个虚拟机什么的安装一个winxpMSYS-CN 20转载 2016-02-22 15:45:05 · 1757 阅读 · 0 评论 -
Windows下Nginx的启动、停止等命令
http://wanganwu.blog.163.com/blog/static/7788722012322111417966/Windows下Nginx的启动、停止等命令在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动、停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍。1、启动:C:\server\n转载 2016-02-17 14:45:35 · 428 阅读 · 0 评论 -
nginx启动,重启,关闭命令
停止操作停止操作是通过向nginx进程发送信号(什么是信号请参阅linux文 章)来进行的步骤1:查询nginx主进程号ps -ef | grep nginx在进程列表里 面找master进程,它的编号就是主进程号了。步骤2:发送信号从容停止Nginx:kill -QUIT 主进程号快速停止Nginx:kill -TERM 主进程号强制停止Nginx:pkill -9 nginx另外, 若在ngi...转载 2018-06-21 16:48:25 · 1163 阅读 · 0 评论 -
agentzh 的 Nginx 教程(版本 2016.07.21)
目录缘起Nginx 教程的连载计划Nginx 变量漫谈(一)Nginx 变量漫谈(二)Nginx 变量漫谈(三)Nginx 变量漫谈(四)Nginx 变量漫谈(五)Nginx 变量漫谈(六)Nginx 变量漫谈(七)Nginx 变量漫谈(八)Nginx 配置指令的执行顺序(一)Nginx 配置指令的执行顺序(二)Nginx 配置指令的执行顺序(三)Nginx 配置指令的执行顺序(四)Nginx 配...转载 2018-06-21 16:49:55 · 601 阅读 · 0 评论 -
nginx 配置指令的执行顺序
Nginx 的请求处理阶段共有11个:post-readserver-rewrite ngx_rewrite 模块的配置指令直接书写在 server 配置块中时,基本上都是运行在 server-rewrite 阶段find-config 完成了当前请求与 location 的配对。在此阶段之前,请求并没有与任何 location 配置块相关联rewrite set, ngx_set_misc 的 ...转载 2018-06-21 16:53:30 · 1344 阅读 · 0 评论 -
OpenResty的现状、趋势、使用及学习方法
1. OpenResty 是什么,适合什么场景下使用和大部分知名开源软件诞生在欧美国家不同,OpenResty 自身和依赖的主要组件都是金砖国家的开发者发明的,这点还挺有意思。Nginx 是俄罗斯人发明的, Lua 是巴西几个教授发明的,中国人章亦春把 LuaJIT VM 嵌入到 Nginx 中,实现了 OpenResty 这个高性能服务端解决方案。通过 OpenResty,你可以把 nginx ...转载 2018-06-10 20:46:40 · 1009 阅读 · 0 评论 -
centos7安装Nginx
安装所需环境Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本,本篇则使用 CentOS 7 作为安装环境。一. gcc 安装安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:yum install gcc-c++二. PCRE pcre-devel 安装PCRE(Perl Compatibl...转载 2018-06-10 18:53:06 · 193 阅读 · 0 评论 -
Haproxy和Nginx负载均衡测试效果对比记录
为了对比Hproxy和Nginx负载均衡的效果,分别在测试机上(以下实验都是在单机上测试的,即负载机器和后端机器都在一台机器上)做了这两个负载均衡环境,并各自抓包分析。下面说下这两种负载均衡环境下抓包分析后的结果:1)Haproxy负载均衡环境下的实验记录。后端有一台机器挂掉后,如果还没达到探测的时间点时,请求还会往挂掉的这台机器转发,请求会丢失。Haproxy负载均衡的实验记录如下:1--先看下...转载 2018-06-24 17:21:54 · 502 阅读 · 0 评论 -
【 Linux 】三大主流软件负载均衡器对比(LVS、Nginx、HAproxy)
大主流软件负载均衡器对比(LVS、Nginx、HAproxy) (资料来自网络,做了部分的补充说明)LVS: 1. 抗负载能力强,性能高,能达到F5的60%,对内存和CPU资源消耗比较低 2. 工作在网络4层,通过VRRP协议(仅作代理之用),具体的流量是由linux内核来处理,因此没有流量的产生。 3. 稳定,可靠性高,自身有完美的热备方案(Keepalived+lvs) ...转载 2018-06-24 17:20:35 · 1027 阅读 · 0 评论 -
NGINX + LUA实现复杂的控制
第一个lua脚本ngx.say 是打印的打印输出的意思。。。location /echo {default_type text/plain;echo hello lua;}location /lua {default_type text/plain;content_by_lua 'ngx.say("hello world")';}用lua脚本做nginx的访问的限制...locati...转载 2018-06-24 15:51:28 · 30762 阅读 · 0 评论 -
Nginx模块Lua-Nginx-Module学习笔记(一)Nginx Lua API 接口详解
一、介绍 各种* _by_lua,* _by_lua_block和* _by_lua_file配置指令用作nginx.conf文件中Lua API的网关。 下面描述的Nginx Lua API只能在这些配置指令的上下文中运行的用户Lua代码中调用。API以两个标准软件包ngx和ndk的形式暴露给Lua。 这些软件包位于ngx_lua中的默认全局范围内,并且始终可在ngx_lua指令中使用。这些包...转载 2018-06-22 16:23:55 · 1174 阅读 · 2 评论 -
ngx_lua 模块
ngx_lua模块的原理:1、每个worker(工作进程)创建一个Lua VM,worker内所有协程共享VM;2、将Nginx I/O原语封装后注入 Lua VM,允许Lua代码直接访问;3、每个外部请求都由一个Lua协程处理,协程之间数据隔离;4、Lua代码调用I/O操作等异步接口时,会挂起当前协程(并保护上下文数据),而不阻塞worker;5、I/O等异步操作完成时还原相关协程上下文数据,并...转载 2018-06-22 16:14:45 · 327 阅读 · 0 评论 -
Nginx变量使用方法详解
在 Nginx 配置中,变量只能存放一种类型的值,那就是字符串。1 自定义变量1.1 配置 $foo=helloserver { listen 8080; server_name localhost; location /test { set $foo hello; echo "foo: $foo"; }...转载 2018-06-22 16:09:43 · 2860 阅读 · 0 评论 -
Nginx配置文件nginx.conf中文详解
#定义Nginx运行的用户和用户组user www www;#nginx进程数,建议设置为等于CPU总核心数。worker_processes 8;#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]error_log /var/log/nginx/error.log info;#进程文件pid /var/run/nginx.pid...转载 2018-06-21 16:58:45 · 182 阅读 · 0 评论 -
nginx 源码学习笔记(六)——nginx基本数据结构
简单的数据类型在core/ngx_confing.h中定义了基本的数据类型的映射,大部分都映射到c语言自身的数据类型:typedef intptr_t ngx_int_t;typedef uintptr_t ngx_uint_t;typedef intptr_t ngx_flag_t;其中ngx_int_t,ngx_f转载 2015-12-05 14:52:02 · 385 阅读 · 0 评论 -
nginx 源码学习笔记(十)——基本容器——ngx_hash
ngx_hash.{c|h}实现了nginx里面比较重要的一个hash结构,这个在模块配置解析里经常被用到。该hash结构是只读的,仅在初始创建时可以给出保存在其中的key-val对儿,然后就只能进行“增删改查”操作了。先来看一下hash结构的内存布局:[cpp] view plaincopyprint?typedef s转载 2015-12-05 14:55:36 · 442 阅读 · 0 评论 -
nginx 源码学习笔记(八)——基本容器——array数组
对应文件为core/ngx_array.{c|h}ngx_array是nginx内部封装的,使用ngx_pool_t对内存池进行分配的数组容器,其中的数据是在一整片内存区中连续存放的。更新数据时只能在尾部压入1个或多个元素。这里单纯的觉得和数组没有差别。 数组的实现结构为:[cpp] view plaincopyprint?转载 2015-12-05 14:54:02 · 450 阅读 · 0 评论 -
nginx 源码学习笔记(十七)—— ngx_worker_process_cycle子进程执行
上一节主要讲解主进程如何开启子进程,并且讲解了主进程做的一些操作,这一节主要学习子进程处理函数ngx_worker_process_cycle[cpp] view plaincopyprint?src/os/unix/ngx_process_cycle.c static void ngx_worker_process_cycle(转载 2015-12-03 19:09:47 · 719 阅读 · 0 评论 -
nginx源码分析—全局变量ngx_cycle的初始化
链接:http://blog.youkuaiyun.com/livelylittlefish/article/details/7247080Content0.序1. ngx_cycle_t结构2. ngx_init_cycle()分析3.注意问题3.1如何调用CORE模块的callback函数?3.2 open_files链表中的文件名何时初始化?转载 2015-12-01 19:51:04 · 150 阅读 · 0 评论 -
nginx 源码学习笔记(十五)—— ngx_master_process_cycle 多进程(一)
了解core模块之前还应改学习ngx_start_worker_processes函数,今天我就来详细学一下这个方法,主要内容来自于http://blog.sina.com.cn/s/blog_677be95b0100iivk.html。 nginx的进程启动过程是在ngx_master_process_cycle(src/os/unix/ngx_process_cycle.c)中转载 2015-12-01 20:14:26 · 444 阅读 · 0 评论 -
nginx 源码学习笔记(一)——初识nginx helloworld模块
最近看完一本书,而且还是跟我一个学校的人写的关于nginx的内容,个人觉得内容可以更充实点,包括整本书的后半本没有太大的价值,但是总体来说还是不错的哈哈!(是不有点自恋),不费话了,今天记录下我刚刚编写的nginx hello_world模块内容,网上也没有源代码,就完全手敲了,累呀! 1.nginx模块首先nginx和apache最大的不同就是nginx的模块不能够动态添加,需要转载 2015-11-28 16:44:42 · 132 阅读 · 0 评论 -
nginx 源码学习笔记(五)——nginx精粹-模块
我们之前说过模块的上下文分别对应四种结构体分别是ngx_core_module_t、ngx_event_module_t、ngx_http_module_t、ngx_mail_module_t分别对应四类模块[cpp] view plaincopyprint?src/core/ngx_conf_file转载 2015-11-28 16:54:34 · 446 阅读 · 0 评论 -
nginx 源码学习笔记(四)——nginx精粹-模块
接下来,继续理解helloworld模块中的指令。[cpp] view plaincopyprint?helloworld中的代码 /* Commands */ static ngx_command_t ngx_http_hello_world_commands[] = { { ngx_string("hello_转载 2015-11-28 16:50:47 · 386 阅读 · 0 评论 -
nginx 源码学习笔记(三)——nginx精粹-模块
下面开始真正"nginx之旅",屏住呼吸吧!首先找好入手点,对于nginx的入手点就是ngx_module_t结构,他的声明在src/core/ngx_conf_file.h中(我的版本nginx-1.0.13)[cpp] view plaincopyprint?#define NGX_MODULE_V1 0, 0,转载 2015-11-28 16:49:34 · 440 阅读 · 0 评论 -
nginx 源码学习笔记(二)——nginx精粹-模块
看了一点nginx的源码发现,nginx的模块思想确实吸引了我,也不得不佩服俄罗斯人的想问题方式,要分析nginx源码,首先要搞懂的就是nginx的模块思想以及相关的数据结构。还记得我们上一次写的helloworld模块么?里面涉及最重要的数据就是ngx_module_t指针数组,这个指针数组包含了当前编译版本支持的所有模块,这个指针数组定义实在自动脚本生成的objs/ngx_module转载 2015-11-28 16:46:33 · 359 阅读 · 0 评论 -
nginx源码学习----内存池
最近在进行监控平台的设计,之前一直觉得C/C++中最棘手的部分是内存的管理上,远不止new/delete、malloc/free这么简单。随着代码量的递增,程序结构复杂度的提高。各种内存方面的问题悄然滋生。而且作为平台,后期的插件扩展在所难免。长时间运行的采集平台的特性更是提出了对稳定性的高要求。不是c#、java,没有虚拟机为你管理内存,一切都要靠自己。于是想看看nginx、python、lua转载 2015-10-25 00:41:49 · 337 阅读 · 0 评论 -
nginx 源码学习笔记(十九)—— nginx启动过程函数调用图
学了很久的nginx启动流程,今天决定复习下以前所学的知识,画一个函数调用图,一边之后快速阅读代码。希望对大家有用,由于我的博文被大量网站抓取而且不标注来源,所以决定在图上加上水印,希望各位同学不要喷我。 该文章来自:http://blog.youkuaiyun.com/lengzijian/article/details/7597852 另外:因为不知道大家转载 2015-12-04 09:42:18 · 449 阅读 · 0 评论 -
nginx 源码学习笔记(十八)—— ngx_add_inherited_sockets 继承的sockets
之前几节有讲过多进程的创建过程和子进程所处理的事情,今天要讲一下nginx里面main函数的另一个主要的操作ngx_add_inherited_sockets。ngx_add_inherited_sockets:服务器监听套接字的封装。本文的主要灵感来自:http://blog.youkuaiyun.com/livelylittlefish/article/details/7277607,感谢转载 2015-12-04 09:40:44 · 592 阅读 · 0 评论 -
nginx 源码学习笔记(二十)—— event 模块(一) ——初始化
读完之前的学习笔记,相信已经对nginx的启动流程有了一定的认识,从这一节起我们想深入各个模块,学习各个模块的内的主要操作。本文来自于:http://blog.youkuaiyun.com/lengzijian/article/details/7598996今天我们就来学习下event模块,在之前的启动里多次提到了调用各个模块的钩子函数,我们先来回忆一下关于event模块钩子函数的转载 2015-12-04 09:43:52 · 530 阅读 · 0 评论 -
nginx 源码学习笔记(十一)——基本容器——ngx_list
ngx_list.{c|h}结构非常简单,如果你看过之前的array介绍,这一节可以一带而过:[cpp] view plaincopyprint?typedef struct ngx_list_part_s ngx_list_part_t; struct ngx_list_part_s { void转载 2015-12-05 14:56:10 · 378 阅读 · 0 评论 -
nginx 源码学习笔记(九)——基本容器——queue
src/core/ngx_queue.{c|h}实现了一个队列的操作逻辑,队列的基本结构为一个双向队列基础数据结构为:[cpp] view plaincopyprint?typedef struct ngx_queue_s ngx_queue_t; struct ngx_queue_s { ngx_que转载 2015-12-05 14:54:38 · 386 阅读 · 0 评论 -
nginx 源码学习笔记(七)——内存分配相关源码分析
内存分配相关1. 系统功能封装内存相关的操作主要在os/unix/ngx_alloc.{h,c} 和 core/ngx_palloc.{h,c}中。其中os/unix/ngx_alloc.{h,c}封装了最基本的内存分配函数,是对c原有的malloc/free/memalign等函数的封装,对应函数为:a.ngx_alloc:对malloc进行了简单的封装;转载 2015-12-05 14:53:11 · 415 阅读 · 0 评论