使用mod_tile身份验证打开街道地图平铺服务器

时间:2016-02-17 16:30:25

标签: apache openstreetmap osmdroid

我正在为客户端应用程序创建一个tile服务器集群,由于带宽成本,我们希望在apache中为mod_tiles模块添加某种身份验证。我更喜欢使用oauth的app令牌,但如果我不得不使用基本的auth或类似的东西,那就没问题了。

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,我用apache基本身份验证解决了这个问题。

我做的第一件事就是在不安全的连接上禁用mod_tile。这是必要的,因为基本身份验证没有加密,并且通过不安全连接询问用户的登录/密码通常是个坏主意。

然后,我的虚拟主机文件(在我的情况下是/etc/apache2/sites-available/000-default-le-ssl.conf)看起来像这样:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        DocumentRoot /var/www/html
        ServerName example.com
        ServerAdmin admin@example.com

        # Standard dir connfiguration
        <Directory /var/www/html>
                Options +FollowSymLinks
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>

        # Set BasicAuth on location
        <Location />
                AuthType Basic
                AuthName "Authentication Required"
                AuthUserFile /usr/local/.tileauth
                Require valid-user
        </Location>

        # Enable tile server
        LoadTileConfigFile /usr/local/etc/renderd.conf
        ModTileRenderdSocketName /var/run/renderd/renderd.sock
        ModTileRequestTimeout 0
        ModTileMissingRequestTimeout 30

        # Specify certificate and key using letsencrypt
        SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

因此,设置基本身份验证的内容在<Location>块内。密码文件生成如下:

$ htpasswd -c /usr/local/.tileauth tile_server_user

除此之外,我还建议使用fail2ban来监控基本身份验证尝试,因为apache本身没有暴力攻击保护。希望这有帮助!