1

对我的服务器的访问应仅限于某些远程主机,并且我想允许 Uptimerobot 监视我的服务器。

目前 uptimerobot 总是得到 403 Forbidden。

我添加的 Server.xml 看起来像这样:

<Server .........>
  <Service name="Catalina">
      <Engine>
        <Value className="org.apache.catalina.valves.RemoteHostValve" allow=".*\.uptimerobot\.com" />
      </Engine>
  </Service>

匹配此列表中的所有主机UptimeRobot 白名单

但是重新启动服务器后没有任何变化,仍然是 403。

我还尝试使用没有通配符的域名,如下所示:

allow="engine19\.uptimerobot\.com"
allow="engine19.uptimerobot.com"

但是还是403,

我尝试通过添加启用主机名查找

enableLookups="true"

<Connector 标签,但同样没有效果。

但在我的日志中,我看到访问被解析为“engine19.uptimerobot.com”,这与我的 RemoteHost-Pattern 相匹配。

任何想法,为什么它仍然被禁止?

编辑:

通过 IP 访问

 <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="63\.143\.42\.244"/>

正在工作中。但我不想在那里添加整个 ips 列表。RemoteAddrValve有没有可能RemoteHostValve互相打扰?

4

2 回答 2

0

检查 tomcat/logs/local_access_log... 以查看用于 403 的主机名。

我发现我们公司的 DNS 报告了一些全大写和全小写的名称。使用 (?i) 使正则表达式不区分大小写:

allow="(?i)engine19\.uptimerobot\.com"

如果您同时拥有 RemoteHostValve 和 RemoteAddValve,则两者都必须允许传入主机。如果其中一个不允许,则将返回 403。

于 2018-02-08T17:07:30.147 回答
0

我已经尝试过了,这对我有用

在连接器(在 server.xml 内部)中将 useIPVHosts 设置为 true。

我正在使用 HTTP 连接器,它看起来如下

<Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443"
    enableLookups="true"
    useIPVHosts="true" />

属性的详细信息可以在这里找到

于 2017-05-30T05:34:43.807 回答