nginx模块开发

nginx安装

谁说我不能喝 提交于 2020-02-09 18:10:35
inux下nginx的安装以及环境配置 刚好最近在处理服务器相关的工作,所以记录一下nginx的安装,ok,接下来直接开始操作! 第一步:下载nginx压缩包 在这里可以去nginx官网下载->点我下载nginx 也可以直接使用wget命令下载,指令如下所示(请根据自己的需求进行下载): wget -c https://nginx.org/download/nginx-1.10.1.tar.gz 1 注意:这一步最好在自己的目标目录进行操作,我一般是把压缩包下载到/usr/local目录下。 第二步:配置nginx安装所需的环境 安装gcc 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境。安装指令如下: yum install gcc-c++ 1 2. 安装PCRE pcre-devel Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法。这里需要安装两个安装包pcre和pcre-devel。第一个安装包提供编译版本的库,而第二个提供开发阶段的头文件和编译项目的源代码。安装指令如下: yum install -y pcre pcre-devel 1 3.安装zlib zlib库提供了开发人员的压缩算法,在Nginx的各种模块中需要使用gzip压缩。安装指令如下: yum install -y zlib zlib-devel 1

Nginx简介

折月煮酒 提交于 2020-02-08 15:39:40
一、反向代理 工作流程 用户通过域名发出访问Web服务器的请求,该域名被DNS服务器解析为反向代理服务器的IP地址; 反向代理服务器接受用户的请求; 反向代理服务器在本地缓存中查找请求的内容,找到后直接把内容发送给用户; 如果本地缓存里没有用户所请求的信息内容,反向代理服务器会代替用户向源服务器请求同样的信息内容,并把信息内容发给用户,如果信息内容是缓存的还会把它保存到缓存中。 优点:保护了真实的web服务器,保证了web服务器的资源安全 通常的代理服务器,只用于代理内部网络对Internet外部网络的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。不支持外部网络对内部网络的连接请求,因为内部网络对外部网络是不可见的。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。 节约了有限的IP地址资源 企业内所有的网站共享一个在internet中注册的IP地址,这些服务器分配私有地址

OpenResty学习指南(一)

做~自己de王妃 提交于 2020-02-06 00:09:19
我的博客: https://www.luozhiyun.com/archives/217 想要学好 OpenResty,你必须理解下面 8 个重点: 同步非阻塞的编程模式; 不同阶段的作用; LuaJIT 和 Lua 的不同之处; OpenResty API 和周边库; 协程和 cosocket; 单元测试框架和性能测试工具; 火焰图和周边工具链; 性能优化。 你不应该使用任何 Lua 世界的库来解决上述问题,而是应该使用 cosocket 的 lua-resty-* 库。Lua 世界的库很可能会带来阻塞,让原本高性能的服务,直接下降几个数量级。 OpenResty阶段 和nginx一样,都有阶段的概念,并且每个阶段都有自己不同的作用: set_by_lua,用于设置变量; rewrite_by_lua,用于转发、重定向等; access_by_lua,用于准入、权限等; content_by_lua,用于生成返回内容; header_filter_by_lua,用于应答头过滤处理; body_filter_by_lua,用于应答体过滤处理; log_by_lua,用于日志记录。 OpenResty 的 API 是有阶段使用限制的。每一个 API 都有一个与之对应的使用阶段列表,如果你超范围使用就会报错。 具体的API可以查阅文档: https://github.com

Nginx 原理和架构

若如初见. 提交于 2020-01-30 02:20:52
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处理网络请求与响应。 master进程主要用来管理worker进程,具体包括如下4个主要功能: 接收来自外界的信号。 向各worker进程发送信号。 监控woker进程的运行状态。 当woker进程退出后(异常情况下),会自动重新启动新的woker进程。 woker进程主要用来处理基本的网络事件: 多个worker进程之间是对等且相互独立的,他们同等竞争来自客户端的请求。 一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。 worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致。同时,nginx为了更好的利用多核特性,具有cpu绑定选项,我们可以将某一个进程绑定在某一个核上,这样就不会因为进程的切换带来cache的失效。 Ngnix 是如何实现高性能的? 事件驱动模型 基于异步及非阻塞的事件驱动模型,可以说是 Nginx

了解Nginx

孤街浪徒 提交于 2020-01-26 23:15:58
Nginx 的产生 Nginx 同 Apache 一样都是一种 Web 服务器。基于 REST 架构风格,以统一资源描述符(Uniform Resources Identifier)URI 或者统一资源定位符(Uniform Resources Locator)URL 作为沟通依据,通过 HTTP 协议提供各种网络服务。 然而,这些服务器在设计之初受到当时环境的局限,例如当时的用户规模,网络带宽,产品特点等局限并且各自的定位和发展都不尽相同。这也使得各个 Web 服务器有着各自鲜明的特点。 Apache 的发展时期很长,而且是毫无争议的世界第一大服务器。它有着很多优点:稳定、开源、跨平台等等。 它出现的时间太长了,它兴起的年代,互联网产业远远比不上现在。所以它被设计为一个重量级的。 它不支持高并发的服务器。在 Apache 上运行数以万计的并发访问,会导致服务器消耗大量内存。 操作系统对其进行进程或线程间的切换也消耗了大量的 CPU 资源,导致 HTTP 请求的平均响应速度降低。 这些都决定了 Apache 不可能成为高性能 Web 服务器,轻量级高并发服务器 Nginx 就应运而生了。 俄罗斯的工程师 Igor Sysoev,他在为 Rambler Media 工作期间,使用 C 语言开发了 Nginx。 Nginx 作为 Web 服务器一直为 Rambler Media

