nginx模块开发

Nginx及其架构设计

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

Centos7安装Nginx实战

亡梦爱人 提交于 2019-11-27 08:45:19
一、背景 最近在写一些自己的项目,用到了nginx,所以自己动手来在Centos7上安装nginx,以下是安装步骤。 二、基本概念以及应用场景 1.什么是nginx Nginx是一款使用C语言开发的高性能的http服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。 2.Nginx的应用场景 (1).http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。 (2).虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。 (3).反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。 三、安装步骤 1.检查并安装所需的依赖软件 (1).gcc:nginx编译依赖gcc环境 安装命令:yum install gcc-c++ (2).pcre:(Perl Compatible Regular Expressions)是一个Perl库,包括perl兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式.

Nginx用法详解

旧城冷巷雨未停 提交于 2019-11-27 08:43:53
nginx作为一个高性能的web服务器,想必大家垂涎已久,蠢蠢欲动,想学习一番了吧,语法不多说,网上一大堆。下面博主就nginx的非常常用的几个功能做一些讲述和分析,学会了这几个功能,平常的开发和部署就不是什么问题了。因此希望大家看完之后,能自己装个nginx来学习配置测试,这样才能真正的掌握它。 1. 正向代理 正向代理:内网服务器主动去请求外网的服务的一种行为 光看概念,可能有读者还是搞不明白:什么叫做“正向”,什么叫做“代理”,我们分别来理解一下这两个名词。 正向:相同的或一致的方向 代理:自己做不了的事情或者自己不打算做的事情,委托或依靠别人来完成。 借助解释,回归到nginx的概念,正向代理其实就是说客户端无法主动或者不打算完成主动去向某服务器发起请求,而是委托了nginx代理服务器去向服务器发起请求,并且获得处理结果,返回给客户端。 从下图可以看出:客户端向目标服务器发起的请求,是由代理服务器代替它向目标主机发起,得到结果之后,通过代理服务器返回给客户端。 举个栗子:广大社会主义接班人都知道,为了保护祖国的花朵不受外界的乌烟瘴气熏陶,国家对网络做了一些“优化”,正常情况下是不能外网的,但作为程序员的我们如果没有谷歌等搜索引擎的帮助,再销魂的代码也会因此失色,因此,网络上也曾出现过一些fan qiang技术和软件供有需要的人使用,如某VPN等

玩转Nodejs的集群

老子叫甜甜 提交于 2019-11-27 07:29:51
在Nodejs中使用集群还是不容易的。Javascript的单线程属性让nodejs下的应用很难使用现代机器的多核特性。比如下面的代码实现了一个http服务器的主干部分。这部分代码只会执行在一个线程上,不管这段代码运行的机器是单核的cpu还是1000个内核的cpu。 var http = require("http"); var port = parseInt(process.argv[2]); http.createServer(function(request, response) { console.log("Request for: " + request.url); response.writeHead(200); response.end("hello world\n"); }).listen(port); 使用多核特性 只需要一点修改,上面的代码就可以把cpu的所有核心都用起来。上面的示例代码将使用 cluster 模块重构。 cluster 模块可以让你很容易的创建多个分享端口的进程。每一个进程使用一个系统核心,也就是代码中的 numCPUs 变量中cpu核心的一个。每一个子进程都实现了HTTP server,并监听指定的端口。 var cluster = require("cluster"); var http = require("http"); var

nginx反向代理原理及配置详解

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-27 06:17:15
nginx概述 nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。 这里主要通过三个方面简单介绍nginx 反向代理 负载均衡 nginx特点 1. 反向代理 关于代理 说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道; 此时就设计到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理操作过程;如同生活中的专卖店~客人到adidas专卖店买了一双鞋,这个专卖店就是代理,被代理角色就是adidas厂家,目标角色就是用户 正向代理 说反向代理之前,我们先看看正向代理,正向代理也是大家最常接触的到的代理模式,我们会从两个方面来说关于正向代理的处理模式,分别从软件方面和生活方面来解释一下什么叫正向代理 在如今的网络环境下,我们如果由于技术需要要去访问国外的某些网站,此时你会发现位于国外的某网站我们通过浏览器是没有办法访问的,此时大家可能都会用一个操作FQ进行访问,FQ的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们! 上述这样的代理模式称为正向代理

Nginx 极简教程

