Pasta Public do GLPI: Configuração Segura para Produção

Como configurar o DocumentRoot do GLPI na pasta public com Apache e Nginx, por que é obrigatório e o que acontece se não for configurado.

Se o DocumentRoot do seu GLPI não aponta para a pasta public, os seus dados estão em risco. Esta é a configuração de segurança mais importante do GLPI em produção.

Por que existe a pasta public

O GLPI 10+ separou os ficheiros web (acessíveis pelo browser) dos ficheiros internos (config, dados, lógica). A pasta public contém apenas:

  • index.php (router principal)
  • .htaccess (regras Apache)
  • Ficheiros estáticos (CSS, JS, imagens)

Todo o restante (configuração de base de dados, classes PHP, dados sensíveis) fica fora do webroot.

Apache

<VirtualHost *:443>
    ServerName glpi.suaempresa.com
    DocumentRoot /var/www/glpi/public

    <Directory /var/www/glpi/public>
        AllowOverride All
        Require all granted
    </Directory>

    SSLEngine On
    SSLCertificateFile /etc/ssl/certs/glpi.crt
    SSLCertificateKeyFile /etc/ssl/private/glpi.key
</VirtualHost>

Nginx

server {
    listen 443 ssl http2;
    server_name glpi.suaempresa.com;
    root /var/www/glpi/public;
    index index.php;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Verificação

Após configurar, teste acedendo a URLs que NÃO devem funcionar:

  • /config/config_db.php → deve devolver 404
  • /src/ → deve devolver 404
  • /vendor/ → deve devolver 404
  • /install/install.php → deve devolver 404 (após remoção)

Se alguma devolver conteúdo, o DocumentRoot está errado.

Perguntas Frequentes

A partir do GLPI 10, o servidor web deve apontar para /var/www/glpi/public (não /var/www/glpi). Isto expõe apenas os ficheiros necessários ao browser, protegendo o código-fonte e as configurações.

Ficheiros de configuração, base de dados local e código PHP ficam potencialmente acessíveis via URL. Isto é uma vulnerabilidade de segurança crítica.

Aceda a https://seuglpi.com/config/config_db.php no browser. Se mostrar erro 404 ou 403, está correto. Se mostrar conteúdo PHP ou download, está errado.

Precisa de ajuda?