实验环境:Red Hat Enterprise Linux release 8.0 (Ootpa)
192.168.160.128 使用nginx yum 官方源进行安装
服务器提前准备配置完成jdk+tomcat , jdk为jdk1.7.0_79版本 tomcat为apache-tomcat-7.0.96.tar版本
tomcat1:8080 tomcat2:8081
安装nginx
按照nginx官方提供的手册进行配置即可
# cd /etc/yum.repos.d/ # mv Centos-7.repo /bak/Centos-7.repo # vi nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key :wq # yum -y install nginx # systemctl enable nginx --now //启动服务
关于nginx配置文件
配置文件所在位置(yum安装的方法)
不知道配置文件在哪的可以指令查看
/etc/nginx/conf.d/default.conf //作者习惯性编辑这个
nginx还有一个配置文件为/etc/nginx/nginx.conf
配置文件分为三个部分组成: 全局块,events块,HTTP块
- 全局块:从配置文件开始到 events 块之间,主要是设置一些影响 Nginx 服务器整体运行的配置指令。
并发处理服务的配置,值越大,可以支持的并发处理量越多,但是会受到硬件、软件等设备的制约。
worker_processes 1; //默认并发数量为1
- events块:影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 workprocess 下的网络连接进行序列化,是否允许同时接收多个网络连接等等。
events{ worker_connections 1024; //默认最多1024个网络同时连接 }
- HTTP块: localtion
location[ = | ~ | ~* | ^~] url{ } =:用于不含正则表达式的 url 前,要求字符串与 url 严格匹配,匹配成功就停止向下搜索并处理请求。 ~:用于表示 url 包含正则表达式,并且区分大小写。 ~*:用于表示 url 包含正则表达式,并且不区分大小写。 ^~:用于不含正则表达式的 url 前,要求 Nginx 服务器找到表示 url 和字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再匹配。 如果有 url 包含正则表达式,不需要有 ~ 开头标识。
反向代理
编辑配置文件
# vi /etc/nginx/conf.d/default.conf 修改服务器ip为192.168.160.128,添加反向代理: proxy_pass http://192.168.160.128
:wq 保存退出
检查语法与重启服务
# nginx -t # systemctl restart nginx
验证
浏览器访问http://192.168.160.128 默认本来是为80端口的 服务完成后访问会直接跳转至8080 tomcat端口
回车后直接跳转,成功
准备2个tomcat站点
配置两个tomcat站点,复制原本的tomcat文件夹到另一处,这里tomcat定义为tomcat2
cp -r /share/apache-tomcat-7.0.96 apache-tomcat-7.0.96
修改配置文件
# vi /apache-tomcat-7.0.96/conf/server.xml :/Server port= :/8080 搜索这两个端口配置,修改成其他端口
:wq保存退出
重启tomcat
# cd apache-tomcat-7.0.96/ # ./bin/shutdown.sh # ./bin/startup.sh
开始部署站点
部署原先tomcat1站点
# cd /share/apache-tomcat-7.0.96/webapps/ # mkdir a # echo '8080' > a/index.html
部署tomcat2站点
# cd /apache-tomcat-7.0.96/webapps/ # mkdir b # echo '8081' > b/index.html
测试,成功
nginx多站点反向代理
编辑配置文件
# vi /etc/nginx/conf.d/default.conf 修改监听端口,多添加一个自定义location
:wq保存退出
重启服务
# systemctl restart nginx
测试
用同一个端口服务网页,成功
负载均衡
tomcat添加站点
因为tomcat1已经有a文件并有index.html,所以要在tomcat2中建立一个a目录和index
# mkdir /apache-tomcat-7.0.96/webapps/a # echo '8081'> /apache-tomcat-7.0.96/webapps/a/index.html
修改配置文件
# vi /etc/nginx/conf.d/default.conf 定义upstream {} //轮询(默认)模式
:wq保存退出
重启服务
# systemctl restart nginx
验证
在浏览器中访问192.168.160.128/a/index.html
重新输入网址跳转或者多刷新几次,网页会显示出tomcat2:8081的内容,成功
负载均衡的5种模式
注意,每种模式都需要定义upstream,其中名字自定义,本文用tomcat命名。
定义完,需要在localtion / { 中定义proxy_pass},举个例子
upstream tomcat{ server 192.168.160.128:8080; server 192.168.160.128:8081; } localtion / { proxy_pass http://tomcat; root html; index.html index.htm; } //这样子配置的负载均衡模式才会生效
下面介绍5种负载均衡,upstream定义的方法
轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream tomcat{ server 192.168.160.128:8080; server 192.168.160.128:8081; }
权重负载:服务器性能越好,可分配更大权重。weight越大,被访问几率越大
upstream tomcat{ server 192.168.160.128:8080 weight=1; server 192.168.160.128:8081 weight=2; }
ip_hash:每个请求按照访问 ip 的 hash 结果分配,这样每一个访客固定的访问一个后端服务器,可以解决 Session 的问题。
upstream tomcat{ ip_hash; server 192.168.160.128:8080; server 192.168.160.129:8080; }
fair:按后端服务器的响应时间来分配请求,相应时间短的优先分配。
upstream tomcat{ server 192.168.160.128:8080; server 192.168.160.128:8081; fair; }
url_hash:通过请求url进行hash,再通过hash值选择后端server;
upstream tomcat{ hash $request_url; server 192.168.160.128:8080; server 192.168.160.128:8081; }
动静分离
动静分离有两种模式:
- 纯粹将静态文件独立成单独域名放在独立的服务器上,也是目前主流方案。
- 将动态跟静态文件混合在一起发布,通过 Nginx 分开。
若你的网站/data存放着2给文件夹www,image,一个存放index.html,另一个存放image,css等静态文件
则可以这样配置nginx
# vi /etc/nginx/conf.d/default.conf
:wq 保存退出
重启服务
# systemctl restart nginx