Magento 2 mais seguro com o webroot correto
Esse é um requerimento de segurança que normalmente não é revisado, mas é muito importante, webroot nada mais é do que a pasta pública raiz do seu servidor, caso esteja utilizando a pasta errada vou te mostrar como corrigir.

Essa verificação leva apenas 1 minuto e a correção é muito rápida também, isso pode te poupar muita dor de cabeça, além de dar mais liberdade para os desenvolvedores manipularem arquivos na raiz do projeto.
Risco causados
Quando você utiliza a pasta raiz do seu Magento 2 como webroot você acaba expondo mais arquivos e pastas que o necessário, isso por si só já traz mais riscos para a sua loja, fora que tem vários devs que deixam arquivos na raiz da instalação como por exemplo:
- Arquivos executáveis
- Backups
- Link simbólicos
Como verificar
1º passo
Clique com o botão direito na página da sua loja e clique em ver código fonte.

2º passo
Busque por /pub/

Se o resultado for zero, a sua loja está com o webroot correto, parabéns! ?
Como corrigir?
Você primeiro precisa corrigir o apontamento da webroot no seu servidor, caso você utilize uma hospedagem Paas como Cloudways, você consegue alterar facilmente via painel:

NGINX
Se você utiliza NGINX, você pode usar esse exemplo para fazer a modificação em seu servidor.
# /etc/nginx/sites-available/magento
upstream fastcgi_backend {
server unix:/run/php/php7.4-fpm.sock;
}
server {
listen 80;
server_name 192.168.33.10;
set $MAGE_ROOT /var/www/html/magento2ce;
include /var/www/html/magento2ce/nginx.conf.sample;
}
Apache
Se você utiliza Apache, pode fazer dessa maneira.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/magento2ce/pub
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "/var/www/html">
AllowOverride all
</Directory>
</VirtualHost>
Não se esqueça de reiniciar o NGINX ou Apache!
env.php
Verifique se você configurou corretamente seu arquivo app/etc/env.php, ele deve conter esse parâmetro:
'directories' => [
'document_root_is_pub' => true
]
Finalizando
Com tudo configurado você só precisa recompilar a loja, limpar os caches e tentar acessar um das pastas da raiz do Magento como por exemplo a pasta setup, se você receber erro 404 ou erro de permissão, então está tudo certo! ?
