一、Nginx简介
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
二、Nginx特点
- nginx是非常优秀的反向代理服务器.
- 占用内存少 不到2M tomcat服务器占用多大内存 200M左右
- 并发(负载)能力强 3-5万次/秒
- tomcat服务器并发能力 250-500次/秒
- 调优之后可以实现1000次/秒
- nginx可以当作负载均衡服务器使用.
三、反向代理机制
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
特点:
- 反向代理服务器位于用户和服务器之间.
- 用户访问反向代理服务器,就可以获取真实的资源.
- 反向代理机制 用户无需了解真实的服务器信息.
- 反向代理保护了服务器端信息,也称之为服务器端代理
图示:

我们直接访问RB服务器访问不到或者速度特别慢,这时我们用台湾地区的代理服务器,由代理服务器去访问RB的服务器获得资源返回给我们。
四、正向代理
有反向代理那么就有正向代理的存在,正向代理,意思是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
特点:
- 正向代理服务器位于用户和服务器之间.
- 用户发起请求时,非常明确自己访问的服务器到底是谁
- 真实的服务器不清楚真实的用户是谁.保护了用户的信息.
- 也称之为客户端代理.
图示:

生活中最常用的路由器就是正向代理的体现,通过路由器访问原始目标服务器,把获取到的信息进行返回,服务器不知到用户的真实信息。
五、正向与反向
它们之间一般都是配合使用的,不存在谁多谁少之分用户每一次请求都包含了正向代理和反向代理.
正向代理一般适用于网络的通信.
反向代理一般适用于服务器获取信息.

六、Nginx的使用
前面介绍完了Nginx和反向代理的知识,下面我们来实践一下!
开启:下载好后进入目录中点击nginx.exe开启Nginx服务

注意:开启速度非常快,点击即开启
查看:进入任务管理器打开详细信息找到服务,在windows中nginx服务每次点击启动之后,都会生成2个进程项,但是在windows中nginx只能启动一次.
进程项1: nginx主要进程信息.
进程项2: nginx的守护进程 主要的任务防止主进程意外关闭.
关闭nginx 应该先关闭守护(内存小的)再关闭主进程(内存大的).

注意:nginx默认占用80端口,开启前应释放80端口的资源
访问本地路径出现如下页面则开启成功

Nginx命令:进入到目录下cmd执行
- 启动命令 start nginx
- 重启命令 nginx -s reload
- 关闭命令 nginx -s stop
注意:Nginx启动时不会报错,启动之后需要进行重启查看是否配置错误
编写配置文件(conf)
- nginx反向代理需要http协议支持.
- server 每个反向代理服务都是一个server.
- listen 关键字 默认监听80端口.
- server_name 根据指定的域名进行反向代理
- location 反向代理时拦截的策略 / 所有的请求
- root 代表反向代理的是一个目录
- index 默认访问的页面
http {
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}
具体业务:
上个项目我们在点击网络地址时可以访问到我们磁盘里的图片,这就是反向代理机制
步骤:
- 用户通过域名访问真实的服务器.
- nginx根据自身的配置进行拦截,根据配置文件将域名http://image.jt.com转化为具体的磁盘地址G盘的目录下
- 根据磁盘地址访问真实的服务器资源.
- 服务器将数据交给nginx,之后nginx将数据返回给用户.至此实现了反向代理.
进行conf配置:
server {
listen 80;
server_name image.jt.com;
location / {
root G:/images;
}
}
具体流程:

由于用户访问的是真实的外网,而我们又没有进行域名的登记,所以现在还是访问错误,这是我们就需要在Windows操作系统自带的方便测试的hosts文件里进行配置域名与本机的映射,注:该映射只对本机有效。
hosts文件:
地址:C:\Windows\System32\drivers\etc\hosts
每个电脑都有,切勿随意删除
添加映射:127.0.0.1 image.jt.com #映射到本机IP
到这里图片可以通过输入我们设定的网址访问我们本地的磁盘并完成回显功能了
以上业务只是简单的一个Demo,我们可以尝试把项目的所有访问本地换成网址然后用Nginx进行反向代理
Nginx实现Tomct集群部署
集群部署
upstream tomcats{
server 127.0.0.1:8091;
server 127.0.0.1:8092;
}
配置后台服务器
server{
listen 80;
server_name manage.jt.com;
location / {
#代理的是一个请求路径
proxy_pass http://tomcats;
}
}
Nginx负载均衡策略
1.轮询策略:tomcat服务器依次访问
upstream tomcats {
server 127.0.0.1:8091;
server 127.0.0.1:8092;
}
2.权重策略:根据权重设定,分配网络请求到不同的服务器中. 值越大访问越多.
upstream tomcats {
server 127.0.0.1:8091 weight=10;
server 127.0.0.1:8092 weight=1;
}
3.IPHASH:
使用场景:
- 让用户与服务器绑定.则可以使用ip_hash策略
- 方便进行压力测试.
- 某些用户的数据保存到服务器的Session中时,需要绑定数据.
- 公司特殊业务场景可能用到iphash.
upstream tomcats {
ip_hash;
server 127.0.0.1:8091;
server 127.0.0.1:8092;
}

说明:只要访问用户的IP不变,那么他访问的永远都是同一个端口
前端打包:
前端代码都是一些静态资源,我们可以将它们打包加入了到Nginx里,通过配置nginx.conf文件访问前端的资源。
总体业务流程图:

用户访问前端经过hosts映射到了本机,通过nginx反向代理访问到了前端资源,前端做出操作访问nginx代理到了后端,后端有两台服务器进行使用。
Nginx到这里就讲完了,下一篇讲Linux常用命令及项目的发布。
满怀希望就会所向披靡!!!
1082



被折叠的 条评论
为什么被折叠?



