![禁用通过主机名访问服务器](https://linux22.com/image/585648/%E7%A6%81%E7%94%A8%E9%80%9A%E8%BF%87%E4%B8%BB%E6%9C%BA%E5%90%8D%E8%AE%BF%E9%97%AE%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我在 Debian Squeeze 下使用 Apache HTTPD 服务器。
我如何阻止用户通过服务器主机名(dummy.xxx.com)或 IP 地址(xx.xx.xx.xx)访问我的服务器?!
例如:我不希望他们使用主机名或 IP 地址作为 URL。我已经考虑过使用 mod_rewrite 来实现这一点,但是还有其他选择吗?
谢谢!
更新:
让我用一个例子来解释我的想法:通常,您可以通过输入服务器的 IP 地址或服务器主机名或注册域来访问 apache webserver htdocs。但我想只允许使用域进行访问。
答案1
How can I prevent users to access my server by the hostname or ip address?!
然后,您想完全阻止某些主机访问您的网站。(或者我遗漏了什么?)
当然,如果您在 bsd 上使用 linux 或 pf,那么阻止某些主机的用户的最佳方法是使用 iptables。
例如:(iptables)BLOCK_THIS_IP="xxxx"
iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP
编辑:
更新您的问题后(在评论中,请更正并更新您的问题)我们知道您不想阻止您的网站,而只是限制某些用户的访问。
您仍可以通过制定 iptables 规则来实现这一点,但更简单的方法是通过制定适当的 .htaccess 文件来限制访问。这里有一份很好的指南,介绍如何使用 .htaccess 并用它来限制访问。
答案2
您可以通过实施防火墙并添加规则来实现这一点,对于 *NIX,请查看 B14D3 的答案。在 Windows 上,您可以使用软件配置向导。
答案3
设定一个特定的VirtualHost
为主机名不希望人们使用,并将其设为默认(因此它也会捕获对 IP 地址的请求);然后,将其指向DocumentRoot
一个空目录,或者只返回 404,或类似的。