HTTP/NGINX+TOMCAT实现动静分离

什么是TOMCAT?

Tomcat和其他web服务器一样,可以响应HTML的请求,实际上Tomcat是Apache的服务器的扩展,但是运行时他是独立运行的。另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式,但是它的静态页面处理能力比较差。可以使用动静分离来提高站点性能。

JAVA

Java的技术体系有三个分类:java2SE,java2EE,jave2ME(移动开发)。jdk其实相当于java2SE。java2EE相当于是在jdk中添加了一些企业级类库,像jsp,servlet,javamail...。servlet是为java开发提供便捷的构建web server接口,能够在前端为我们所写的web应用程序提供支持http  protocol的解析功能。能接受客户端请求,把请求转换成本地某个代码的执行,并把代码执行的结果通过响应报文的方式响应给客户端。Tomcat就是java2EE规范的不完整实现,为啥叫不完整呢?因为Tomcat只是实现了一部分重要常用的类库,不是所有的类库。

JSP处理流程

程序员写的Jsp代码通过jasper这个中间引擎转换成纯java代码,java代码需要先编译成字节码才能运行,通过javac compiler编译成class类文件。类文件是servlet格式,需要调用servlet类库到JVM中,class文件才能在JVM中运行。运行java代码依赖很多类库,运行前必须要加载到jvm中。所以要构建一个jsp网站,需要jdk+servlet类库,jsp类库。Tomcat就是企业中常用来实现

具体流程:

.jsp----->jasper(属于jsp类库)----->.java----->java compiler(属于servlet类库)----->.class----->jvm(Java虚拟机)

Tomcat的安装

]#yum install -y java-1.8.0-openjdk-devel            <===前提
]#java -version                                      <===查看环境准备
openjdk version "1.8.0_102"
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)
]#yum install tomcat tomcat-admin-webapps tomcat-docs-webapp tomcat-webapps tomcat-lib        <===后面不是必须装,建议装上

冷部署应用测试

]#mkdir  -pv /usr/share/tomcat/webapps/test/{classes,lib,WEB-INF}
]#cd /usr/share/tomcat/webapps/test
]#vim index.jsp                        <===测试页面
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
        <head>
                <title>Test Page</title>
        </head>
        <body>
                <% out.println("hello world");
                %>
        </body>
</html>
]#systemctl start tomcat

测试

在实际应用中,Tomcat是不直接接受前端客户端的请求,前端会有调度器来调度jsp请求至tomcat server。下面我们来简单实现tomcat的调度。

第一种:通过http反向代理至tomcat(http和tomcat在同一台主机上),使用proxy_http_module。

]#yum install httpd -y
]#cd /etc/httpd/conf.d
]#vim http-tomcat.conf
<VirtualHost *:80>
        servername www.a.com
        documentroot /usr/share/tomcat/webapps/ROOT
        proxyrequests off                    <===关闭正向代理
        proxyvia on                          <===响应报文中添加via首部 
        proxypreservehost on
        <proxy *>
                require all granted          <===包括下面,这两个授权仅在centos7以上版本中使用。之前的版本不需要
        </proxy>
        proxypass / http://127.0.0.1:8080/   <===默认tomcat是在8080端口
        proxypassreverse / http:127.0.0.1:8080/
        <location />
                require all granted        
        </location>
</virtualhost>

第二种:通过http的proxy_ajp_module反向代理至tomcat

]#vim ajp-tomcat.conf 
<VirtualHost *:80>
        servername www.a.com
        documentroot /usr/share/tomcat/webapps/ROOT
        proxyrequests off
        proxyvia on
        proxypreservehost on
        <proxy *>
                require all granted
        </proxy>
        proxypass / ajp://127.0.0.1:8009/        <===ajp默认通过8009监听
        proxypassreverse / ajp:127.0.0.1:8009/
        <location />
                require all granted
        </location>
</virtualhost>

第三种:通过nginx反向代理

]#vim nginx.conf
server {
    root /usr/share/tomcat/webapps/ROOT;
    index index.jsp index.html
    location ~* \.(jsp|do)$ {
        proxy_pass 
         }
  ......
}

上面三种方法可以根据自己需求和生产环境选择,除了nginx和http有处理能力差距之外,其余并没有差别。这样通过上面的代理后,动态jsp文件转发到tomcat处理,静态文件代理自己处理,这样可以实现动静分离,当然还可以分的再细一点,这里就不再赘述了。

时间: 2024-08-27 16:59:56