蓝咒 提交于 2019-11-27 06:05:55
目录 概述 安装与使用 http 反向代理配置 负载均衡配置 https 反向代理配置 静态站点配置 搭建文件服务器 跨域解决方案 概述 什么是 Nginx? Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 什么是反向代理? 反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 安装与使用 使用 nginx 的使用比较简单,就是几条命令。 常用到的命令如下: nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。 nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。 nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。 nginx -s reopen 重新打开日志文件。 nginx -c filename 为 Nginx 指定一个配置文件,来代替缺省的。 nginx -t 不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。 nginx -v 显示

Nginx之前后端分离(入门)

别说谁变了你拦得住时间么 提交于 2019-11-27 02:36:56
几个月前,公司架构优化,首先就是前后端分离。 所谓前后端分离,就是在传统的前后端代码都在一个项目里的基础上,将前后端代码抽离,把前端代码从后端项目了分离出来,前后端开发人员各自在自己的项目里开发。 为什么要前后端分离? 随着项目越做越大,功能模块越来越多,代码量越来越多,前后端代码都糅杂在一个项目里,前后端开发人员几十个,代码提交次数多而杂,项目变得很臃肿,代码维护人员的工作变得难做,此时亟待解决此问题,把前后端代码分离成两个项目,前后端开发人员各自维护自己的项目,使项目轻量化,便于维护。 前后端分离后带来的问题有哪些呢? 1、跨域。前后端分离后,势必各自部署,那么前后端就会存在跨域的问题。 2、前端项目部署方式。前后端各自部署,后端好说,继续用原来的方式部署就行了,前端怎么部署? 3、前后端怎么联调? 带着这3个问题,自然而然的就想到使用nginx做反向代理。 nginx [engine x]是一个HTTP和反向代理服务器,一个邮件代理服务器和一个通用的TCP / UDP代理服务器 我们线上用的是 Nginx ,分离后我们本地开发时有很多同事,还是使用原来的老方式, 把前端代码复制到项目里跑,这样太笨重。所以我就自己研究了一下 nginx ,配置好打好包分享给其他同事,在公司同事间推广。 nginx做前后端分离具体怎么使用的呢?下面来说一下。 首先我们在Windows上搞好

Nginx简单介绍以及linux下使用Nginx进行负载均衡的搭建

北城余情 提交于 2019-11-27 02:26:28
转载至: https://blog.csdn.net/liboyang71/article/details/77371595 今天我们来讨论一下关于Nginx的一些简单理解和认识,首先对Nginx进行一下简单的介绍 1.Nginx简介 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。 2.Nginx应用场景 1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。 2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。 3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。 3.概念解释 3.1正向代理 所谓正向代理其实就和我们平时所做的翻墙一样,例如:当我们想要访问某些国外的**网站时,因为某些原因我们无法访问到,这时候我们就可以找代理,代理有能力访问到那个网站,而我们只需要访问代理。就可以得到那个网站的内容了。且代理可以决定是否将用户信息告诉给网站。

Nginx

白昼怎懂夜的黑 提交于 2019-11-26 23:52:37
Nginx 是一个轻量级的高性能 Http WebServer,以事件驱动方式编写,因此相比 Apache 而言,Nginx 更加稳定、性能更好,而且配置简单,资源占用较低。 1. 安装 Nginx 从 v0.7.52 开始,Nginx 开始发布 Windows 版本的 Nginx,你可以在其官方网站上面下载:http://nginx.net 下载后直接解压即可,这里解压缩到c:\nginx目录。 2. 启动Nginx 命令行进入c:\nginx目录,运行nginx.exe,启动控制台窗口。默认启用80端口。用过Tomcat的人都希望能在控制台看到启动日志,nginx的日志却不得不查看logs目录下的相应log文件。 3. 访问欢迎html页 在浏览器中访问http://localhost,可以看到默认的欢迎页. 4. 停止Nginx Ctrl+C没反应。于是关闭控制台窗口。可是再访问http://localhost依然有效。查看进程,发现nginx根本没有被关闭。因此如果想彻底关闭nginx,应该是 Command代码 nginx -s stop 请参考官方文档 nginx/Windows usage 或者使用windows的taskkill命令: Command代码 taskkill /F /IM nginx.exe > nul 5. Ngnix常用配置

Nginx反向代理及负载均衡介绍

给你一囗甜甜゛ 提交于 2019-11-26 23:16:22
Nginx的产生 没有听过Nginx?那么一定听过它的"同行"Apache吧!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提供出色而又稳定的服务。