Como limitar o acesso a um servidor tilestream?

2

Recentemente trabalhei meu caminho no assunto dos servidores de mapas ou, para ser mais preciso, em servidores de blocos. Eu configurei minha própria instância de um tileserver com base neste guia para iniciantes (com exceção do uso de tilestream em vez de tilestache): link

O servidor está sendo acessível por meio do link

O objetivo deste exercício era ter um mapserver disponível, sem qualquer tipo de restrição de uso (como "10.000 mapviews por mês"), para servir mapas que podem ser acessados facilmente através de um 'frontend-geo-javascript-api' como o folheto, ou o mapbox.js e ser mostrado em uma postagem do blog ou em uma página da Web 'autônoma' que é construída em torno de um mapa desse tipo.

Embora seja improvável que o tráfego exploda e o servidor entre em problemas, ainda quero ter certeza de que apenas a minha página da Web (onde eu uso meu exemplo que está usando meu servidor do tilestream) tenha acesso ao servidor tilestream.

Basicamente eu quero manter o público longe de acessar meu servidor tilestream e isto é, só permitir acesso se uma chave válida for transmitida (isso parece ser o que a nuvem faz). Ou talvez seja uma opção verificar o local de onde veio o pedido e apenas permitir o acesso a partir de localizações específicas.

O servidor TileStream e o servidor Web (versão: Apache / 2.2.22 (Ubuntu)) são executados na mesma máquina.

Estou realmente perdido aqui, pois não consigo encontrar nenhuma documentação sobre isso. Qualquer sugestão é muito bem vinda.

    
por mwallisch 14.03.2013 / 23:43

1 resposta

3

Preâmbulo

Se você tiver um aplicativo de front-end de mapeamento da web que deseja ser o único "cliente" com permissão de acesso ao servidor de bloco, isso é possível por meio de um arquivo Apache2 .conf com order deny,allow diretivas.

Você pode usar essas diretivas para especificar um endereço IP ou um nome de host a partir do qual uma conexão permitida deve se originar, se tiver acesso ao servidor / pasta de blocos.

Evite arquivos .htaccess, se puder. Eles devem ser considerados apenas quando você não tem acesso ao sistema de arquivos raiz. Neste caso, parece que você faz isso, então é melhor evitar o .htaccess. Este é geralmente o caso de um serviço hospedado, mas você está hospedando seu próprio servidor no Ubuntu?

Os arquivos

.conf são armazenados no sistema de arquivos raiz, onde o usuário do servidor web (como wwwrun ) não pode acessá-los diretamente.

Parece que você pode proteger a pasta / var / www / tiles para permitir acesso somente na LAN.

Primeiros passos:

OK .... aqui está o que você faz!

Esse blog lhe disse para editar o arquivo principal httpd.conf dos servidores ...

Eu não gostaria, veja se você pode cortar e colar toda a porção <directory> em um novo arquivo chamado /etc/apache2/conf.d/tiles.conf

Quaisquer arquivos .conf na pasta conf.d são carregados automaticamente quando o servidor é iniciado. Você deve ver uma linha para isso em um dos arquivos .conf padrão dos servidores (httpd.conf, default-server.conf ou apache2.conf) que diz Include /etc/apache2/conf.d/*.conf .

O conteúdo do tiles.conf em sua forma mais simples pode ser semelhante:

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

Você pode substituir localhost por um IP como 127.0.0.1 ou 192.168.1.1 ( substitua esse IP por qualquer IP acessado pelo servidor da Web se estiver fora da LAN ).

Você também pode especificar vários nomes de host / IPs separados por um espaço (ou seja, allow from localhost 123.123.123 tiles.example.com ).

Substitua o caminho para a pasta tiles , se necessário (onde as .mbtiles são salvas).

Reinicie / Recarregue o apache2 depois de fazer as alterações necessárias.

Solução de problemas:

Um bom local para ver de onde as chamadas para a pasta de mosaicos estão sendo feitas é verificar as entradas /var/log/apache2/access_log . Se você não consegue se conectar (acesso negado), veja qual IP está sendo negado no error_log instead =)

Você pode ver esses registros em tempo real com tail -f /var/log/apache2/access_log . O IP estará lá quando tentar pegar os blocos da pasta de blocos.

Veja o Controle de Acesso do Apache 2.2 onde explica a abordagem acima. Este método é usado para restringir o acesso a um recurso no servidor web. Isso não é o mesmo que Autenticação que usa um nome de usuário / senha.

Por último , com o <Files> Directive possível restringir o acesso a arquivos específicos em vez de diretórios.

    
por 15.03.2013 / 04:37

Tags