当在远程 VPS 上建立网站时,我们希望只有团队成员才能访问它,并且我们还希望在网站最终完成之前保持搜索引擎机器人处于关闭状态。
无论是在 Iptables 还是 Apache 中,通过主机进行访问控制都是不可取的,因为访问主机可能会有所不同。
在阅读了 Apache 配置和其他 SF 帖子之后,我决定采用以下设计,该设计依赖于限制仅通过特定域名进行访问:
默认虚拟主机将在 Apache 配置中被禁用,如下所示 - 依靠 Apache 行为使用第一个虚拟主机作为站点默认值:
<VirtualHost *:80>
# Anything matching this should be silently ignored.
</VirtualHost>
<VirtualHost *:80>
ServerName secretsiteone.com
DocumentRoot /var/www/secretsiteone.com
</VirtualHost>
<VirtualHost *:80>
ServerName secretsitetwo.com
...
</VirtualHost>
然后每个团队成员可以在他们的本地添加域名/etc/hosts
:
xx.xx.xx.xx secrethostone.com
我的问题是:上述技术是否足以实现上述目标,尤其是限制 SE 机器人,或者机器人是否有可能解决这个问题。
笔记:我理解 mod_rewrite 规则可以用来实现与此处讨论的类似的效果: 如何在 apache2 中禁用默认 VirtualHost?,因此同样的问题也适用于该技术。
另请注意:内容并不高度保密 - 我们的想法不是设计某种防黑客的东西,所以我们不担心流量拦截或类似问题。我们的想法是防止竞争对手和临时浏览者在内容发布之前查看内容,并防止 SE 机器人对其进行索引。
答案1
当然,如果你选择一个非常随机的域名,它应该相当隐蔽。然而,把它放在一个http 摘要身份验证提示。然后只需将凭证分发给您的团队成员,他们就可以访问它。
在您的 VirtualHost 中,只需指定要保护的位置。这可能与您的 VirtualHost DocumentRoot 路径相同:
<Location /var/www/secretsiteone.com>
AuthName 'Nothing to see here'
AuthType Digest
AuthDigestProvider file
AuthDigestDomain /
AuthUserFile /path/to/.htdigest
Require valid-user
</Location>
然后生成该.htdigest
文件:
htdigest -c /path/to/.htdigest 'Nothing to see here' 'username'