使用 mod_tile 身份验证打开街道地图图块服务器
Open Street Map Tile Server using mod_tile authentication
我正在为客户端应用程序创建一个 tile 服务器集群,由于带宽成本,我们想向 apache 中的 mod_tiles 模块添加某种身份验证。我更喜欢使用 oauth 的应用程序令牌,但如果我必须使用基本身份验证或类似的东西,那就没问题了。
我有一个类似的问题,我用 apache 基本身份验证解决了它。
我所做的第一件事是禁用 mod_tile
不安全的连接。这是必要的,因为基本身份验证没有加密,并且通过不安全的连接询问用户的 login/password 通常不是一个好主意。
然后,我的虚拟主机文件(在我的例子中是 /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 本身没有暴力攻击保护。希望这对您有所帮助!
我正在为客户端应用程序创建一个 tile 服务器集群,由于带宽成本,我们想向 apache 中的 mod_tiles 模块添加某种身份验证。我更喜欢使用 oauth 的应用程序令牌,但如果我必须使用基本身份验证或类似的东西,那就没问题了。
我有一个类似的问题,我用 apache 基本身份验证解决了它。
我所做的第一件事是禁用 mod_tile
不安全的连接。这是必要的,因为基本身份验证没有加密,并且通过不安全的连接询问用户的 login/password 通常不是一个好主意。
然后,我的虚拟主机文件(在我的例子中是 /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 本身没有暴力攻击保护。希望这对您有所帮助!