HTTP/NGINX+TOMCAT实现动静分离的相关文章

nginx+tomcat实现动静分离

一.构建java语言环境Jdk用于设置java程序运行环境,当需要运行java语言时,则必须先设置jdk环境.1. 获取二进制文件.# sh jdk-6u32-linux-x64.bin# mv jdk1.6.0_32/ /usr/local/jdk2.给jdk1.6.0_32/做软链接,方便jdk更新# ln -s /usr/local/jdk/ java3.设置java命令运行环境,并使其生效.# vim /etc/profileexport JAVA_HOME=/usr/local/jdk

Nginx自学手册(六)Nginx+Tomcat实现动静分离

(一)简述 Nginx是一种轻量级,高性能,多进程的Web服务器,非常适合作为静态资源的服务器使用,而动态的访问操作可以使用稳定的Apache.Tomcat及IIS等来实现,这里就以Nginx作为代理服务器的同时,也使用其作为静态资源的服务器,而动态的访问服务器就以Tomcat为例说明. (二)环境简介 服务器名称 IP 备注 Nginx服务器 192.168.180.4 Tomcat服务器 192.168.180.23 client 192.168.181.231 客户端访问 (三)具体步骤:

nginx+tomcat实现动静分离(转)

本文设计的动静分离结构 在本文中,我们将静态资源放在 A 主机的一个目录上,将动态程序放在 B 主机上,同时在 A 上安装 Nginx 并且在 B 上安装 Tomcat.配置 Nginx,当请求的是 html.jpg 等静态资源时,就访问 A 主机上的静态资源目录:当用户提出动态资源的请求时,则将请求转发到后端的 B 服务器上,交由 Tomcat 处理,再由 Nginx 将结果返回给请求端. 提到这,可能有您会有疑问,动态请求要先访问 A,A 转发访问 B,再由 B 返回结果给 A,A 最后又将

Nginx+Tomcat实现动静分离和负载均衡

一.动静分离 Nginx动静分离简单来说就是把动态和静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是将动态请求和静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面.动静分离从目前实现角度来讲大致分为两种,一种是纯粹的把静态文件放在独立的服务器上,独立出来用域名访问,也是目前主流推崇的方案:另外一种方法就是动态跟静态文件混合在一起部署,通过Nginx来分开. 为什么要动静分离? Tomcat是一个比较全面的web容器,对静态网页的处理,应

nginx+Tomcat实现动静分离架构

最近新部署了一个项目jlj-cms-erp-web,要求使用nginx+Tomcat将静态页面和动态的请求分开处理,减轻Tomcat服务器的压力 在部署项目的这台机器上(192.168.1.110)并没有nginx,所以还需要将这台机器上生成的静态页面备份到装有nginx的另一台机器上(192.168.1.191) 首先安装tomcat,具体过程不详细写了,见博客 http://itzhongxin.blog.51cto.com/12734415/1915155 注意修改端口号.jvmRoute

nginx+tomcat做动静分离配置+nginx+SSL

user  nobody; worker_processes  8; #pid        logs/nginx.pid; events { worker_connections  1024; } http { include       mime.types; default_type  application/octet-stream; log_format  main  '$remote_addr - $remote_user [$time_local] "$request"

nginx+tomcat实现动静页面分离

实现nginx和tomcat动静页面分离 实验拓扑: 公司内部需要搭建web集群,并且网站有静态页面和.jsp(java语言开发)的页面,现要求分别搭建处理这两种页面的不同服务到web群集中,并且实现调度器的备份,保证调度器的稳定: 实验环境: 服务器名称 IP地址 所需软件 Tomcat1 192.168.100.154 jdk-7u65-linux-x64.gz apache-tomcat-7.0.54.tar.gz Tomcat2 192.168.100.155 jdk-7u65-linu

Nginx与Apache动静分离

. Nginx与Apache动静分离,布布扣,bubuko.com

Nginx系列-8.配置Nginx+Apache实现动静分离

Nginx系列-8.配置Nginx+Apache实现动静分离 目录 - Nginx系列 Nginx系列-1.Linux下安装Nginx Nginx系列-2.配置LNMP(Linux.Nginx.MySQL.PHP)架构 Nginx系列-3.配置Nginx虚拟主机 Nginx系列-4.Nginx日志配置及日志切割 Nginx系列-5.配置Nginx的防盗链 Nginx系列-6.配置Nginx的HTTPS Nginx系列-7.配置Nginx使用uwsgi支持web.py框架 Nginx系列-8.配置