过去 ,将Apache HTTP服务器置于Java应用程序服务器或Java应用程序本身的前面是很常见的事情。

其背后的原因非常简单,可以以简单的方式添加缓存,还可以添加负载平衡,并且在此静态内容之上可以由Apache HTTP提供服务,而所有其他请求可以由Java应用程序提供服务。


尽管此设置不是新功能,但我仍然会定期遇到它,并且看到很多人仍然对如何设置此设置有疑问。

假设您要拦截对静态文件的所有请求并从硬盘驱动器提供服务,而所有其他请求都需要传递给Tomcat。

安装Apache HTTP服务器后,下一步是添加特定模块

  • mod_proxy
  • mod_proxy_http
  • mod_rewrite

在某些系统上,可以通过这种方式完成

 $ a2enmod rewrite  $ a2enmod proxy  $ a2enmod proxy_http 

之后,需要更新Apache HTTP服务器的此配置文件。 找到conf文件

 <VirtualHost *: 80 > .......  </VirtualHost> 

添加重写规则,该规则将拦截对静态的所有调用并将其更改为从硬盘提供服务

 # rewrite from static # rewrite from to it shark static  RewriteEngine on  RewriteRule ^/ static /(.+) /itshark/$ 1 [L,PT]  Alias "/itshark" "/location/on/disk" 

这样,我们对Apache HTTP说,所有以/ static开头的URL请求都应重写为/ itshark /

之后,我们说所有对/ itshark的请求应从/ location / on / disk提供 。 我们还需要将此部分添加到配置中,以便Apache HTTP能够访问它。

 <Directory "/location/on/disk" > Options None AllowOverride None Require all granted  </Directory> 

根据您的操作系统和Apache HTTP版本,此文件应位于主conf文件中(例如:/etc/apache2/apache2.conf)或VirtualHost的conf文件中(例如:/ etc / apache2 / sites-enabled / 000- default.conf)。

文件名和位置取决于系统和Apache HTTP版本

现在剩下的就是将所有其余流量发送到Apache Tomcat。

为此,我们需要将此添加到VirtualHost conf文件中

 ProxyPassMatch ^/(itshark)/.*$ !  ProxyPass / http: //localhost:8080/ connectiontimeout=300 timeout=300 retry=3  ProxyPreserveHost On  ProxyVia On 

就是这样。 对/ static /的所有请求将最终在/ location / on / disk /中 ,而其他所有请求都将发送到Apache Tomcat。

翻译自: https://www.javacodegeeks.com/2019/03/java-behind-apache-http-server.html

如何将Java应用程序置于Apache HTTP服务器之后相关推荐

  1. Java Web程序设计基础二(服务器交互篇——九大内置对象)

    目录 一.out对象 1.概念 2.常用方法 3.代码例子 二.request对象 1.概念 2.request对象的常用方法 3.获取请求头部信息的方法 4.获取请求参数的方法 三.response ...

  2. 使用 Eclipse 远程调试 Java 应用程序

    转载地址:使用 Eclipse 远程调试 Java 应用程序 远程调试对应用程序开发十分有用.例如,为不能托管开发平台的低端机器开发程序,或在专用的机器上(比如服务不能中断的 Web 服务器)调试程序 ...

  3. apache ignite_Apache Ignite变得简单:第一个Java应用程序

    apache ignite 在本文中,我们将更进一步,让您完成第一个Ignite应用程序的创建,以从分布式缓存中进行读写操作. 作为第一个示例,我们将尽可能简单地向您展示如何用Java编写用于处理Ap ...

  4. Apache Ignite变得简单:第一个Java应用程序

    在本文中,我们将更进一步,让您完成第一个Ignite应用程序的创建,以从分布式缓存中进行读写操作. 作为第一个示例,我们将尽可能简单地向您展示如何用Java编写用于处理Apache Ignite集群数 ...

  5. 记一次Java多线程程序调试经历:HttpClient 死锁

    我自己写了一个爬虫程序,跑了半天后程序就卡死了,没有任何输出和动静. 先是使用jstatd和VisualVM,参考这篇文章:jstatd,VisualVM使用和报错解决 结果如下图: 看到内存毫无变化 ...

  6. grpc_模型服务:流处理与使用Java,gRPC,Apache Kafka,TensorFlow的RPC / REST

    grpc 机器学习/深度学习模型可以通过不同的方式进行预测. 我的首选方法是将分析模型直接部署到流处理应用程序(如Kafka Streams或KSQL )中. 您可以例如使用TensorFlow fo ...

  7. cxf springmvc_拥抱模块化Java平台:Java 10上的Apache CXF

    cxf springmvc 自Java 9发布最终将Project Jigsaw交付给大众以来,已经过去了整整一年的时间. 这是一段漫长的旅程,但是在那里,所以发生了什么变化? 这是一个很好的问题,答 ...

  8. SparkStreaming运行出现 java.lang.NoClassDefFoundError: org/apache/htrace/Trace 错误

    1.简介 最近在摸索利用sparkstreaming从kafka中准实时的读取数据,并将在读取的过程中,可以做一个简单的分析,最后将分析结果写入hbase中. 2.出现的问题 (1)将从kafka中读 ...

  9. 使用 Acegi 保护 Java 应用程序

    第 1 部分: 架构概览和安全过滤器 Acegi Security System 是一种功能强大并易于使用的替代性方案,使您不必再为 Java 企业应用程序编写大量的安全代码.虽然它专门针对使用 Sp ...

最新文章

  1. MySQL 数据库show processlist where条件筛选报错解决方法,[Code: 1064, SQL State: 42000] You have an error in your
  2. [待总结]各种中文乱码分析与处理:数据库、eclipse、linux to windows、web应用
  3. 容器(Collection/Map)、容器中的设计模式
  4. 中等职业计算机等级考试,中等职业学校计算机等级考试题库(含答案):EXCEL
  5. 修改Eclipse自动换行长度
  6. RestTemplate 发送 Https 请求调用
  7. vue 组件需要注意的事项:
  8. Python基础__函数
  9. 微观角度上,宇宙膨胀的影响是什么?
  10. cmos和ttl_TTL和CMOS电平别傻傻分不清
  11. Day05 郝斌C语言自学视频之C语言的函数
  12. 中科视拓上榜2019人脸识别技术公司排行TOP 10
  13. pycharm个人最喜欢的配色方案
  14. 一元函数,多元函数,可微的含义 多元函数微分的几何意义 多元函数偏导 那么为什么有微分和可导 能不能固定两个或者多个条件,多偏微分,哈哈
  15. 《Monkey Android》第15课Spinner和AutoCompleteTextView
  16. Laravel框架中使用 Repository 模式
  17. VDI桌面虚拟化和IDV桌面虚拟化你更倾向谁
  18. jacobi旋转法的VB实现
  19. 小程序php文档,微信小程序API 文件
  20. [ZROJ-955]折纸 Solution

热门文章

  1. 【双指针】Square Pasture G(P7153)
  2. 9、mysql数据表中数据的查询(1)
  3. 31、JAVA_WEB开发基础之servlet(2)
  4. JavaFX图表(二)之饼图
  5. JS实现星星评分功能实例代码(两种方法)
  6. Oracle入门(十二F)之表分区
  7. 你真的了解Java中的三目运算符吗
  8. 响应式布局(手机端)
  9. 即日起,正式进入编程世界!
  10. 面向对象VS面向过程