我正在努力实现这个目标: 我的主域example.com/scripts中有一个目录/文件夹。 名为script的文件夹只能由example.com子域的网站访问,这意味着来自以下任何网站:
admin.example.com,
people.example.com,
etc.example.com,
example.com
他们的页面应该能够调用脚本或/ scripts目录中的任何内容,例如
<script src="https://example.com/scripts/js/demo.js" charset="utf-8"></script>
或
<link rel="stylesheet" href="https://example.com/scripts/css/demo.css">
如果例如来自anotherdomain.com的页面尝试访问/ scripts目录,则服务器将以404响应。
请帮忙! 感谢。
答案 0 :(得分:0)
你遵循完全错误的方法。不要先发布一些东西,然后再试着阻止它。你永远无法真正确保这一点。而是在这些“子域主机”中使用路由端点,从而能够将对该文件夹的访问限制为单个IP地址,即您自己的系统。因此,从客户端的角度来看,浏览器从网站自己的“子域”请求脚本,而子域又在内部将请求重新路由到该文件夹/主机/等等。
有很多解决方案。在互联网上可以找到关于如何做到这一点的任何解释。
根据您的描述,您的设置非常简单,因此在此类路由逻辑中不需要任何特殊逻辑。相反,您需要一个简单的静态映射。最简单的方法是在http服务器本身的层面上做到这一点。如果您已加载代理模块,那么您可以执行类似的操作来实现简单的转发代理:
ProxyPass /scripts/ http://example.com/scripts/
如果不仅是http://example.com/scripts/
提供的脚本,而且还有阻止引用的东西,那么您需要设置反向代理:
ProxyPass /scripts/ http://example.com/scripts/
ProxyPassReverse /scripts/ http://example.com/scripts/
最好是将这些定义放在“子域”的http服务器配置中。您也可以将动态配置文件用于此类内容,但这有许多缺点。
如上所述还有其他解决方案。例如,您可以实现一个简单的路由器脚本,允许进行微调授权管理等。但你显然不需要那样做。
所有这一切的主要目标是:
apache http服务器的官方文档包含您需要的所有信息。它质量很好,并附有很好的例子。