我正在为客户端应用程序创建一个tile服务器集群,由于带宽成本,我们希望在apache中为mod_tiles模块添加某种身份验证。我更喜欢使用oauth的app令牌,但如果我不得不使用基本的auth或类似的东西,那就没问题了。
答案 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本身没有暴力攻击保护。希望这有帮助!