由于各种原因,我想在空闲一段时间后关闭我的服务器。我在 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 有两种可能的方式:
探测器将请求直接发送到 Tomcat 端口(通常为 8080 端口)。您可以通过将属性
address="127.0.0.1"
添加到conf/server.xml
中相应的 Connector 元素,将 Tomcat 的监听地址限制为环回地址来解决此问题.或者您可以在防火墙中阻止端口 8080。请求通过 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/