第一步:nginx构建

第二步:Tomcat构建

1.Tomcat基础点

(1)Tomcat 是基于java开发的web容器,用来发布java代码和jsp网页。

(2)开发人员开发java web网站,使用Tomcat容器发布和解析,用户通过浏览器实现访问。

(3)发布java程序,需要提前配置好JDK环境。

(4)JDK是java开发工具包(SDK)和java程序运行环境(JRE);JDK是java开发的核心组件。

(5)java运行环境(JRE)包括:JVM+JAVA类和库;

    java开发工具包(SDK)包括:JAVAC、JAVA工具

(6)开发人员开发的java程序,是源码文件,默认不能直接使用;需要经过JACAC(java编译器),将源码文件编译生成java字节码文件。

(7)java字节码文件,可以放在jre环境中去运行(java运行时的环境Tomcat);通过JVM解析java字节码文件,从而提供给CPU或系统调用,用户可以通过其他渠道访问。

2.yum安装java jdk软件工具包

yum install java-1.8.* -y
#yum 安装java jdk 不用配置变量

3.上传或下载Tomcat;二进制版的tomcat软件包不用编译,解压后可以直接使用

 rz
tar -xzvf tomcat

4.将解压后的tomcat二进制包移动至/usr/local/tomcat,并拷贝/usr/local/tomcat至/usr/local/tomcat-1;相当于同一台服务器有两个tomcat容器;

 mv tomcat  /usr/local/
cp /usr/local/tomcat /usr/local/tomcat-

5.启动tomcat,查看tomcat的端口号;修改tomcat-1端口号,并开启tomcat-1;

 cd /usr/local/tomcat/bin
./startup.sh
netstat -antp |grep java
cd /usr/local/tomcat-
sed -i 's#8080#8081#;s#8005#8006#;s#8009#8010#' conf/server.xml
./bin/startup.sh

6.修改tomcat默认网页

 cd /usr/local/tomcat/webapps/ROOT
cat >> index.jsp <<eof
<html>
<body>
<h1>tomcat</h1>
</body>
</html>
eof

7.修改tomcat-1默认网页

 cd /usr/local/tomcat-/webapps/ROOT

 cat >> index.jsp <<eof
<html>
<body>
<h1>tomcat-</h1>
</body>
</html>
eof

第三步:Nginx动静分离配置

1.动静分离简介

(1)是把静态请求和动态请求分开,并不是单纯的静态页面和动态页面分离。

(2)可以使用Nginx处理静态页面,用Tomcat、PHP、Resin、ASP处理动态页面。

(3)主流方案:纯粹的把静态文件独立成单独的域名,放在独立的服务器上。

(4)其他方案:动态文件跟静态文件混合在一起发布,通过Nginx分开。

2.负载均衡简介

(1)负载:所有来自客户端的请求叫做负载。

(2)均衡:把所有的网络请求通过代理服务器,按照一定的算法转发到后端服务器上。

(3)硬件:FS、NetScaler

(4)软件:LVS、Nginx、HAProxy

3.Nginx负载均衡

(1)Nginx收到请求时会进行判断,如果是静态,则自行处理;如果是动态,则转到后端服务器处理。

(2)Nginx负载均衡基于upstream模块(设置在http块),需要在location块设置proxy_pass转发。

(3)upstream块内参数:server后跟转发服务器IP地址加端口号;

    down 表示是当前server暂时不参与负载;

    weight=number 权重配置;默认1,数字越大权重越大;

    max_conns=number 限制代理服务器同时活动的最大连接数,默认0代表没限制;

    max_fails=number 连接失败的最大次数;次数到达,返回proxy_next_upstream模块定义的错误;

    fail_timeout=number 失败次数到达后,暂停服务的时间;

    backup  备用服务器,其他所有非backup机器down或者忙碌时,请求backup机器。

4.upstream算法

(1)轮询(默认)

    每个请求按时间顺序逐一分配到不同的后端服务器;如果后端服务器down掉,能自动剔除;

    即Round Robin ,根据Nginx配置文件中的顺序,依次把客户端的web请求分发到不同的后端服务器。

(2)ip_hash

    每个请求按访问ip的hash结果分配,每个访客固定访问一个后端服务器,可以解决session的问题。

    ip地址的前三段作为参数加入hash函数,保证ip地址前三段相同的用户经过hash计算分配到相同的后端服务器。

(3)url_hash

    按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

(4)weight

    指定轮询机率,weight和访问比率成正比,用于后端服务器性能不均的情况。

5.配置upstream块

upstream http_test {
server 192.168.198.111: weight= mas_fails= fail_timeout=15s;
#15s 检测时间,检测后端服务器是否正常,15秒内2次请求处理失败,就把当前主机剔除。
server 192.168.198.112: weight= mas_fails= fail_timeout=15s;
}
#两个后端机器都不能使用,直接给用户返回502错误。

6.动静分离location规则添加

location / {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://http_test;
}
location ~ .*\.(jsp|cgi|shtml)?$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://http_test;
}
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
root /usr/local/nginx/html;
expires 30d;
}

