Mais

Como configurar o Geoserver ProxyBaseUrl servindo a vários outros proxies


Temos GeoServers internos inseguros atrás de um balanceador de carga interno. O acesso ao balanceador de carga está disponível apenas no tráfego da rede interna ou em um proxy da web de autenticação. Podemos definir a configuração do URL base do proxy no GeoServer para que o tráfego interno possa direcionar para o balanceador de carga.
Quando publicamos nossos serviços, temos um único URL de proxy no arquivo GetCapabilities que só resolve internamente. Não controlamos as outras aplicações cliente (OpenLayers, QGIS / ArcMap? Etc…) e os proxies que utilizam para aceder aos nossos serviços. Alguns clientes estão solicitando o arquivo GetCapabilities do GeoServer por meio de seu proxy e, em seguida, tentando usar o URL base do proxy (enviado no arquivo de capacidades) para acessar as imagens do mapa. Obviamente, isso não funcionará, pois eles não serão direcionados por meio de seu proxy original.

Como definimos nosso URL de proxy básico para serviços que podem ser consumidos por vários proxies desconhecidos sem expor nosso serviço como um url resolvível externamente? Temos uma série de abordagens em mente, nenhuma delas elegante:

1) Crie diferentes instâncias do GeoServer para cada proxy

2) Crie um arquivo GetCapabilities reescrever em nosso balanceador de carga / proxy para reescrever o url de base, dependendo da origem da solicitação original

3) Expor o serviço à internet com autenticação básica


Solução não trivial para geoserver autônomo

Se seus proxies reversos definirem os cabeçalhos X-Forwarded- * corretamente, você pode usar o ForwardedHeaderFilter (no Spring Framework desde 4.3.0)

