Se após tentar reproduzir os exemplos do Geoserver sem sucesso, e acessar o FAQ do Openlayers sobre ProxyHost, te deixou mais confuso! Bem vindo ao clube. Após 4 dias de tentativas e erros o membro da comunidade GeoServer-BR, Raphael Saldanha conseguiu usar o GetFeatureInfo e compartilhou conosco a solução que reproduzo abaixo.

Seguem as modificações e configurações necessárias de modo que seja possível utilizar o ProxyHost no OpenLayers.

Para realizar tais procedimentos você vai precisar ter ao menos o Apache e o Geoserver instalados. Abaixo seguem as configurações do sistema em que foram realizados os testes:

– Vista Bussiness
– Geoserver 1.7.2
– Apache, PHP e Postgres instalados via stack do BitNami (http://bitnami.org/stack/wappstack)
– PostGIS instalado separadamente

Antes de começar os procedimentos recomendo interromper o Apache e o Geoserver.

1o Passo: O proxy.cgi

1.1. Abra o FAQ do Openlayers, e salve o proxy.cgi recomendado (http://trac.openlayers.org/browser/trunk/openlayers/examples/proxy.cgi). Não se esqueça de baixar o mesmo em formato bruto (raw format).

1.2. Salve-o na pasta cgi-bin do Apache, algo como “C:\…\Apache\cgi-bin\

O proxy.cgi fornecido está escrito em linguagem Python e está otimizado para Linux. Desta forma, primeiro é necessário instalar o Python na máquina para que ele possa funcionar (http://www.python.org/). Anote a pasta que ele foi instalado, provavelmente no C:, algo como “C:\Python25”.

1.3. Agora, abra o proxy.cgi, que está salvo na pasta cgi-bin do Apache. Você vai ver na primeira linha o seguinte: #!/usr/bin/env python
Este é o caminho do Python, típico nas máquinas com Linux. Se você usa Windows, coloque exatamente a pasta onde o Python foi instalado. Deve ficar assim: #!c:/python25/python.exe

Muito cuidado com as barras ao colar e copiar os endereços, / é diferente de \

Mais abaixo, você vai encontrar uma definição de AllowedHosts, inclua o seu domínio, mesmo que seja o localhost. Por exemplo:

allowedHosts = [‘www.openlayers.org’, ‘openlayers.org’,
‘labs.metacarta.com’, ‘world.freemap.in’,
‘prototype.openmnnd.org’, ‘geo.openplans.org’,
‘sigma.openplans.org’,
‘www.openstreetmap.org’,
‘localhost:8080’,
‘localhost’,
‘127.0.0.1’,
‘192.168.0.81’]

Pronto, o proxy.cgi está pronto. Não se esqueça de salvá-lo.

2o Passo: O httpd.conf

2.1 Precisamos fazer com que o Apache execute corretamente o proxy.cgi. Primeiro, faça uma cópia do arquivo httpd.conf, por segurança, depois abra-o e vá até a seguinte parte:


Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all

2.2 Altere para que fique da seguinte forma:


Options FollowSymLinks +ExecCGI
AllowOverride None
Order deny,allow
Deny from all

2.3 Agora, vá até o comentário:

#
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the target directory are treated as applications and
# run by the server when requested rather than as documents sent to the
# client. The same rules about trailing “/” apply to ScriptAlias
# directives as to Alias.
#

2.4 Adicione ou modifique a linha imediatamente abaixo para que fique desta forma:

ScriptAlias /cgi-bin/ “C:/Program Files/BitNami WAPPStack/apache2/cgi-bin/”

2.5 Onde está “C:/Program Files/BitNami WAPPStack/apache2/cgi-bin”, coloque o caminho até a pasta cgi-bin do seu Apache.

2.6 Procure o seguinte comentário:

#
# “C:/Program Files/BitNami WAPPStack/apache2/cgi-bin” should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#

2.7 Altere para que fique como o código abaixo:


Options FollowSymLinks +ExecCGI
AllowOverride None
Options None
Order allow,deny
Allow from all

2.8 Onde está “C:/Program Files/BitNami WAPPStack/apache2/cgi-bin”, coloque o caminho até a pasta cgi-bin do seu Apache.

#
# AddHandler allows you to map certain file extensions to “handlers”:
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add “ExecCGI” to the “Options” directive.)
#

2.9 No trecho de código acima adicione o seguinte código:

AddHandler cgi-script .cgi

2.10 Salve o arquivo e feche-o. Na sua aplicação web, defina o ProxyHost:

OpenLayers.ProxyHost=”/cgi-bin/proxy.cgi/?url=”;

Agora, reincie o Apache e teste.