7.开启nginx服务器防火墙80端口、tomcat服务器防火墙(8080端口、8081端口、8005端口、8006端口、8009端口、8010端口)

 firewall-cmd --zone=public --add-port=/tcp 
--add-port=/tcp --add-port=/tcp
--add-port=/tcp --add-port=/tcp
--add-port=/tcp --add-port=/tcp
--permanent
firewall-cmd --reload

8.将静态网页配置在nginx服务器/usr/local/nginx/html;动态网页配置在tomcat服务器/usr/local/tomcat/webapps/ROOT/*

9.配置完毕,正常访问nginx服务器;静态请求nginx服务器自行处理,动态请求通过nginx服务器转发给tomcat服务器处理;

Nginx动静分离(Nginx+Tomcat)的更多相关文章

  1. nginx 动静分离之 tomcat

    配置文件示例 server { listen ; server_name www.xxx.com; location ~* "\.(jpg|png|jepg|js|css|xml|bmp|s ...

  2. Nginx动静分离经典

    Nginx:安装nginx之前需要安装pcre包和zlib以支持重写,正则以及网页压缩等等]把所需的包下载到/usr/src下[根据自己的习惯,路径可以改变]1.首先安装pcre: cd /usr/s ...

  3. Nginx动静分离实现

    Nginx动静分离实现: Nginx是一种轻量级,高性能,多进程的Web服务器,非常适合作为静态资源的服务器使用,而动态的访问操作可以使用稳定的Apache.Tomcat及IIS等来实现,这里就以Ng ...

  4. Nginx动静分离架构

    Nginx动静分离简单来说就将动态与静态资源分开,不能理解成只是单纯的把动态页面和静态页面物理分离,严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat,Res ...

  5. Nginx动静分离

    动静分离 Nginx动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路. ...

  6. Nginx动静分离架构&&HA-LB集群整合

    Nginx动静分离简单来说就将动态与静态资源分开,不能理解成只是单纯的把动态页面和静态页面物理分离,严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat,Res ...

  7. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

  8. Nginx动静分离知识及配置

    Nginx动静分离知识及配置,本质上与分离上传下载功能是相同功能,本质就是在文件服务器也是需要部署WEB应用的,只是在进行代理分离的时候分配到对应的文件服务器上去. 随着Nginx高性能Web服务器大 ...

  9. 15.Nginx动静分离Rewrite

    1.什么是动静分离? 将动态请求和静态请求区分访问, 2.为什么要做动静分离? 静态由Nginx处理, 动态由PHP处理或Tomcat处理.... 因为Tomcat程序本身是用来处理jsp代码的,但t ...

随机推荐

  1. 还看不懂同事的代码?Lambda 表达式、函数接口了解一下

    当前时间:2019年 11月 11日,距离 JDK 14 发布时间(2020年3月17日)还有多少天? // 距离JDK 14 发布还有多少天? LocalDate jdk14 = LocalDate ...

  2. 建议收藏备用:.net core使用QRCoder生成普通二维码和带Logo的二维码详细使用教程,源码已更新至开源模板

    随着互联网越来越生活化,二维码的使用越来越普遍,不论是扫码支付还是扫码关注引流,似乎我们总是离不开二维码,那么很多需要推广的文章或社区想要自己的二维码,那么你是不是需要在网站直接提供给用户呢?很多开发 ...

  3. 使用Typescript重构axios(五)——实现基础功能:处理请求的header

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  4. 使用Typescript重构axios(十三)——让响应数据支持泛型

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  5. python学习之【第十六篇】:Python中的常用模块之OS模块、sys模块、random模块

    1. OS模块 OS模块是与操作系统交互的一个接口.内部提供了以下方法: os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname& ...

  6. NOIP的模板--考前复习

    距离NOIP还有25天 可以去放弃一些巨难得题目去搞一些模板了 -------在校老师的原话 一·快排 虽然可以手打,最好用STL,里面有很多优化,会快很多 #include<iostream& ...

  7. python中文件的基础操作

    打开文件的三种方式: open(r'E:\学习日记\python\code\文件的简单操作.py') open('E:\\学习日记\\python\\code\\文件的简单操作.py') open(' ...

  8. 如何设置HTML页面中文本的字体

    字体属性介绍 CSS中的字体属性是干什么的呢?字体字体肯定和字体有关咯,就是设置HTML页面中文本的字体, CSS中常用的字体属性有几种呢,笔者给大家梳理了下,比较常用的一共有5种,今天我们就看看这5 ...

  9. nyoj 257 郁闷的C小加(一)(栈、队列)

    郁闷的C小加(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 我们熟悉的表达式如a+b.a+b*(c+d)等都属于中缀表达式.中缀表达式就是(对于双目运算符来说 ...

  10. nyoj 65-另一种阶乘问题 (Java 高精度)

    65-另一种阶乘问题 内存限制:64MB 时间限制:3000ms 特判: No 通过数:16 提交数:18 难度:1 题目描述: 大家都知道阶乘这个概念,举个简单的例子:5!=1*2*3*4*5.现在 ...