1 Nginx介绍
Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务.Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强.
1.1内存少,不超过2M,(Tomcat服务器启动300-500M)
1.2并发能力强,并发3万-5万次 Tomcat并发150-220之间
1.3Nginx使用C语言开发
2 Nginx的安装和下载
2.1 nginx的下载
nginx.org/en/down.html
2.2 nginx的安装注意事项
- Nginx服务器启动时会占用80端口
- Nginx服务器安装时不要出现中文+空格问题C盘慎用(程序员操守)
- Nginx底层开发是用C语言写的,所以注释 使用#号 独占一行完成注释
2.3 nginx 的命令
命令执行位置:nginx命令必须在nginx.exe所在的目录中执行
命令:
启动命令:start nginx
重启命令:nginx -s reload
关闭命令:nginx -s stop
2.4nginx服务项说明
1.nginx主进程 主要提供反向代理服务
2.nginx守护进程 防止主进程意外关闭
如果将来想要关闭nginx服务器,则应先关闭守护,再关闭主进程
2.5关于HOSTS文件说明
说明:操作系统为了开发人员测试方便,可以通过hosts执行文件的域名与IP的映射关系,如果配置了hosts文件,则先走hosts之后执行全球DNS域名解析服务
操作系统为开发者提供了一个hosts文件**.该文件可以实现域名与IP 地址的映射关系**,但是由于只是测试时使用,所以该配置只对本级有效
位置
具体配置
#@SwitchHosts! {"url": null, "icon_idx": 0, "title": "\u5f53\u524d\u7cfb\u7edf hosts"}
# 配置
#左侧写IP地址 右侧写域名 中间使用空格分隔
#为了实现Linux发布修改如下
#192.168.126.129 image.test.com
#192.168.126.129 manager.test.com
127.0.0.1 image.test.com
127.0.0.1 manage.test.com
127.0.0.1 www.test.com
127.0.0.1 sso.test.com
2.6编辑Nginx服务器
#配置后台管理系统
server {
listen 80;
server_name manage.zz.com;
location / {
#root 代表文件目录
#index 代表默认的访问页面
#proxy_pass 代表发起url请求
proxy_pass http://localhost:8091;
}
}
3 搭建服务器集群
3.1集群分析
3.2动态获取端口
3.2.1获取端口位置
3.2.2编辑 PortController
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 {
/**
* 通过Spring容器动态获取YML配置文件中的端口即可
*/
@Value("${server.port}")
private int port;
@RequestMapping("/getPort")
public String getPort(){
return "当前访问的端口号为:"+port;
}
}
3.3搭建Tomcat服务器集群
3.3.1需求
将后台管理系统打成3个war包程序,端口号分别为8081,8082,8083
3.3.2项目打包操作
3.3.3项目运行测试
3.4实现Ngnix集群配置
3.4.1
当用户通过manage.jt.com的方式访问服务器是,要求通过反向代理的方式实现,要求陪着nginx中集群
3.4.2配置nginx
#配置后台管理系统
server {
listen 80;
server_name manage.jt.com;
location / {
#root 代表文件目录
#index 代表默认的访问页面
#proxy_pass 代表发起url请求
#proxy_pass http://localhost:8091;
proxy_pass http://jtW;
}
}
#配置集群的关键字 通过集群配置tomcat服务器即可
#默认: 1.轮询的机制
upstream jtW {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
3.5关于nginx负载均衡策略说明
3.5.1轮询策略
说明:根据配置文件的顺序.之后一次访问服务器,该策略也是默认的机制
#默认: 1.轮询的机制
upstream jtW {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
3.5.2权重策略
场景说明:公司采购服务器都是有时间间隔的,但是由于服务器新旧不同,硬件版本不同,导致服务器处理能力不同,如果上述问题不做处理,依然采用轮询的机制,则会出现严重的负载不均衡现象
所有需要通过权重方式平衡压力
#配置集群的关键字 通过集群配置tomcat服务器即可
#默认: 1.轮询的机制 2.权重策略
upstream jtW {
server 127.0.0.1:8081 weight=6;
server 127.0.0.1:8082 weight=3;
server 127.0.0.1:8083 weight=1;
}
3.5.1 IPHASH策略
需求:当某些业务需要特定的访问固定服务器是,就要选用iphash机制
配置
#默认: 1.轮询的机制 2.权重策略 3.IPHASH
upstream jtW {
ip_hash;
server 127.0.0.1:8081 weight=6;
server 127.0.0.1:8082 weight=3;
server 127.0.0.1:8083 weight=1;
}
IPHASH原理介绍
3.6关于Nginx负载均衡的补充
3.6.1 down属性
说明:如果Tomcat服务器发生了宕机现象,则通过配置文件标识down的属性,则nginx将不会访问故障机
#默认: 1.轮询的机制 2.权重策略 3.IPHASH
upstream jtW {
#ip_hash;
server 127.0.0.1:8081 down;
server 127.0.0.1:8082 ;
server 127.0.0.1:8083 ;
}
3.6.2 backup属性
说明 ;通常情况下,都会部署一些备用机防止由于主机宕机,剩余的机器不能实现高并发从而导致整个服务宕机的问题
如果设置了备用机,则正常情况下用户不会访问,但是当主机或者主机遇忙时才会访问
#配置集群的关键字 通过集群配置tomcat服务器即可
#默认: 1.轮询的机制 2.权重策略 3.IPHASH
upstream jtW {
#ip_hash;
server 127.0.0.1:8081 down;
server 127.0.0.1:8082 ;
server 127.0.0.1:8083 backup;
}
3.6.3Tomcat高可用配置
属性配置:
- max_fail =1 配置nginx访问服务器的最大失败次数
- fail_timeout=60s 理解为一个时间周期,如果发现服务器宕机,则在60秒内不会再次访问故障机
扩展
反向代理说明
反向代理服务器位于用户和目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源,同时用户不需要知道目标服务器的地址,也无需再用户端作任何设定,反向代理服务器通常可用来作为web加速,即使用反向代理作为web服务器的前置机来降低网络和服务器的负载,提高访问效率
总结:
- 反向代理服务器结婚用户和真实服务器之间
- 用户以为反向服务器就是真实的服务器
- 用户不需要了解真实的服务器到底是谁
- 反向代理服务器保护了真实服务器的信息
- 反向代理服务器就是服务端代理
正向代理说明
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
特点:
1.代理服务器介于目标和客户端之间
2.客户端非常清楚自己访问的服务器到底是谁
3.正向代理是客户端代理.保护了真实的客户信息.
一般条件下网络通讯时会使用正向代理.