apache - 如何过滤请求以便 apache 处理它们而不是 tomcat?

标签 apache tomcat url-rewriting mod

由于各种原因,我想在空闲一段时间后关闭我的服务器。我在 Debian 4.9.88 上运行 Tomcat 8.5.29 和 Apache2(不确定版本)。我写了一个脚本来查看 Tomcat 上次访问的时间。我在服务器上只有一个应用程序,它位于“http://hostname/source/”。我的问题是那里有很多网络服务器漏洞,我不断收到以下请求: “获取/HTTP/1.1” “POST/GponForm/diag_Form?images/HTTP/1.1” “GET/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.system%3Aservice%3DMainDeployer HTTP/1.1” “POST/user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1”

我想做的是阻止任何不以“/source”开头的东西进入 tomcat。我假设重写或 Apache 中的某些东西可以做到这一点,但我不确定请求首先是如何到达 Tomcat 的。 有什么想法吗?

最佳答案

请求到达 Tomcat 有两种可能的方式:

  1. 探测器将请求直接发送到 Tomcat 端口(通常为 8080 端口)。您可以通过将属性 address="127.0.0.1" 添加到 conf/server.xml 中相应的 Connector 元素,将 Tomcat 的监听地址限制为环回地址来解决此问题.或者您可以在防火墙中阻止端口 8080。

  2. 请求通过 Apache 中的反向代理配置从 Apache 转发到 Tomcat。这意味着在其中一个 Apache 配置文件中有如下一行:

    ProxyPass/http://127.0.0.1:8080/

    如果你给两个参数都添加一个明确的路径前缀,你可以限制哪些请求被传递给 Tomcat:

    ProxyPass/source http://127.0.0.1:8080/source

    这确保只有以“/source”开头的请求才会转发到 Tomcat。

    一些 Apache 配置使用 AJP 协议(protocol)而不是 HTTP 进行代理,但同样的道理也适用。

关于apache - 如何过滤请求以便 apache 处理它们而不是 tomcat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50219397/

相关文章:

java - 仅在 REST API 调用时出现 Spring Boot 404

java - 尝试请求 JSF 页面时获取 404 状态

java - 为什么速度没有取代值(value)?

java - log4j - 空日志文件 -

java - 为什么在 PoolingClientConnectionManager 中弃用所有方法?

asp.net - 图像的 URL 重写

apache - .htaccess 将查询字符串中的 "? | & | = "替换为 "_"

iis - applicationHost.config 中是否有替代 configSource 的方法?

php - UTF-8贯穿始终

apache - .htaccess 重定向以 %(百分比)符号开头