1.基于不同域名区分不同的项目 --- 配置两个server节点
背景说明,域名分别为:1) www.nginx.com 对应的端口号为8080 2) bbs.nginx.com 对应的端口号为8081
www.nginx.com域名访问的项目所在路径为 nginx安装目录下 data/www目录下的index.html
bbs.nginx.com域名访问的项目所在路径为 nginx安装目录下 data/bbs目录下的index.html
1.1) 配置http节点 --> server节点 下的属性
1.1.1) 属性 listen :配置server监听端口号
1.1.2) 属性 server_name:配置域名的
1.1.3) 属性 location节点下的 属性 root : 配置域名+监听端口号 访问的目的地
1.2) 修改windows系统中域名和IP映射文件,
windows系统hosts文件所在位置为:C:\Windows\System32\drivers\etc
Centos7 系统hosts文件所在位置为:/etc/
在hosts文件末尾添加:
127.0.0.1 www.nginx.com
127.0.0.1 bbs.nginx.com
1.3在nginx安装目录创建 data/www data/bbs 目录,并把安装nginx目录下html目录下index.html文件在data/www data/bbs
目录下分别拷贝一份,并作一个细小的改动,以区别不同的目录,便于测试
1.4) 配置案例 --注意 root 配置的目录,不能以 / 开头
server {
## server 监听的端口号
listen 8080;
###服务name 配置域名,配置域名
server_name www.nginx.com;
###location 匹配所有url地址
location / {
### 表示存放在nginx根目录 默认html文件
root data/www;
### 默认首页index.html
index index.html index.htm;
}
}
1.5)测试效果
2.基于相同的域名不同的项目名区分项目 --一个server节点不同的location节点
背景说明,域名分别为:www.nginx.com ,项目名称分别为 1) order 2)member
在1的基础上修改
2.1) 删除一个server节点,即bbs.nginx.com所在的server节点
2.2) 修改www.nginx.com所在的server节点
2.2.1) 配置location节点 / --> /order/
2.2.2) 添加一个location节点 / -->/member/
2.2.3) 通过反向代理访问到不同的项目 proxy_pass
2.2.4)利用springboot启动两个简单的项目
2.3配置案例
server {
###监听端口号为80
listen 80;
###服务名称,配置域名
server_name www.nginx.com;
###项目名称
location /order/ {
##这里的地址,最好从浏览器中拷贝过来
proxy_pass http://127.0.0.1:8080/;
index index.html index.htm;
}
location /member/ {
proxy_pass http://127.0.0.1:8081/;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2.4)测试效果
3.反向代理
场景2中已包含反向代理的配置,即proxy_pass配置的
4.负载均衡
4.1) 负载均衡配置,需要配置上游服务器地址列表 即 upstream
4.2) 配置案例
###定义上游服务器(需要被nginx真实代理访问的服务器) 默认是轮询机制
###tomcatServer是指 location节点中反向代理proxy_pass配置的值
upstream tomcatServer {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
4.3)nginx自带的负载均衡算法有三种
4.3.1) 轮询-默认使用的算法
4.3.2)按权重轮询 ,配置方法 weight
###定义上游服务器(需要被nginx真实代理访问的服务器) 默认是轮询机制
###tomcatServer是指 location节点中反向代理proxy_pass配置的值
upstream tomcatServer {
###分成3份,访问80801次,访问80812次为一个轮回
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=2;
}
4.3.2)ip_hash:只要是同一个ip访问,都会被分配到同样一个上游服务器
###定义上游服务器(需要被nginx真实代理访问的服务器) 默认是轮询机制
###tomcatServer是指 location节点中反向代理proxy_pass配置的值
upstream tomcatServer {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
ip_hash;
}
5.故障转移
背景说明:负载均衡采用的算法是 轮询算法,上游服务器有三个,分别为8080,8081,8082。
如果三台服务器都是正常的;那么客户端会依次访问,8080,8081,8082;
但是,某一时刻,8081服务故障停止了,那么当轮询到8081时,如果没有设置故障转移的配置,
那么nginx会一直访问8081,迟迟不能看到返回结果,这样不能保证应用的高可用,所以需要配置
故障转移的措施
server {
listen 80;
server_name www.nginx.com;
location / {
### 指定上游服务器负载均衡服务器
proxy_pass http://tomcatServer;
index index.html index.htm;
###nginx与上游服务器(真实访问的服务器)超时时间 后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_connect_timeout 2s;
###nginx发送给上游服务器(真实访问的服务器)超时时间
proxy_send_timeout 2s;
### nginx接受上游服务器(真实访问的服务器)超时时间
proxy_read_timeout 2s;
}
}
说明:如果访问8081,在设置的超时时间内没有获取到返回结果, 那么访问8082服务,即就近访问下一个该轮询到的
上游服务器