CentOS编译安装Nginx

a 夏天 提交于 2020-01-26 13:51:45
文章目录 Nginx安装 安装前所需环境 Nginx安装 Nginx运行 Nginx相关配置 启动目录列表功能 参考文章 Nginx安装 安装前所需环境 wget :用于从外网上下载插件 yum -y install wget gcc :GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器 yum install gcc-c++ pcre :PCRE(Perl Compatible Regular Expressions)安装 ,它是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库 yum install -y pcre pcre-devel openssl :它是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用; nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库 yum install -y openssl openssl-devel

Nginx工作原理和优化

…衆ロ難τιáo~ 提交于 2020-01-26 02:47:54
1. Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。 Nginx的模块从结构上分为核心模块、基础模块和第三方模块: 核心模块:HTTP模块、EVENT模块和MAIL模块 基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块, 第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。 用户根据自己的需要开发的模块都属于第三方模块。正是有了这么多模块的支撑,Nginx的功能才会如此强大。 Nginx的模块从功能上分为如下三类。 Handlers(处理器模块)。此类模块直接处理请求,并进行输出内容和修改headers信息等操作。Handlers处理器模块一般只能有一个。 Filters (过滤器模块)。此类模块主要对其他处理器模块输出的内容进行修改操作,最后由Nginx输出。 Proxies (代理类模块)。此类模块是Nginx的HTTP Upstream之类的模块

Nginx Http框架的理解

≡放荡痞女 提交于 2020-01-23 14:28:49
HTTP框架是Nginx基础框架的一部分,Nginx的其它底层框架如master-worker进程模型、event模块、mail 模块等。 HTTP框架代码主要有2个模块组成:ngx_http_module和ngx_http_core_module; 我们编写的HTTP模块需要注册到HTTP框架上,才能融入HTTP请求的处理流程中。 当在nginx.conf中存在一个http{...}的配置时,即启用了HTTP框架代码,在nginx配置解析时,就已经为框架建立好了各种数据结构(尤其是HTTP模块的挂载); 当nginx收到请求时,请求完全按照HTTP框架建立好的这种逻辑进行处理。 一、HTTP模块开发基础 开发一个HTTP模块,需要下面几个数据结构: 1. HTTP模块配置结构 用于存储从配置文件读进来的相关指令参数; 配置模块的context有三种,分别是main、server和location,它们分别位于于http{...}、server{...}和location{...}上下文中。 其名称约定如下: ngx_http_<module name>_(main|srv|loc)_conf_t 2.HTTP 模块配置指令 模块的指令是定义在一个叫做 ngx_command_t 的静态数组中的; ngx_command_t数组以ngx_null_command为终结符。

Nginx 高级配置

半城伤御伤魂 提交于 2020-01-23 03:01:11
Nginx 高级配置 文章目录 Nginx 高级配置 Nginx 状态页 Nginx 第三方模块 Nginx 变量使用 内置变量 自定义变量 Nginx 自定义访问日志 自定义默认格式日志 自定义json格式日志 json格式的日志访问统计 Nginx 压缩功能 https 功能 ssl 配置参数 自签名 证书 Nginx证书配置 实现多域名HTTPS 关于favicon.ico 安全选项 隐藏Nginx版本号: 升级OpenSSL版本: Nginx 状态页 基于nginx模块ngx_http_auth_basic_module实现,在编译安装nginx的时候需要添加编译参数--withhttp_stub_status_module,否则配置完成之后监测会是提示语法错误。 配置示例: [ root@ubuntu ~ ] #vim /apps/nginx/conf/conf.d/pc.conf location /nginx_status { # 这项值是什么访问后面的uri就加什么。 stub_status ; allow 192.168.0.0/16 ; # 只允许这个网段查看 allow 127.0.0.1 ; # 只允许本机查看 deny all ; # 拒绝所有 } # 最后的意思就是允许192.168.0.0/16、127.0.0.1(本机)其他的都拒绝。 #

Centos7.6搭建nginx 1.16.1并使用upstream_check_module模块

删除回忆录丶 提交于 2020-01-22 23:07:49
环境说明: 主机名 操作系统版本 ip nginx版本 httpd版本 备注 nginx Centos 7.6.1810 172.27.34.41 1.16.1 / nginx服务器 web01 Centos 7.6.1810 172.27.34.161 / 2.4.6 web服务器 web02 Centos 7.6.1810 172.27.34.162 / 2.4.6 web服务器 web03 Centos 7.6.1810 172.27.34.163 / 2.4.6 web服务器 一、nginx_upstream_check_module简介 1. 模块出处 由淘宝团队开发,淘宝自己的 tengine 上自带该模块。 2. 模块意义 nginx自带的针对后端节点健康检查的功能比较简单,无法主动识别后端节点状态,后端即使有不健康节点, 负载均衡器依然会把该请求转发给该不健康节点,只能等待超时时间后转发到其他节点,这样就会造成响应延迟性能降低的问题。 二、nginx安装 1. nginx下载 nginx版本查看: https://nginx.org/en/download.html 下载最新的稳定版本 nginx-1.16.1 源码包并解压 [root@nginx ~]# wget https://nginx.org/download/nginx-1.16.1.tar.gz