nginx模块开发

X-WAF 安装配置指南

百般思念 提交于 2019-11-26 20:42:59
X-WAF 是一款方便易用的云WAF,使用反向代理的方式介入Web服务器和访问者之间,不需要像 modSecurity 和 Naxsin 那样作为nginx的模块,需要进行编译安装 X-WAF使用 OpenResty 作为反向代理软件,并借助 OpenResty 的 Lua 作为防御脚本的编写和运作工具 所以,实际上X-WAF就是一个运行在 OpenResty 上的 Lua 脚本,并借助了 OpenResty(nginx) 的多平台适用性,可以在各种操作系统运行 部署X-WAF的过程时间是就是安装 OpenResty,加载Lua脚本,然后建立虚拟主机,并把虚拟主机的访问直接发送给原本的php、tomcat或者nginx的过程 如果是已经有基于nginx+php构建的站点,就需要把网站配置到 OpenResty 上(80或443端口),把原来的nginx里的虚拟主机的端口改为其他端口比如8080,为防止用户通过原有IP或域名+8080端口访问,甚至原有nginx主机配置里面IP都可以直接修改为127.0.0.1。而OpenResty的虚拟主机配置上就通过proxy_pass把访问发送到127.0.0.1:8080的原有nginx上 项目地址: https://waf.xsec.io/ github: https://github.com/xsec-lab/x-waf 管理后台

一张脑图说清 Nginx 的主流程

