1 nginx
1.1、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万次/秒
1.2、Nginx下载
1.3、Nginx的安装
注意事项: Nginx安装目录 不要装到C盘,并且路径不要有中文 空格 及系统目录.
1.4、Nginx 启动
说明:双击nginx.exe 之后检查系统的启动项,
访问网址: localhost:80
1.5、关于nginx 进程项说明
命令执行位置: 执行命令时需要在nginx的根目录中执行.
之后地址栏中 键入 cmd进入dos命令创建中.
启动命令 start nginx
重启命令 nginx -s reload
关闭命令 nginx -s stop
2 反向代理/正向代理说明
2.1 关于代理映射的说明
2.2 反向代理(必会)
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
特点:
- 反向代理服务器位于用户和目标服务器之间.
- 反向代理服务器就相当于目标服务器.(用户以为代理服务器就是真实服务器)
- 用户通过反向代理服务器获取资源 而不是直接访问真实服务器.
- 用户不清楚真实的服务器到底是谁.
- 反向代理是服务器端代理.保护真实服务器信息.
特征: 用户不清楚真实目标服务器是谁.
情景题:
人物介绍:
A. 大叔 : 年薪800万 废物利用回收公司CEO 今年60 寻以为18-25岁 适龄女青年 共度余生 --(服务器)
B. 女生 : 特漂亮 身材好 标准: 事业有成 年龄无所谓(为人低调 害羞) —(客户端)
C. 女生找闺蜜帮忙: 帮我瞧瞧这老头 到底还能多久. 看看我委屈几年… --(代理)
约会地点: 三里屯 夜色酒吧 8号卡座 A-----女闺蜜------女生
2.3 正向代理(必会)
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
特点:
1.代理服务器位于用户和服务器之间
2.用户发起请求之前已经清楚的知道谁的目标服务器.
3.用户通过代理服务器到指定的目标服务器获取资源.
4.正向代理保护的是客户端信息**,是客户端代理**
2.4关于正向/反向代理总结
正向代理是客户端代理,用户清楚的知道访问的服务器是谁. 保护了客户端信息
反向代理是服务器端代理.用户不清楚访问的真实服务到底是谁. 保护了服务端信息
3.1 关于Nginx反向代理配置
http {
#http协议内,可以有多个服务 每个服务就是一个server
server {
# 监听用户访问的端口 默认是80端口
listen 80;
# server_name 服务名称 浏览器的访问域名
server_name localhost;
#配置反向代理的实现 / 拦截所有的用户请求
location / {
# root代表关键字 代表反向代理的目录
root html;
# index 代表默认的访问页面
index index.html index.htm;
}
}
}
4. HOSTS文件
4.1 修改HOSTS文件
说明: 每个操作系统针对开发人员,在本地都会有一个hosts文件可以编辑.
windows: C:\Windows\System32\drivers\etc
利用工具软件管理HOSTS文件:
京淘配置
#左侧写IP地址 右侧写域名 中间使用空格分隔 配置内容
127.0.0.1 image.jt.com
127.0.0.1 manager.jt.com
127.0.0.1 www.jt.com
127.0.0.1 sso.jt.com
4.2修改hosts文件权限
方式1
方式2: 以超级管理员的方式运行Switch hosts软件
方式3: 添加指定的用户权限 步骤 1.获取当前计算机的名称 PC 2.添加用户信息.
注意事项: 计算机名称不要写中文.
4.3 hosts文件是否生效
5 nginx域名代理
5.1业务需求
要求:用户通过http://manager.jt.com的方式 访问localhost:8091的服务器.
利用反向代理的方式实现该功能.
5.2配置nginx
# 商品管理服务器 监听的是用户 manager.jt.com:80 映射的是url地址
server {
listen 80;
server_name manager.jt.com;
#进行反向代理
location / {
#映射的url请求网址.
proxy_pass http://localhost:8091;
}
}
5.3 访问效果
6 Nginx属性学习
6.1 Nginx负载均衡原理
6.2.1 Nginx 集群搭建
说明: 要求启动3台服务器,运行jt-manager项目 端口号分别为8081/8082/8083, 通过/getPort请求,获取当前服务器端口号信息并且字符串返回.
6.2.2 动态获取当前服务器端口号
目的:为了能够在以后的负载均衡访问时看到自己访问的服务器到底是谁.
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class PortController {
//考点:动态复制操作
@Value("${server.port}")
private Integer port;
@RequestMapping("/getPort")
public String getPort(){
return "当前访问的端口号:"+port;
}
}
6.2.3 发布3台tomcat服务器
要求端口号:8081/8082/8083.
步骤:
1.将项目打包 将项目先clean- build----install
2.准备部署路径,之后将war包上传
3.利用命令运行服务器
4.访问测试
6.3轮询策略
说明: 根据nginx的配置文件,依次访问服务器.
# 商品管理服务器 监听的是用户 manager.jt.com:80 映射的是url地址
server {
listen 80;
server_name manager.jt.com;
#进行反向代理
location / {
#映射的url请求网址.
#proxy_pass http://localhost:8091;
proxy_pass http://jtWindows;
}
}
#配置集群 1.默认方式 轮询策略
upstream jtWindows {
server localhost:8081;
server localhost:8082;
server localhost:8083;
}
6.4 权重策略
说明: 性能越高的服务器,则承担的压力也就越高.
#配置集群 1.默认方式 轮询策略 2.权重策略
upstream jtWindows {
server localhost:8081 weight=6;
server localhost:8082 weight=3;
server localhost:8083 weight=1;
}
6.5 IPHASH策略
需求: 有时在访问时可能会固定的访问某台服务器. 将用户与服务器进行绑定. 以后用户只能访问该服务器.
算法: IPHASH算法.
配置:
#配置集群 1.默认方式 轮询策略 2.权重策略 3.IPhash策略
upstream jtWindows {
ip_hash;
server localhost:8081 weight=6;
server localhost:8082 weight=3;
server localhost:8083 weight=1;
}
弊端:
- 用户与服务器进行绑定,当服务器宕机时则可能影响用户的使用.
- 由于访问是通过算数计算的结果,可能导致严重的负载不均的现象.
7. Nginx 高级属性
7.1 down属性
说明:nginx在不做任何的配置时,无法感知服务器是否正常运行.所有会频繁的访问故障机.
解决方案: 可以利用down属性 来标识故障机.
#配置集群 1.默认方式 轮询策略 2.权重策略 3.IPhash策略
upstream jtWindows {
#ip_hash; server localhost:8081 weight=6;
server localhost:8081 down;
server localhost:8082 ;
server localhost:8083 ;
}
7.2 备用机策略
说明:正常情况下一般服务器部署时需要准备几台服务器当做备用.正常的情况下该服务器不参与工作.只有当主机遇忙时/或者宕机时.该服务器才会工作.
配置方式:
#配置集群 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;
}
7.3 nginx高可用配置
说明:当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;
}
配置说明:
如果nginx访问某台服务器时,如果该服务器访问失败,失败的次数达到最大失败次数时.在60秒之内,nginx不会再次访问故障机.直到下一个周期.