1.正向代理/反向代理概念
在了解nginx之前,我们首先需要了解什么是正向代理,什么是反向代理。
1.1正向代理
正向代理服务器位于服务器与客户端之间,为了从服务器获取信息,客户端向代理服务器发送请求并指定目标服务器,由代理服务器向目标服务器获取信息,并将获得的内容返回给客户端。
特点:
- 代理服务器位于用户和服务器之间
- 用户发起请求之前已经清楚的知道谁的目标服务器.
- 用户通过代理服务器到指定的目标服务器获取资源.
- 正向代理保护的是客户端信息,是客户端代理.
1.2反向代理
反向代理同样位于客户端和服务器之间,但是对于客户端而言,反向代理服务器就相当于目标服务器,即客户端直接访问反向代理服务器就可以获得目标服务器的资源。客户端并不知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
特点:
- 反向代理服务器位于用户和目标服务器之间.
- 反向代理服务器就相当于目标服务器.(用户以为代理服务器就是真实服务器)
- 用户通过反向代理服务器获取资源 而不是直接访问真实服务器.
- 用户不清楚真实的服务器到底是谁.
- 反向代理是服务器端代理.保护真实服务器信息.
总结区别:
- 正向代理是客户端代理,用户清楚的知道访问的服务器是谁. 保护了客户端信息
- 反向代理是服务器端代理.用户不清楚访问的真实服务到底是谁. 保护了服务端信息
2.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网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
特点: 占有内存少 不超过2M ,并发能力强 3-5万次/秒
3.nginx入门使用
3.1nginx下载
nginx下载可去nginx官网进行下载:http://nginx.org/en/download.html
3.2nginx安装
nginx安装目录建议不要有中文空格或符号等,不要安装在系统盘目录下.安装完成文件如下:
3.3nginx启动及关闭
1.右键nginx.exe,选择以管理员身份启动.会看到一个窗口闪过.
2.打开任务管理器,查看进程,检查是否有两项nignx进程
3.启动成功后在浏览器输入:localhost可以看到nginx已经启动成功!
关闭可以去进程将两个nginx进程关闭即可(先关闭守护,之后关闭主)
3.4nginx命令
命令执行位置: 执行命令时需要在nginx的根目录中执行cmd进入dos窗口
启动命令 start nginx
重启命令 nginx -s reload
关闭命令 nginx -s stop
3.5nginx反向代理配置
- url地址: http://image.cy.com/xxx.jpg
- 本地磁盘地址: D:\CY-SOFT\images\xxx.jpg
目的:通过域名访问真实的磁盘地址.
可以利用nginx的反向代理完成配置.具体操作步骤如下:
找到conf目录下的nginx.conf配置文件,打开进行编辑
# 配置图片服务器
server {
listen 80;
server_name image.cy.com;
##通过网址转向指定的目录 注意/的写法
location / {
root D:/CY-SOFT/images;
}
}
4.nginx负载均衡
nginx可以对请求进行集中处理,分配请求至不同服务器当中。
4.1负载均衡策略
nginx分为3种常用的负载均衡策略分别为:
4.1.1 轮询策略
轮询策略: 根据nginx的配置文件,依次访问服务器.
# 商品管理服务器 监听的是用户 manager.cy.com:80 映射的是url地址
server {
listen 80;
server_name manager.cy.com;
#进行反向代理
location / {
#映射的url请求网址.
#proxy_pass http://localhost:8091;
proxy_pass http://cyWindows;
}
}
#配置集群 1.默认方式 轮询策略
upstream cyWindows {
server localhost:8081;
server localhost:8082;
server localhost:8083;
}
4.1.2 权重策略
使用情况:在大多数情况下,使用的是权重策略,因为实际业务中往往不同服务器具有不同的性能,我们需要让性能更高的服务器去处理更多的请求,就需要使用权重策略。
#配置集群 1.默认方式 权重策略
upstream cyWindows {
server localhost:8081 weight=6;
server localhost:8082 weight=3;
server localhost:8083 weight=1;
}
4.1.2 IPHash策略
使用情况:有时候,某项业务只能由指定的服务器进行处理,就需要使用IPHash策略将客户端与服务器进行绑定,以后用户只能访问该服务器.
算法: IPHASH算法.
#配置集群 1.默认方式 轮询策略 2.权重策略 3.IPhash策略
upstream cyWindows {
ip_hash;
server localhost:8081 weight=6;
server localhost:8082 weight=3;
server localhost:8083 weight=1;
}
弊端:
- 用户与服务器进行绑定,当服务器宕机时则可能影响用户的使用.
- 由于访问是通过算数计算的结果,可能导致严重的负载不均的现象.
4.2Nginx 高级属性
4.2.1down属性
当服务器出现故障时,可以使用down属性进行标识,可以避免nginx频繁发送请求至故障机
#配置集群 1.默认方式 轮询策略 2.权重策略 3.IPhash策略
upstream jtWindows {
#ip_hash; server localhost:8081 weight=6;
server localhost:8081 down;
server localhost:8082 ;
server localhost:8083 ;
}
4.2.2backup属性
正常情况下一般服务器部署时需要准备几台服务器当做备用.正常的情况下该服务器不参与工作.只有当主机遇忙时/或者宕机时.该服务器才会工作.
#配置集群 1.默认方式 轮询策略 2.权重策略 3.IPhash策略
upstream jtWindows {
#ip_hash; server localhost:8081 weight=6;
server localhost:8081 down;
server localhost:8082 down;
server localhost:8083 backup;
}
4.2.2高可用属性
当tomcat服务器宕机时,可以通过如下的配置,实现服务器的自动的切换.无需人为的干预.
fail_timeout=60s; 设定超时时间(定义一个周期)
max_fails=1 设定最大的访问失败次数.
#配置集群 1.默认方式 轮询策略 2.权重策略 3.IPhash策略
upstream jtWindows {
#ip_hash; server localhost:8081 weight=6;
server localhost:8081 max_fails=1 fail_timeout=60s;
server localhost:8082 max_fails=1 fail_timeout=60s;
server localhost:8083 max_fails=1 fail_timeout=60s;
}