我是研究僧i 提交于 2019-11-26 19:20:45
一张脑图说清 Nginx 的主流程 这个脑图在 nginx-1.14.0-research 上。这是我在研究nginx的http模块的时候画的。基本上把 Nginx 主流程(特别是 HTTP 的部分)的关键函数和关键设置画了下来,了解了这个脑图,就对整个 Nginx 的主流程有了定性的了解了。 Nginx 的启动过程分为两个部分,一个部分是读取配置文件,做配置文件中配置的一些事情(比如监听端口等)。第二个部分是形成 Master-Worker 的多进程模型。这两个过程就是 Nginx 代码中最重要的两个函数: ngx_init_cycle 和 ngx_master_process_cycle ngx_init_cycle ngx_init_cycle 是 Nginx 中最重要的函数,没有之一。我们可以想想,如果我们写一个和 Nginx 一样的 Web 服务,我们会怎么做?我们大致的思路一定是解析配置文件,把配置文件存入到一个数据结构中,然后根据数据结构,进行端口监听。是的,差不多,Nginx 就是这么一个流程。不过 Nginx 里面有个模块的概念,所有的功能都是用模块的方式进行加载的。 Nginx 的模块 Nginx 的模块分为几类,这几类分别为 Core,Event,Conf,Http,Mail。看名字就知道 Core 模块是最重要的。模块是什么意思呢?它包含一堆命令(cmd

kubernetes的配置中心configmap

半腔热情 提交于 2019-11-26 17:39:22
在企业中,一般都有2-4种环境,开发,测试,交付,生产这四种。这几种环境的配置也有所变化,我们在部署的时候通常不能一个配置文件部署四个环境。不通用。特别是容器化环境。 在容器化应用中,每个环境都要独立的打一个镜像再给镜像一个特有的tag,这很麻烦,这就要用到k8s原生的配置中心configMap就是用解决这个问题的。下面看示例。 使用configMap部署应用。 这里使用nginx来做示例,简单粗暴。 默认的nginx数据目录是在:/usr/share/nginx/html 目录,下面我写一个配置指定端口和数据目录 1、先将配置文件加载到configMap中 编写nginx配置 [root@server yaml]# vim nginx.conf server { listen 8081; ##端口为8081 server_name _; root /html; ##改数据目录为/html location / { } } 将上面写的nginx.conf加载到configMap中 创建configMap有三个方法 1)单个key 命令格式: 例:kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm 查看:kubectl get

OpenResty(nginx+lua) 入门

狂风中的少年 提交于 2019-11-26 15:56:27
OpenResty 官网:http://openresty.org/ OpenResty 是一个nginx和它的各种三方模块的一个打包而成的软件平台。最重要的一点是它将lua/luajit打包了进来,使得我们可以使用lua脚本来进行web的开发。有了lua,我们可以借助于nginx的异步非阻塞的功能,达到 使用 lua 异步并发访问后端的 MySQL, PostgreSQL, Memcached, Redis等等服务 。特别是特有的 ngx.location.capture_multi 功能让人印象深刻,其可以达到极大的 减少浏览器的http连接数量,并且可以异步并发的访问后台 Java/PHP/Python 等等接口 。OpenResty 架构的web可以轻松超越Node.js的性能,并且对后端语言没有限制,你可以使用Java/PHP/Python等等各种语言。OpenResty(nginx+lua)可以替代node.js的前端渲染的功能。 OpenResty (aka. ngx_openresty) is a full-fledged web application server by bundling the standard Nginx core, lots of 3rd-party Nginx modules , as well as most of their

三大WEB服务器对比分析(apache ,lighttpd,nginx)

非 Y 不嫁゛ 提交于 2019-11-26 12:38:37
一.软件介绍 (apache lighttpd nginx) 1. lighttpd Lighttpd 是一个具有非常低的内存开销, cpu 占用率低,效能好,以及丰富的模块等特点。 lighttpd 是众多 OpenSource 轻量级的 web server 中较为优秀的一个。支持 FastCGI, CGI, Auth, 输出压缩 (output compress), URL 重写 , Alias 等重要功能。 Lighttpd 使用 fastcgi 方式运行 php, 它会使用很少的 PHP 进程响应很大的并发量。 Fastcgi 的优点在于: · 从稳定性上看 , fastcgi 是以独立的进程池运行来 cgi, 单独一个进程死掉 , 系统可以很轻易的丢弃 , 然后重新分配新的进程来运行逻辑 . · 从安全性上看 , fastcgi 和宿主的 server 完全独立 , fastcgi 怎么 down 也不会把 server 搞垮 , · 从性能上看 , fastcgi 把动态逻辑的处理从 server 中分离出来 , 大负荷的 IO 处理还是留给宿主 server, 这样宿主 server 可以一心一意作 IO, 对于一个普通的动态网页来说 , 逻辑处理可能只有一小部分 , 大量的图片等静态 IO 处理完全不需要逻辑程序的参与 ( 注 1) · 从扩展性上讲 ,

Nginx :Nginx入门(简介)

半城伤御伤魂 提交于 2019-11-26 05:22:38
一、什么是 Nginx Nginx 是俄罗斯人编写的十分轻量级的 HTTP 服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP(Nginx从1.9.0也可以做TCP的路由)和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而闻名.业界一致认为它是 Apache2.2+mod_proxy_balancer 的轻量级代替者,不仅是因为响应静态页面的速度非常快,而且它的模块数量达到 Apache 的近 2/3。对 proxy 和 rewrite 模块的支持很彻底,还支持 mod_fcgi、ssl、vhosts ,适合用来做 mongrel clusters 的前端 HTTP 响应。 目前Nginx在国内很多大型企业都有应用,且普及率呈逐年上升趋势。 选择Nginx的理由 : 第一,它可以支持5W左右的高并发连接; 第二,内存消耗少; 第三,成本低。 二、Nginx在架构中发挥的作用 ① 网关:面向客户的总入口 ② 虚拟主机:一台机器为不同的域名/ip/端口提供服务 ③ 路由:使用反向代理,整合后续服务为一个完整业务 ④ 静态资源服务器:mvvm模式中,用来发布前端html/css/js/img,也可以作为图片服务器使用 ⑤ 负载集群:使用upstream,负载多个服务

Nginx Rewrite模块(内含Nginx模块概述)———理论篇

我的梦境 提交于 2019-11-26 03:14:11
Rewrite跳转场景 URL看起来更规范,合理 企业会将动态URL地址伪装成静态地址提供服务 网址换新域名后,让旧的访问跳转到新的域名上 服务端某些业务调整 Rewrite跳转实现 Rewrite实用场景 1、Nginx跳转需求的实现方式 使用rewrite进行匹配跳转 使用if匹配全局变量后跳转 使用location匹配再跳转 2、rewrite放在server{},if{},location{}段中 3、对域名或参数字符串 使用if全局变量匹配 使用proxy_pass反向代理 常用的正则表达式元字符 Rewrite命令 语法: rewrite <regex> <replacement> [flag]; 正则 跳转后的内容 rewrite支持的flag标记 flag标记说明: last和break比较: location分类 分类: location = patt {} [精准匹配] location patt {} [一般匹配] location ~ patt {} [正则匹配] 正则匹配的常用表达式: location优先级 **相同类型的表达式,字符创长的会优先匹配** **按优先级排列** = 类型 ^~ 类型表达式 正则表达式(~和~*)类型 常规字符串匹配类型,按前缀匹配 通常匹配(/),如果没有其他匹配,任何请求都会匹配到 比较rewrite和location

LNMP架构介绍与搭建

早过忘川 提交于 2019-11-26 01:48:20
笔记内容: 12.1 LNMP架构介绍 12.2 MySQL安装 12.3/12.4 PHP安装 12.5 Nginx介绍 笔记日期:2017.10.18 <br> 12.1 LNMP架构介绍   LNMP架构和LAMP架构挺像的,只不过一个用的Apache一个用的Nginx。LNMP就是Linux+Nginx+MySQL+PHP,Nginx和Apache一样都是web服务器。   还有一点不同的是在LNMP结构里php会启动一个服务:php-fpm,而LANP中php只是作为Apache的一个模块存在。Nginx会把用户的动态请求交给php服务去处理,这个php服务就会去和数据库进行交互。用户的静态请求Nginx会直接处理,Nginx处理静态请求的速度要比apache快很多性能上要好,所以apache和Nginx在动态请求处理上区别不大,但如果是静态请求处理的话就会明显发现Nginx要快于apache,而且Nginx能承受的并发量要比apache大,可以承受好几万的并发量,所以大一些的网站都会使用Nginx作为web服务器。 <br> 12.2 MySQL安装   因为之前安装了mysql,所以我得先卸载: 还需要删除库文件目录: rm -rf /data/mysql/* <br> 卸载完后下载mysql的二进制包: http://mirrors.sohu.com/mysql

Nginx服务模块详解

▼魔方 西西 提交于 2019-11-26 01:24:34
Nginx 工作原理 Nginx 由内核和模块组成 Nginx 本身做的工作实际很少,当它接到一个 HTTP 请求时, 它仅仅是通过查找配置文件将此次请求映射到一个 location block,而此 location 中所配 置的各个指令则会启动不同的模块去完成工作,因此模块可以看做 Nginx 真正的劳动工作者。 通常一个 location 中的指令会涉及一个 handler 模块和多个 filter 模块(当然,多个 location 可以复用同一个模块)。handler 模块负责处理请求,完成响应内容的生成,而 filter 模块对响应内容进行处理。 用户根据自己的需要所开发的模块都属于第三方模块。正是有了这么多模块的支撑, Nginx 的功能才会如此强大。 Nginx 的模块从结构上分为核心模块、基础模块和第三方模块:  核心模块: HTTP 模块、EVENT 模块和 MAIL 模块;  基础模块: HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite 模块; 第三方模块: HTTP Upstream Request Hash 模块、Notice 模块和 HTTP Access Key 模 块。  Nginx 的模块从功能上分为如下三类:  Handlers(处理器模块) :此类模块直接处理请求

Nginx工作原理

北战南征 提交于 2019-11-25 23:25:00
Nginx 工作原理 Nginx 由内核和模块组成。 Nginx 本身做的工作实际很少,当它接到一个 HTTP 请求时, 它仅仅是通过查找配置文件将此次请求映射到一个 location block,而此 location 中所配 置的各个指令则会启动不同的模块去完成工作,因此模块可以看做 Nginx 真正的劳动工作者。 通常一个 location 中的指令会涉及一个 handler 模块和多个 filter 模块(当然,多个 location 可以复用同一个模块)。handler 模块负责处理请求,完成响应内容的生成,而 filter 模块对响应内容进行处理。 用户根据自己的需要所开发的模块都属于第三方模块。正是有了这么多模块的支撑, Nginx 的功能才会如此强大。 Nginx 的模块从结构上分为核心模块、基础模块和第三方模块:  核心模块:HTTP 模块、EVENT 模块和 MAIL 模块;  基础模块:HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite 模块; 第三方模块:HTTP Upstream Request Hash 模块、Notice 模块和 HTTP Access Key 模 块。  Nginx 的模块从功能上分为如下三类:  Handlers(处理器模块):此类模块直接处理请求