我在电脑上打开了一台服务器。我在同一网络上的所有朋友都可以通过他们的计算机访问它。但是我想只允许我的一个朋友访问。所以我试着在我的context.xml
<Context>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="myFriendsComputerName"
/>
</Context>
他得到错误403被拒绝访问。
然后我试了
<Context>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1"
/>
</Context>
这限制了我自己的计算机访问。
我的context.xml
答案 0 :(得分:5)
RemoteAddrValve
始终使用IP地址。如果要按主机名限制,则需要使用RemoteHostValve
。请注意,您正在使用正则表达式,因此您可以根据需要匹配客户端主机名的一部分(但它的安全性会稍差)。
另请注意,如果您的服务器上已禁用DNS解析,您仍将与远程客户端的IP地址进行比较,因此您可能希望通过允许主机名或IP地址进行IP回退。
答案 1 :(得分:4)
您必须使用RemoteHostValve而不是RemoteAddrValve,并使用主机的FQDN。因此,如果您的域名是mydomain.com,请使用:
<Context>
<Valve className="org.apache.catalina.valves.RemoteHostValve"
allow="myFriendsComputerName.mydomain.com"
/>
</Context>
您可以使用nslookup来发现主机如何将您的朋友IP地址解析为主机名:
nslookup x.y.w.z