web server apache tomcat11-15-proxy

server/2024/10/9 17:26:24/

前言

整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。

开源项目

从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。

系列文章

web server apache tomcat11-01-官方文档入门介绍

web server apache tomcat11-02-setup 启动

web server apache tomcat11-03-deploy 如何部署

web server apache tomcat11-04-manager 如何管理?

web server apache tomcat11-06-Host Manager App -- Text Interface

web server apache tomcat11-07-Realm Configuration

web server apache tomcat11-08-JNDI Resources

web server apache tomcat11-09-JNDI Datasource

web server apache tomcat11-10-Class Loader

...

代理支持如何操作

介绍

在使用标准配置的 Tomcat 时,Web 应用程序可以请求处理请求的服务器名称和端口号。

当 Tomcat 以 HTTP/1.1 连接器独立运行时,它通常报告请求中指定的服务器名称和连接器侦听的端口号。

关键的 servlet API 调用包括:

  • ServletRequest.getServerName(): 返回发送请求的服务器的主机名。

  • ServletRequest.getServerPort(): 返回发送请求的服务器的端口号。

  • ServletRequest.getLocalName(): 返回接收请求的 IP 接口的主机名。

  • ServletRequest.getLocalPort(): 返回接收请求的 IP 接口的端口号。

然而,当在代理服务器后运行时(或将 Web 服务器配置为代理),您可能希望管理这些调用返回的值。

Apache httpd 代理支持

Apache httpd 1.3 版及更高版本支持一个可选的模块(mod_proxy),该模块配置 Web 服务器以充当代理服务器。这可以用于将特定 Web 应用程序的请求转发到 Tomcat 实例,而无需配置像 mod_jk 这样的 Web 连接器。要实现这一点,您需要执行以下任务:

  1. 配置您的 Apache 副本,以包含 mod_proxy 模块。如果您从源代码构建,则最简单的方法是在 ./configure 命令行上包含 --enable-module=proxy 指令。

  2. 如果尚未为您添加,请确保在 Apache 启动时通过在 httpd.conf 文件中使用以下指令加载 mod_proxy 模块:

    LoadModule proxy_module {path-to-modules}/mod_proxy.so
  3. 对于您希望转发到 Tomcat 的每个 Web 应用程序,在 httpd.conf 文件中包含两个指令。例如,要转发上下文路径为 /myapp 的应用程序:

    ProxyPass         /myapp  http://localhost:8081/myapp
    ProxyPassReverse  /myapp  http://localhost:8081/myapp

    这告诉 Apache 将形如 http://localhost/myapp/* 的 URL 转发到端口 8081 上侦听的 Tomcat 连接器。

  4. 配置您的 Tomcat 副本以包含一个特殊的 <Connector> 元素,并具有适当的代理设置,例如:

    <Connector port="8081" ...proxyName="www.mycompany.com"proxyPort="80"/>

    这将导致此 Web 应用程序中的 Servlet 认为所有代理请求都是发往 www.mycompany.com 的端口 80。

可以省略 <Connector> 元素中的 proxyName 属性。如果您这样做,则 request.getServerName() 返回 Tomcat 正在运行的主机名。在上面的示例中,它将是 localhost。

如果您还有一个 <Connector> 侦听端口 8080(嵌套在同一个 Service 元素中),则对任一端口的请求将共享相同的虚拟主机和 Web 应用程序。

您可能希望使用操作系统的 IP 过滤功能来限制对端口 8081(在此示例中)的连接,只允许来自运行 Apache 的服务器。

或者,您可以设置一系列仅通过代理访问的 Web 应用程序,如下所示:

  1. 配置另一个只包含代理端口 <Connector><Service>

  2. 为通过代理访问的虚拟主机和 Web 应用程序配置适当的 Engine、Host 和 Context 元素。

  3. 可选地,像前面描述的那样使用 IP 过滤器保护端口 8081。

通过 Apache 代理时,Web 服务器将在其访问日志中记录这些请求。因此,您通常希望禁用 Tomcat 本身执行的任何访问日志记录。

以这种方式代理请求时,所有针对配置的 Web 应用程序的请求都将由 Tomcat 处理(包括针对静态内容的请求)。您可以通过使用 mod_jk Web 连接器而不是 mod_proxy 来提高性能。

mod_jk 可以配置为使 Web 服务器提供未在 Web 应用程序的部署描述符 (/WEB-INF/web.xml) 中定义的过滤器或安全约束处理的静态内容。

参考资料

https://tomcat.apache.org/tomcat-11.0-doc/proxy-howto.html


http://www.ppmy.cn/server/16975.html

相关文章

RedisHttpSession反序列化UID问题跟踪

1.RedisHttpSession配置 package com.visy.configure;import org.springframework.context.annotation.Configuration; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;Configuration EnableRedisHttpSession(maxInactive…

【对象存储】SpringBoot集成华为云OBS对象存储

总体思路是后端向华为云OBS服务器申请授权信息并设置过期时间&#xff0c;后端再将授权信息以Map形式发给前端&#xff0c;前端将文件和授权信息直接发给华为云OBS服务器。 1. 引入依赖 <dependency><groupId>com.huaweicloud</groupId><artifactId>e…

【threejs教程9】threejs加载360全景图(VR)的两种方法

目录 前言 1.Equirectangular映射背景 实现步骤 1.初始化TextureLoader 2.加载Equirectangular纹理 3.配置映射类型和颜色空间 4.应用背景 完整代码如下 2.立方体贴图背景 实现步骤 1.创建CubeTextureLoader 2.加载立方体贴图 3.应用背景 完整代码如下 …

NLP(8)--利用RNN实现多分类任务

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 循环神经网络RNN&#xff08;recurrent neural network&#xff09;&#xff1a; 主要思想&#xff1a;将整个序列划分成多个时间步&#xff0c;将每一个时间步的信息依次输入模型&#xff0c;同时将模型输出的结果传给下一个…

分类算法——集成学习方法之随机森林(六)

集成学习方法 集成学习通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类 器/模型&#xff0c;各自独立地学习和作出预测。这些预测最后结合成组合预测&#xff0c;因此优于任何一 个单分类的做出预测。 随机森林 在机器学习中&#xff0c;随机森林是一…

SpringBoot - java.lang.NoClassDefFoundError: XXX

问题描述 以 json-path 为例&#xff1a;java.lang.NoClassDefFoundError: com/jayway/jsonpath/Configuration 原因分析 编译不报错&#xff0c;但是运行时报错。 遇到这样类似的问题&#xff0c;首先就要想到是不是 Jar 包冲突引起的&#xff0c;或者引入的不是理想的 Jar…

市场投放用户获取方面如何做数据分析

常用数据分析指标 1. 基础指标 下载量: 指通过广告投放带来的下载安装量。 安装率: 指广告点击后下载安装的用户占比。 激活率: 指下载安装后启动应用的用户占比。为了防止假量和刷量&#xff0c;一般会把激活动作定义得更严格更深层一些。比如用户浏览30秒&#xff0c;用户…

全面解读CMS系统:核心技术、架构设计与应用实践

引言 内容管理系统&#xff08;Content Management System, CMS&#xff09;作为一种广泛应用的软件平台&#xff0c;以其强大的内容创建、编辑、发布和管理功能&#xff0c;极大地简化了网站、移动应用以及各类数字媒体的内容运营工作。本文将从核心技术、架构设计以及实际应用…