nginx

nginx

1.nginx概念的基本讲解

导读模块:随着网民数量的增加,人们开始越来越多的使用互联网,这也就导致了互联网的请求的数量是逐年递增,那么该怎么处理呢?
例如:可能会出现这样的情况,大家在某一时刻同时并发的访问某一网络资源,那么传统的架构服务就不行了,为此我们要能
处理这样的高并发的情况,那么我们就迫切能出产一个类似于现实世界中“调度员”的角色来帮助我们处理高并发的事情。

1.nginx:

Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。
由俄罗斯的程序设计师IgorSysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。
其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好

简而言之:nginx是一个web的服务器软件

2.Nginx 相对于 Apache(Tomcat)优点:
1) 高并发响应性能非常好,官方 Nginx 处理静态文件并发 5w/s 
2) 反向代理性能非常强。(可用于负载均衡)
3) 内存和 cpu 占用率低。(为 Apache 的 1/5-1/10)
4) 对后端服务有健康检查功能。
5) 配置代码简洁且容易上手。 
3.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 的高并发得益于其采用了 epoll 模型(1.epoll模型示意图.png),与传统的服务器程序架构不同,epoll 是linux 内核 2.6 以后才出现的。 Nginx 采用 epoll 模型,异步非阻塞,而 Apache 采用的是select 模型

Select 特点:select 选择句柄的时候,是遍历所有句柄,也就是说句柄有事件响应时,
select 需要遍历所有句柄才能获取到哪些句柄有事件通知,因此效率是非常低。

epoll 的特点:epoll 对于句柄事件的选择不是遍历的,是事件响应的,就是句柄上事
件来就马上选择出来,不需要遍历整个句柄链表,因此效率非常高

4.nginx能做什么
反向代理
负载均衡
HTTP服务器(包含动静分离)
ps:请求的过滤,URL的缓存

2.nginx的安装和使用

1.nginx官网:http://nginx.org/en/
2.nginx的版本:

支持linux,windows等主流操作系统
我们今天使用的是windows下的nginx-1.6.3.zip

3.安装和使用:

Windows下的nginx安装只是将它放在D:/tools下简单的解压即可
最简单的使用:
备注:以下操作都是在黑窗体dos下展开的,而不是蓝色的那个
先进入nginx该目录下,然后启动: 进入D盘:d:
cd tools
cd nginx-1.6.3
启动命令: start nginx
验证是否启动成功:在浏览器上输入127.0.0.1如果能看到欢迎页面就可以了,可以参考:2.nginx验证启动成功了.png
快速停止:nginx -s stop
保存再停止(常用于生产环境):nginx -s quit
重新加载配置文件然后启动:nginx -s reload
但是需要注意了:
1)首先需要执行:验证配置是否正确: nginx -t,这样就可以获取到配置文件所在的路径了
2)重新给nginx指向其需要的配置文件(即是nginx.conf): nginx -c D:\tools\nginx-1.6.3/conf/nginx.conf
3)重新开启一个新的黑窗体并执行(且必须是在D:/tools/nginx-1.6.3/目录下):
nginx -s reload 即可重新加载配置文件启动了

3.常见的网络代理模式

3.1正向代理

正向代理(forward proxy) :一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并制定目标(原始服务器),
然后代理向原始服务器转发请求并将获得的内容返回给客户端,客户端才能使用正向代理。我们平时说的代理就是指正向代理。
简单一点:A向C借钱,由于一些情况不能直接向C借钱,于是A想了一个办法,他让B去向C借钱,这样B就代替A向C借钱,A就得到了C的钱,C并不知道A的存在,B就充当了A的代理人的角色

3.2反向代理

反向代理(Reverse Proxy):是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器

简而言之:就是nginx不是代理用户进行访问,而是代理服务器来分发用户的访问,进而达到负载均衡的效果/目的

反向代理的好处:
1)保护和隐藏原始资源服务器

2)可以起到负载均衡的效果

3.3正向代理和反向代理的区别

正向代理和反向代理的区别
位置不同
正向代理,架设在客户机和目标主机之间;
反向代理,架设在服务器端;

代理对象不同
正向代理,代理客户端,服务端不知道实际发起请求的客户端;
反向代理,代理服务端,客户端不知道实际提供服务的服务端

用途不同
正向代理,为在防火墙内的局域网客户端提供访问Internet的途径;
反向代理,将防火墙后面的服务器提供给Internet访问;

安全性不同
正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此必须采取安全措施以确保仅为授权的客户端提供服务;
反向代理都对外都是透明的,访问者并不知道自己访问的是哪一个代理。

小结: 正向代理是从客户端的角度出发,服务于特定用户(比如说一个局域网内的客户)以访问非特定的服务;反向代理正好与此相反,从服务端的角度出发,服务于非特定用户(通常是所有用户),已访问特定的服务。

3.4透明代理

透明代理:如果把正向代理、反向代理和透明代理按照人类血缘关系来划分的话。那么正向代理和透明代理是很明显堂亲关系,
而正向代理和反向代理就是表亲关系了 .透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改变你的request fields(报文),
并会传送真实IP。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理了。透明代理实践的例子就是时下很多公司使用的行为管理软件

4.nginx应用举例

4.1发布静态资源

1.将准备好的静态资源文件放在:E:\resources\statichtmls(其实就是几个html文件)

2.更改nginx的配置文件:nginx.conf(更改为启动静态资源的配置)

3.启动nginx服务:start nginx (一定要切换到nginx的目录下)

小结:配置静态资源服务器的话,就是把一部分请求分离出来,让这些请求直接访问到服务器的磁盘目录中,这样的话项目的静态资源通过nginx发布,而动态资源则继续交给tomcat ,这样的话就可以减少服务器中间件tomcat的压力,提升整个服务器的效率

4.2nginx实现负载均衡

负载均衡:其实是一个概念,这个概念提出来是为了解决高并发的这个问题, 实现负载(承受)上的均衡(匹配)

导读模块: 1)由nginx+tomcat模拟一个负载均衡,进而阐述什么是反向代理
2)在同一台电脑上配置两个tomcat,且修改其对应的端口,并启动这两个tomcat

1.第一步:修改两个Tomcat的端口,并启动

2.先关闭nginx的服务然后在修改其配置文件:
nginx -s stop
备注:会出现一个警告是因为路由域名解析异常不用管

3.修改nginx的配置文件即是nginx.conf , 可以参阅图:9.nginx发布动态资源实现负载均衡.png
代码可以参阅文件:nginx-负载均衡tomcat.conf

4.再次启动nginx服务: start nginx

5.通过浏览器访问url:http://localhost:80/index.jsp 或者http://localhost:80否可以看到同一访问不同的服务器(tomcat)在起作用,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值