什么是Nginx?
Nginx 是异步框架的网页服务器,也可以用作反向代理、负载平衡器和 HTTP 缓存。大部分 Web 服务器使用 Nginx,通常作为负载均衡器。
Nginx的应用场景
1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。
并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
Nginx的使用
一.Nginx的安装
- 熟悉Cenos7相关命令(centos7默认没有 netstat 命令,需要安装 net-tools 工具,yum install -y net-tools)
开放端口: firewall-cmd --zone=public --add-port=端口号/tcp --permanent
关端口:firewall-cmd --zone=public --remove-port=端口号/tcp --permanent
生效配置:firewall-cmd --reload
查看防火墙以开放的端口:firewall-cmd --zone=public --list-ports
关闭防火墙:systemctl stop firewalld.service
防火墙状态:firewall-cmd --state
查看监听的端口:netstat -lnpt
检查端口被哪个进程占用:netstat -lnpt |grep 端口号
查看端口详细信息:ps 端口号
强制关闭端口:kill -9 端口号
官网下载相应nginx版本tar包
http://nginx.org/en/download.html
2.使用xftp上传到linux
3.解压tar包
tar命令: tar -z以gzip的算法解压或者压缩
-x解压一个tar包
-v显示指令执行过程
-f指定要解压/压缩 文件名
-c 创建一个tar包/压缩
解压通常用法 tar -zxvf filename 如果要压缩的话z换成c
4.安装所需依赖
- yum install pcre-devel
- yum install zlib zlib-devel
- yum install openssl openssl-devel
- yum -y install gcc gcc-c++ autoconf automake make 安装c++编译环境
5.进入解压开的nginx-1.16.1文件夹找到 configur 执行
6.然后执行make( nginx是一个完全由C语言编写的程序make命令是将文件编译就想java的javac一样)
7.在执行make install(make install这个命令是将nginx安装)安装好后可以在./usr/local/目录下发现一个nginx的文件夹.
这个就是安装好后的nginx。安装好后目录结构如下
二.启动nginx
1.Nginx用的是80端口 , 把端口对外开放
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
2.启动:安装好的nginx目录中有一个sbin,里面是一个nginx(可执行文件执行(./nginx)
3.启动后直接在网页输入本机ip即可访问 页面如下
4.Nginx常用命令
/usr/local/nginx/sbin/nginx # 启动nginx
/usr/local/nginx/sbin/nginx -s reload # 重新载入配置文件
/usr/local/nginx/sbin/nginx -s reopen # 重启 Nginx
/usr/local/nginx/sbin/nginx -s stop # 停止 Nginx
/usr/local/nginx/sbin/nginx -t #检查配置文件是否正确
正反向代理
一.正向代理
如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访 问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。
二.反向代理
其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。我们只 需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。
三.修改nginx.conf配置文件实现反向代理
1.配置之前需要配置hosts文件:
地址:C:WindowsSystem32driversetchosts
hosts文件的作用是完成域名和指定IP地址的映射。
2.修改windows系统目录中的hosts文件, ip为虚拟机里面的地址
3.修改server块
server_name it.nginx.com; #自定义访问域名
root /home/nginx/tomcat_data/; #静态文件存放路径
index index.html; #定义首页
4.修改server下的location块
proxy_pass http://tomcat_server; #映射对应upstream
proxy_set_header X-Real-IP $remote_addr; #映射nginx真实ip
proxy_set_header Host $Host;
5.先检查配置文件是否正确
/usr/local/nginx/sbin/nginx -t(出现以下日志则可以重启nginx了)
6./usr/local/nginx/sbin/nginx -s reload 修改了配置,重启配置.再访问it.nginx.com
负载均衡
什么是负载均衡?
增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的 情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
负债均衡的使用
首先启动两台Tomcat服务器
- 然后在nginx配置文件中修改upstream 添加两个ip地址分别是
upstream tomcat_server{
- 然后在nginx配置文件中修改upstream 添加两个ip地址分别是
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
2.其他配置文件可以不用修改,直接检查即可 (/usr/local/nginx/sbin/nginx -t)通过即可运行nginx
可以看见同一个前端代码访问了不同的后端。
1、轮询
轮询是最基本的配置方法,它是upstream模块默认的负载均衡默认策略。每个请求会按时间顺序逐一分配到不同的后端服务器。
参数:fail_time服务器会被认为停机的时间长度,默认为10s。
backup标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里。
down 标记服务器永久停机了。(在轮询中,如果服务器down掉了,会自动剔除该服务器)
2、IP(ip_hash)
指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。
其实保证session会话是同一个用户的解决方案可以采取Spring Session,token等会话技术
3、权重(weight)
每个upstream下服务会有一个权重(weight)配置,这个权重就是请求派发的概率,权重越大请求派发给服务的机会越大,可以根据服务资源情况分配权重。
在该例子中,weight参数用于指定轮询几率,weight的默认值为1,;weight的数值与访问比率成正比,比如8080被访问的几率为其他服务器的两倍
4、最少连接(least_conn)
把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是有些请求占用的时间很长,会导致其所在的后端负载较高,这种情况下最少连接方式分配方式就可以达到更好的负载均衡效果。
注意:启动2个tomcat 可以使用批处理,新建一个文件,后缀为sh
文件内容:
/home/lm/tools/tomcat8.5/bin/startup.sh
/home/lm/tools/tomcat2/bin/startup.sh