Instalação avançada da configuração

Lizmap através de um proxy/reverse proxy

Por vezes, alguns URLs no Lizmap podem não ser o que se espera. Por exemplo, existe a utilização do protocolo «http» em vez do protocolo «https». Ou podem conter uma porta indesejada (http://mydomain:5468/ em vez de http://mydomain/). Ou o URL pode não conter o nome real do domínio.

Na maioria dos casos, isso acontece porque o servidor web ou PHP-fpm está por trás de um servidor web principal (que funciona como um proxy ou proxy reverso), e então os parâmetros de ambiente fornecidos pelo PHP ou pelo servidor web de backend não estão corretos.

É possível fornecer informação ao Lizmap para forçar o protocolo HTTPS, utilizar o domínio correto ou utilizar a porta adequada.

No ficheiro localconfig.ini.php, é possível utilizar os seguintes parâmetros de configuração.

Para forçar a utilização da porta 80 (true) ou da 8080, por exemplo, com o protocolo http:

forceHTTPPort = true
# or
forceHTTPPort = 8080

Para forçar a utilização da porta 443 (true) ou da 8443, por exemplo, com o protocolo https:

forceHTTPSPort = true
# or
forceHTTPSPort = 8443

Para especificar o nome de domínio da aplicação Lizmap, se o Lizmap não o conseguir descobrir:

domainName = www.example.com

Se o caminho do URL do servidor web de backend não corresponde ao caminho da URL do servidor web frontal (ex: o proxy redireciona urls como http://example.com/index.php para o servidor web http://backend.example.com/foo/bar/index.php), deverá ser indicado o caminho do URL «público» (basePath) e o caminho do URL de backend (backendBasePath):

[urlengine]
basePath= /
backendBasePath = /foo/bar

Se o proxy reverso redirecionar os pedidos HTTPS para HTTP, deverá ser desativada a verificação HTTPS:

[urlengine]
checkHttpsOnParsing = off

A partir do Lizmap 3.0.18 e 3.1.6, é possível forçar todo o URL gerado através do protocolo HTTPS, quando o Lizmap desconhece qual é o protocolo utilizado para pedidos ao proxy reverso:

[urlengine]
checkHttpsOnParsing = off
forceProxyProtocol = https

Usando as variáveis de ambiente

Se algumas credenciais ou parâmetros estiverem disponíveis em variáveis de ambiente, é possível indicar a utilização dos mesmos nos ficheiros localconfig.ini.php ou profiles.ini.php. É necessário que as variáveis de ambiente estejam disponíveis para o processo PHP-FPM ou para o processo APACHE/NGINX.

Dentro desses ficheiros, utilizar a sintaxe ${VARIABLE_NAME}.

Por exemplo, para indicar as credenciais do PostgreSQL guardadas nessas variáveis:

LIZMAP_PGSQL_HOST=localhost
LIZMAP_PGSQL_DATABASE=lizmap
LIZMAP_PGSQL_LOGIN=admin
LIZMAP_PGSQL_PASSWORD="Sup3Rp4ssw0rd!"

É necessário escrever esta configuração no ficheiro profiles.ini.php:

[jdb:jauth]
driver="pgsql"
database=${LIZMAP_PGSQL_DATABASE}
host=${LIZMAP_PGSQL_HOST}
user=${LIZMAP_PGSQL_LOGIN}
password=${LIZMAP_PGSQL_PASSWORD}