Adicione ao geoserver web.xml:

 ForwardedHeaderFilter org.springframework.web.filter.ForwardedHeaderFilter  ForwardedHeaderFilter /*

O código-fonte deste filtro pode ser encontrado no github: https://github.com/spring-projects/spring-framework/blob/master/spring-web/src/main/java/org/springframework/web/filter/ ForwardedHeaderFilter.java

Tente compilar isso com as bibliotecas Spring usadas em seu geoserver e coloque-o no classpath (por exemplo, como um .jar em webapps / geoserver / WEB-INF / lib).

Ao executar o .war no Tomcat

Então você pode apenas usar RemoteIpValve do Tomcat. Coloque isso em seu server.xml:


Você deve definir o URL base do proxy para ser o url do seu servidor proxy externo para que seja definido corretamente em todos os documentos GetCapabilities de saída que os clientes verão.

Se um cliente estiver trabalhando por meio de um proxy, é responsabilidade do cliente reescrever a url base fornecida.

Eu consideraria qualquer outro comportamento um bug e relataria aos desenvolvedores relevantes.


Configuração Nginx para Geoserver

Estou tentando construir um site com acesso a serviços WMS de uma instância do GeoServer no mesmo droplet DigitalOcean do site. O droplet é um servidor Ubuntu 18.04 com - tomcat8 - postgresql-10 - openjdk-8-jdk-headless - nginx

Implantei o GeoServer de um arquivo da web e se conectar usando ssh da minha máquina local e mapear a porta droplets 8080 para a porta 63334 na minha máquina local, posso acessar o aplicativo da web GeoServer em http: // localhost: 63334 / bcp_geoserver / web / e também posso usar os serviços WMS em um mapa de folheto simples usando http: // localhost: 63334 / bcp_geoserver / LCFP / wms como um endereço em um arquivo HTML em minha máquina local. Portanto, o GeoServer parece estar funcionando corretamente.

No entanto, se eu alterar o endereço no arquivo HTML para http: // localhost: 8080 / bcp_geoserver / LCFP / wms e carregá-lo para a pasta raiz do meu site nginx no droplet, recebo um erro de conexão recusada para os serviços wms se eu tente acessar o site pela Internet. Presumo que seja porque não tenho uma configuração Nginx adequada para este site. Existe uma maneira de configurar o Nginx para que o site possa usar os serviços WMS?

Esta é minha configuração Nginx atual para este site:

Não implantei um firewall e tenho outro webapp tomcat em um subdomínio (também em localhost: 8080) e o Nginx o está servindo corretamente com proxy_pass.


Como você configura um armazenamento de dados WMS (cascata WMS) no geoserver em relação a um WMS que usa autenticação x509?

Gostaria de adicionar um armazenamento de dados WMS à minha instância geoserver e tive sucesso com servidores WMS que não têm autenticação ou autenticação básica de nome de usuário / senha, mas agora estou tentando adicionar um armazenamento de dados que usa x509 como seu método de autenticação e Estou perplexo.

Ao adicionar um armazenamento de dados WMS por meio da IU do console de administração, tudo o que está disponível é a autenticação de nome de usuário / senha: Informações de conexão abaixo para criar uma nova conexão WMS

Eu examinei a documentação e encontrei a seção detalhando como proteger o geoserver com autenticação x509, mas não consegui configurar o geoserver como o cliente x509.

Estou familiarizado com as propriedades do armazenamento de chaves e do armazenamento confiável e estou usando as mesmas, mas não consegui encontrar nada que indique um armazenamento de certificados de cliente. Estou começando a me perguntar se preciso configurar um proxy de encaminhamento configurado com os certificados de cliente adequados.


1 resposta 1

Sem mais depuração, o erro 400 é muito vago para muita ajuda. Por experiência própria, posso dizer que já vi um problema antes em que o servidor geowebcache não gosta de servir a camada wms que você está solicitando. Mapfish tenta fazer coisas estranhas com tamanhos de ladrilhos diferentes (e você eventualmente obtém um erro de limite de 10%). Seu log mostra a imagem que estava solicitando? Você pode acessar esse bloco em nosso navegador para ver o que o servidor realmente diz? Foi assim que acabei expondo meus problemas.

Para uma depuração mais fácil, também criei um log de mapfish separado para facilitar a localização de meus problemas de mapfish. Use a tela de administração do Geoserver para descobrir qual perfil de registro você está usando, então naquele arquivo log4j.properties, adicione um appender de arquivo separado para mapfish e direcione toda a atividade org.mapfish para ele. Isso torna a depuração muito mais fácil.

E FINALMENTE, minha própria cruzada pessoal: em seu config.yaml, não use outputFormats: [pdf], em vez disso, use formatos: ['pdf'].

Mesmo que todos os documentos descrevam outputFormat (e é isso que é exigido na "especificação" do cliente), a configuração do servidor real usa a variável 'formata'. Enviei um patch para deixar isso mais claro na documentação, mas até então, vamos esta nota ser um guia. Se você deseja entrar na saída da imagem, esta é a chave.


Como fornecer imagens tiff WMS por meio do GeoServer

Eu sou novo no mundo GeoServer / banco de dados. Nunca fiz nenhum trabalho de banco de dados antes, mas preciso configurar um WMS usando GeoServer como parte do meu estágio de estudante.

Estou usando o GeoServer 2.0.1 em modo autônomo (baixado usando Jetty) com PostgreSQL 8.4 instalado. Passei por nyc_roads e nyc_buildings install demo na documentação do GeoServer, mas ainda não entendo como devo proceder para disponibilizar algumas imagens de teste. Percebi que a configuração do nyc_roads incluía um arquivo .sql que era responsável por configurar o banco de dados nyc_buildings. Não sei como / onde este arquivo foi gerado.

Nossas imagens de teste são .tiff e .jpeg. Consegui fazer uma chamada WMS com êxito na máquina GeoServer local e abri as imagens de demonstração incluídas. Agora desejo adicionar essas imagens .tiff e .jpeg ao GeoServer e acessá-las por meio do WMS. Tentei copiar as imagens para o diretório de dados do GeoServer, adicionando um novo armazenamento de dados e camadas, mas sempre recebo um erro em relação ao fluxo de entrada.

Lamento se estou omitindo informações vitais, isso é tudo que eu sei.

Conforme descrito no comentário abaixo, estou confuso sobre por que o GeoServer não publica uma camada de imagem GeoTiff. Criei um espaço de trabalho e armazenamento de dados separados para ele. Quando vou adicionar a imagem GeoTiff, as caixas delimitadoras / coordenadas geográficas são lidas corretamente, junto com o formato EPSG correto. Quando estou satisfeito com as configurações, clico em salvar, mas nada acontece. Sem mensagens de erro ou avisos.


Suporte WMS “correspondência mais próxima” para dimensão de tempo

A dimensão de tempo WMS agora pode ser configurada para “correspondência mais próxima”, ou seja, para retornar o tempo mais próximo ao solicitado (explicitamente ou implicitamente por meio do valor de tempo padrão).

Em caso de incompatibilidade, o tempo real usado será retornado junto com a resposta como um cabeçalho HTTP. Também é possível configurar uma tolerância máxima, além disso o servidor lançará uma exceção de serviço.


Hack 89. Publique seus geodados na web com o GeoServer

Se os padrões OGC da web atendem às suas necessidades, o GeoServer é uma ótima maneira de começar.

No início deste capítulo, apresentamos a visão do OpenGIS Consortium & # 39s para GIS acessível com seus padrões de Geography Markup Language, Web Feature Service e Web Map Service. Se você decidir que WFS, WMS e GML atendem às suas necessidades, o GeoServer é um ótimo lugar para começar.

GeoServer é um kit de ferramentas baseado em servlet Java que aspira ser o Apache da web geoespacial, projetado para tornar mais fácil para novos usuários instalar e publicar seus geodados existentes. GeoServer é GPL e está disponível no Sourceforge em http://geoserver.sf.net/. O principal apoiador do projeto é uma organização sem fins lucrativos chamada The Open Planning Project, que acredita que dados mais acessíveis sobre nosso meio ambiente ajudarão a dar aos cidadãos uma voz mais ativa sobre as decisões de planejamento que afetam suas vidas.

GeoServer é um aplicativo J2EE construído como uma camada fina sobre o excelente kit de ferramentas GeoTools Java GIS. Isso permite que ele suporte uma ampla variedade de formatos de dados, já que o GeoTools se esforça para tornar a adição de novos formatos de dados o mais fácil possível. Neste hack, vamos colocar uma instância do GeoServer em funcionamento.

Você precisará do Java instalado em seu computador. GeoServer requer pelo menos a versão 1.4, que pode ser baixada do site da Sun & # 39s ou de http://blackdown.org/ para muitas distribuições Linux. Você também precisará de um contêiner de servlet Java. Há uma variedade de implementações de Servlet Container de código aberto e comercial; duas boas são Tomcat (do projeto Jakarta da Apache & # 39s, disponível gratuitamente para todos) e Resin (da Caucho, uma empresa comercial, grátis para propósitos de desenvolvimento e amadores, e muito rápido ) Ambos são fáceis de configurar e possuem servidores web embutidos, então o Apache não precisa ser instalado. Para usar a ferramenta de administração baseada na web do GeoServer, Tomcat 5 é necessário, pois ele suporta a versão 2.0 da especificação Servlet.

Você pode obter a versão mais recente do GeoServer na área de download em http://geoserver.sf.net/. No momento em que este artigo foi escrito, esta é a versão 1.2.0. A maneira mais rápida de começar é pegar o arquivo WAR: a versão mais recente é sempre geoserver.war. Isso pode ser colocado diretamente no diretório Servlet Container & # 39s webapps, sem a necessidade de mais experiência em Java. Para construí-lo a partir do zero, é necessário o formiga ferramenta de construção.

8.4.2. Iniciando GeoServer

O .war contém todo o código, bibliotecas e arquivos de configuração para executar o GeoServer. Tanto o Tomcat quanto o Resin possuem um diretório denominado webapps / onde o arquivo .war deve ser colocado. Se o contêiner já estiver em execução, pode ser necessário reiniciá-lo, mas assim que estiver, o .war se expandirá e o GeoServer será carregado. A melhor maneira de verificar se o GeoServer está funcionando é emitir um GetCapabilities solicitação por meio de qualquer navegador da web. Se o contêiner estiver em execução em sua máquina local na porta padrão, a solicitação de recursos terá a seguinte aparência:

Isso deve retornar um documento WFS Capabilities.xsd com valores de amostra. Você também deve ver alguns FeatureTypes, exemplos na instalação padrão do GeoServer. Estes podem ser consultados com GetFeature e DescribeFeatureType solicitações de. GeoServer também tem um servidor de mapas da web integrado, seu documento de capacidades é consultado de forma semelhante:

8.4.2.1 Configurando GeoServer

Agora que o GeoServer está instalado e funcionando, é hora de configurá-lo com suas próprias informações e dados. GeoServer tem uma interface de usuário baseada na web para tornar isso o mais fácil possível. Ele é acessado em:

Isso mostrará uma página de boas-vindas, com links para a página Capacidades. Ele também tem um link para o TestWfsPost servlet, que é bastante útil para brincar com as partes XML post do Web Feature Service. As solicitações WFS podem ser escritas diretamente na caixa de texto e enviadas para o GeoServer. Algumas outras páginas também podem ser acessadas, como informações de contato e estatísticas básicas. Mas para realmente configurar o GeoServer, você deve fazer o login. Tentar fazer qualquer ação do tipo administrativo ou clicar no botão de login o levará para a página de login. Para fazer o login, o nome de usuário padrão é & quotadmin & quot e a senha é & quotgeoserver. & quot

A página de administração mostra várias estatísticas e permite a liberação de bloqueios. A página relevante por enquanto é Config, mostrada na Figura 8-2.

Figura 8-2. Administração do GeoServer

A configuração do GeoServer é dividida em quatro seções básicas: Servidor, que contém configurações globais do aplicativo e informações de contato WFS e WMS, que definem suas configurações específicas e Dados, onde diferentes formatos de dados são carregados e configurados para servir como camadas (em WMS) e FeatureTypes ( em WFS).

8.4.2.2 Definir configurações globais e informações de contato

A primeira coisa a ser configurada são as configurações globais e as informações de contato no Servidor, mostradas na Figura 8-3. Máximo de recursos permite que você especifique um limite no número de recursos que podem ser retornados. O GeoServer agora pode retornar 15 MB de dados geográficos operando em uma Java Virtual Machine (JVM) com um máximo de 10 MB ou menos de memória. Também foi testado para lidar com mais de 10.000 GetCapabilities solicitações de. Mas o valor de Recursos Máximos ainda é útil para conjuntos de dados extremamente grandes que os clientes não desejam necessariamente receber todos de uma vez.

Figura 8-3. Configuração do GeoServer

O campo Verbose pode ser definido para indicar se os documentos XML retornados devem ter uma impressão bonita, ou seja, recuos e espaçamento adequados para legibilidade humana. Isso pode ser útil ao começar, mas quando realmente estiver em produção, a maioria dos clientes provavelmente serão programas de computador que não se importam em nada com a impressão bonita; na verdade, os espaços e os retornos de carro apenas retardarão um pouco o processamento. Observe que a maioria dos navegadores agora colocará XML em formato legível por humanos por conta própria, então você provavelmente ainda será capaz de ler facilmente a saída do GeoServer se definir Verbose como false.

Outros campos podem limitar o número de decimais retornados em GetFeature respostas, o que pode ajudar a reduzir a largura de banda (mas também a precisão). O conjunto de caracteres pode ser alterado para codificações específicas, mas UTF-8 é recomendado. E o nível de registro determina quanta informação vai para os registros.

A seção de informações de contato é bastante autoexplicativa, ela aparecerá na seção de informações de contato de recursos do WMS (a especificação WFS 1.0 não tem uma seção correspondente, mas prevemos que uma versão futura da especificação terá).

8.4.2.3 Aplicando e salvando suas alterações

Para que suas novas informações de contato e configurações apareçam no GeoServer, você deve primeiro clicar no botão Enviar. Você pode visualizar as alterações clicando no botão Aplicar no lado esquerdo da tela. O primeiro lugar que isso deve aparecer é no link de contato no canto superior esquerdo da tela, que deve ser substituído pelo seu nome. Ao clicar nele, você será levado a uma página com as informações de contato que acabou de enviar. As mudanças também serão refletidas no documento de recursos WMS, basta emitir uma solicitação como:

A segunda seção deve ter suas informações atualizadas.

Depois de visualizar as alterações com o botão Aplicar, as alterações podem ser mantidas nos arquivos de configuração com o botão Salvar. Então, suas alterações estarão lá quando o GeoServer for iniciado da próxima vez. Se você não quiser enviar as alterações feitas após clicar em Aplicar, clique em Carregar para reverter o GeoServer ao estado em que estava na última vez em que foi salvo.

Figura 8-4. Gerenciamento de dados GeoServer

8.4.3. Publicação de seus próprios dados

Depois de configurar as novas informações de contato, a próxima etapa é disponibilizar seus próprios dados. A página Dados (Figura 8-4) é o lugar para fazer isso. É dividido em quatro seções: Stores, que define os parâmetros de conexão para vários formatos de dados Namespace, que configura os namespaces XML disponíveis para FeatureTypes Style, onde estilos WMS podem ser adicionados e FeatureType, que define os FeatureTypes específicos dos DataStores disponíveis.

Um DataStore é a abstração do GeoTools para a localização de dados geográficos. Pode ser um arquivo, como um shapefile, ou um banco de dados, como PostGIS, Oracle Spatial ou ArcSDE. Um DataStore conterá um ou mais FeatureTypes. Para bancos de dados, um FeatureType é geralmente uma tabela específica em que cada linha da tabela é um recurso. A implementação do arquivo de forma atual contém apenas um FeatureType por DataStore, mas pode-se imaginar outros tipos de arquivo onde um DataStore é um diretório que contém vários arquivos diferentes. Para criar um novo DataStore, clique no link Lojas e depois no botão Novo. Isso o levará a uma página como a mostrada na Figura 8-5.

Figura 8-5. Adicionar um GeoServer DataStore

Adicionaremos um armazenamento de dados PostGIS. [Dica 87] mostra como começar e [Dica 88] explica como converter suas trilhas em um banco de dados PostGIS indexado.

Na tela GeoServer DataStore, selecione & quotPostGIS Spatial Database & quot no menu suspenso e insira um ID do DataStore. O ID pode ser quase qualquer coisa, mas é bom escolher algo bastante descritivo. Após clicar em Novo, você obterá uma tela como a da Figura 8-6. Colocar o mouse sobre o texto irá abrir notas de ajuda descrevendo o que são os campos. Enabled deve ser definido como True, escolha um namespace da lista (você pode adicionar seus próprios namespaces com o menu Namespace) e escreva uma breve descrição do DataStore. Os próximos campos são os parâmetros de conexão para seu banco de dados PostGIS. Se estiver sendo executado na mesma máquina, o Host deve ser & quotlocalhost & quot; caso contrário, deve ser o endereço IP do computador onde o PostGIS está sendo executado. A porta PostGIS padrão é 5432 e Database será o nome do banco de dados que você configurou. Depois de preencher seus valores, clique em Enviar. Em seguida, aplique as alterações para que os FeatureTypes estejam disponíveis.

Ao executar o PostgreSQL, certifique-se de iniciá-lo com o -eu opção, que permite aceitar conexões externas, como do GeoServer.

Figura 8-6. Um armazenamento de dados PostGIS no GeoServer

Em seguida, vá para a página FeatureType e clique em Novo. As tabelas de seu banco de dados PostGIS devem aparecer anexadas ao ID do DataStore que você forneceu ao seu armazenamento recém-criado. Selecione um que você gostaria de disponibilizar para a web geoespacial.

Depois de clicar em Novo, você será levado à tela FeatureTypeEditor. Essas informações são principalmente para o documento de recursos, são as meta-informações sobre o FeatureType. O SRS é provavelmente o campo mais importante; deve ser um número EPSG - um número de série atribuído pelo European Petroleum Survey Group para a projeção dos seus dados. Você também pode editar as informações do esquema para ocultar certos atributos e tornar outros obrigatórios. GeoServer gera as respostas DescribeFeatureType automaticamente, dependendo de como você configura esses atributos. Depois de editar seu recurso, envie-o e clique em Aplicar. Seu recurso deve, então, aparecer nos documentos de Capacidades para WMS e WFS, e você pode até mesmo consultá-lo.

Em caso de dúvida, você pode usar um SRS de EPSG: 4326, que corresponde às coordenadas geográficas (ou seja, latitude / longitude) referenciadas ao esferóide WGS84 e datum. Se você precisar usar um sistema de referência espacial diferente, tente examinar o conteúdo do spatial_ref_sys tabela em seu banco de dados PostGIS para ver quais outros códigos EPSG são padrão.

8.4.4. Visualizando Seus Dados com GeoServer & # 39s WMS

Embora o GeoServer tenha começado focando na especificação WFS, logo ficou óbvio que um WMS integrado seria um recurso muito útil. Os usuários podem simplesmente configurar seus FeatureTypes em um lugar e disponibilizá-los para WMS e WFS. Depois de configurar seu FeatureType, você pode emitir um WMS GetMap pedido como o seguinte:

O bbox parâmetro especifica uma caixa delimitadora que especifica a área dos dados a serem visualizados. Para descobrir o tamanho do bbox a ser emitido, a coisa mais fácil a fazer é emitir uma solicitação WFS no mesmo FeatureType. Então, se você nomeou seu FeatureType nas: blorg, então você executaria o seguinte GetFeature solicitação:

Isso retornará um documento GML de um FeatureCollection contendo todos os seus recursos. Cada FeatureCollection deve ter um boundedBy elemento, e do gml: Box contido nele, é fácil descobrir o bbox parâmetro. A parte superior da resposta será semelhante a:

A primeira coordenada (o canto inferior esquerdo da caixa) e a terceira coordenada (o canto superior direito da caixa) constituem o WMS apropriado bbox parâmetro. Portanto, para a solicitação anterior, a solicitação WMS será semelhante a:


1 resposta 1

Eu encontrei uma solução razoável para esse problema. Em vez de misturar a configuração principal do js-host com várias configurações de proxy reverso, separei os dois. js-host agora é um site independente que não sabe nada sobre os outros serviços. A chave para essa abordagem é adicionar um proxy reverso para '/' ao site principal do js-host abaixo de todas as outras configurações do proxy reverso.

Mesmo que ainda haja muitas configurações de proxy reverso em um arquivo de configuração, o arquivo de configuração é apenas para configuração de proxy reverso. Esta é a aparência:

/ etc / apache2 / sites-available / js-host

Você deve fornecer ao host virtual que atua como seu servidor proxy o nome do host que deseja que seus usuários usem. Além disso, descobri uma maneira mais concisa de configurar um proxy reverso usando RewriteRule.

O site principal agora tem ServerName js-host-core.example.com. Todas as outras configurações são iguais.

A razão pela qual esta solução é boa é que posso adicionar ou remover linhas RewriteRule facilmente com um script e, quando reinicio esta instância do apache, ele reinicia muito rapidamente e meu site principal continua ativo e funcionando, então não preciso me preocupar com o tempo de ciclo, perda do cache ou quaisquer outros efeitos negativos relacionados ao ciclo do site.


Definição de fontes¶

A seção & # 8220fonts & # 8221 é opcional. Ele contém o caminho das fontes que você deseja usar. As entradas podem apontar para arquivos (TTF, OTF, TTC, AFM, PFM) ou diretórios. Não aponte para diretórios que contenham muitos arquivos, pois isso tornará o tempo de início mais lento. Por padrão, o PDF fornece acesso às seguintes fontes (somente codificação Cp1252):

  • Courrier (-Bold, -Oblique, -BoldOblique)
  • Helvetica (-Bold, -Oblique, -BoldOblique)
  • Vezes (-Roman, -Bold, -Oblique, -BoldOblique)
  • Símbolo
  • ZapfDingbats

Exemplo 1

O uso geral do método WebSecurity ignoring () omite o Spring Security e nenhum dos recursos do Spring Security estará disponível. WebSecurity é baseado em HttpSecurity
(em uma configuração XML, você pode escrever isto: & lthttp pattern = "/ resources / **" security = "none" / & gt).

WebSecurity no exemplo acima permite que Spring ignore / resources / ** e / publics / **. Portanto, o .antMatchers ("/ publics / **"). HasRole ("USER") em HttpSecurity não é considerado.

Isso omitirá totalmente o padrão de solicitação da cadeia de filtros de segurança. Observe que qualquer coisa que corresponda a esse caminho não terá serviços de autenticação ou autorização aplicados e estará acessível gratuitamente.


Assista o vídeo: How to display YOUR GIS data in a leaflet web map Pt 1 - Points (Outubro 2021).