如何限制访问tilestream服务器?

最近我按照地图服务器或更精确的方式工作。 我build立了一个基于这个初学者指南的瓷砖服务器的自己的实例(除了使用tilestream而不是tilestache): http ://www.axismaps.com/blog/2012/01/dont-panic-an-absolute- 新手引导到build设-A-MAP-服务器/

服务器正在通过http://example.com:8888运行

这个练习的目的是提供一个地图服务器,没有任何forms的使用限制(比如“每月10.000次mapviews”)服务地图,可以通过像传单一样的“frontend-geo-javascript-api”或mapbox.js,并显示在一个博客文章或一个“独立”的网页,这是build立在这样一个地图周围。

尽pipestream量爆炸并且服务器不太可能出现问题,但我仍然要确保只有我的网页(我运行使用我的tilestream-server的示例)才能访问tilestream服务器。

基本上我想让公众远离访问我的tilestream服务器,也就是说只有在传输有效密钥时才允许访问(这似乎是cloudmade所做的)。 或者,也许这将是一个选项来检查请求来自的位置,只允许从特定位置访问。

TileStream服务器和Web服务器(版本:Apache / 2.2.22(Ubuntu))在同一台机器上运行。

我真的迷失在这里,因为我找不到任何有关这方面的文件。 任何build议都非常受欢迎。

前言

如果您有一个前端Web映射应用程序,您希望成为唯一允许访问tile服务器的“客户端”,那么可以通过一个order deny,allow指令的Apache2 .conf文件。

如果要访问磁贴服务器/文件夹,可以使用这些指令来指定允许的连接应从其发出的IP地址或主机名。

如果可以,避免使用.htaccess文件。 只有当您无法访问根文件系统时才应考虑它们。 在这种情况下,听起来像你这样做,最好避免.htaccess。 这通常是托pipe服务的情况,但是您在Ubuntu上托pipe自己的Web服务器的权利?

.conf文件存储在Web服务器用户(如wwwrun )无法直接访问的根文件系统中。

它看起来像你可以确保/ var / www / tiles文件夹只允许在局域网上访问。


入门:

好的….这是你做的!

那个博客告诉你编辑服务器的主要httpd.conf文件…

我不想看看你是否可以将整个<directory>部分剪切并粘贴到一个名为/etc/apache2/conf.d/tiles.conf的新文件中

webserver启动时,会自动加载conf.d文件夹中的任何.conf文件。 您应该在服务器默认的.conf文件(httpd.conf,default-server.conf或apache2.conf)中看到一行代码,其中Include /etc/apache2/conf.d/*.conf

最简单forms的tiles.conf的内容可能如下所示:

 <Directory /var/www/tiles> Order deny,allow deny from all allow from localhost </Directory> 

您可以使用IP(如127.0.0.1192.168.1.1replacelocalhost将IPreplace为您访问networking服务器的任何IP(如果是局域网外 )。

您也可以指定多个主机名/ IP,以空格分隔(即allow from localhost 123.123.123 tiles.example.com )。

如果需要,将pathreplace为tiles文件夹(保存.mbtiles的位置)。

在进行必要的更改后重新启动/重新加载apache2。


故障排除:

查看tile文件夹调用的好地方是检查/var/log/apache2/access_log条目。 如果您无法连接(拒绝访问),请查看error_log中的哪个IP被拒绝=)

您可以使用tail -f /var/log/apache2/access_log实时查看这些日志。 当试图从瓷砖文件夹中抓取瓷砖时,IP将在那里。


请参阅Apache 2.2访问控制 ,它解释了上述方法。 此方法用于限制对Web服务器上资源的访问。 这与使用用户名/密码的authentication不同 。

最后 ,通过<Files> Directive ,可以限制对特定文件的访问,而不是目录。