分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

HTTP/NGINX+TOMCAT实现动静分离

发布时间:2023-09-06 01:23责任编辑:白小东关键词:暂无标签

什么是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

测试

650) this.width=650;" title="tomcat测试.png" alt="a44ebda4f88f7dc02656bd38d71e3200.png-wh_" src="https://s1.51cto.com/oss/201711/08/a44ebda4f88f7dc02656bd38d71e3200.png-wh_500x0-wm_3-wmp_4-s_2172826067.png" />

在实际应用中,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.confserver {    root /usr/share/tomcat/webapps/ROOT;    index index.jsp index.html    location ~* \.(jsp|do)$ {        proxy_pass          }  ......}

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

本文出自 “沉默是金” 博客,请务必保留此出处http://maguofu.blog.51cto.com/12431016/1980176

HTTP/NGINX+TOMCAT实现动静分离

原文地址:http://maguofu.blog.51cto.com/12431016/1980176

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved