Configuração de subdiretórios Apache2

1

Atualmente estou configurando um site no Ubuntu 18.04 com o Apache2.4.

O que estou tentando fazer é restringir o acesso HTTP (S) aos meus subdomínios a determinados IPs. Esses subdomínios são usados para testes de desenvolvimento ou são ferramentas administrativas (phpMyAdmin, etc.), então eu definitivamente não quero que esses subdomínios sejam públicos.
Eu também quero que o domínio.com seja público.

Qual é o estado atual do site:

  • domain.com é acessível publicamente
  • domain.com está exibindo / var / www / html / content
  • sub1.domain.com é acessível publicamente
  • sub1.domain.com está exibindo / var / www / html / sub1 conteúdo
  • sub2.domain.com é acessível publicamente
  • sub2.domain.com está exibindo / var / www / html / sub2 content

Qual é o resultado esperado:

  • domain.com é acessível publicamente
  • sub1.domain.com está restrito a vários IPs
  • sub2.domain.com está restrito a vários IPs

Esta é a minha configuração até agora:

Entradas de DNS:

Name   Type   TTL  Target
        A     300  ServerIP
sub1   CNAME  300  domain.com
sub2   CNAME  300  domain.com
www    CNAME  300  domain.com

apache2.conf:

[...]
<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

<Directory /var/www/html/sub1>
    AllowOverride All
    Require all denied
</Directory>
[...]

/etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ServerName domain.com
    ServerAlias domain.com

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =domain.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

/etc/apache2/sites-available/sub1.domain.com.conf

<VirtualHost *:80>
    ServerName sub1.domain.com
    DocumentRoot /var/www/html/sub1
    <Directory /var/www/html/sub1>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all denied
    </Directory>

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =sub1.domain.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Links simbólicos são feitos de /etc/apache2/sites-available/sub*.domain.com.conf a /etc/apache2/sites-enabled

Algo que eu também não entendo é que, se eu tentar adicionar um arquivo .htaccess em /var/www/html/php56 , ele não será levado em consideração, apesar do AllowOverride All

Outra coisa que estou tentando fazer é redirecionar as solicitações domain.com/sub1 para sub1.domain.com em vez de lançar um erro 403, mas sem um arquivo .htaccess, então minimizo o número de arquivos de configuração. / p>

Observação: para fins de teste, eu intencionalmente defino Require all denied em vez de Require ip x.x.x.x

O que estou fazendo de errado?

Se eu esqueci de fornecer qualquer informação necessária, por favor me avise.

Obrigado pela sua ajuda

ATUALIZAÇÃO:

Graças ao conselho de Tom, descobri o que estava errado. Em meu /etc/apache2/sites-available/sub1.domain.com.conf , tive um redirecionamento de HTTP para HTTPS. Na verdade, o Let's Encrypt criou um arquivo /etc/apache2/sites-available/sub1.domain.com-le-ssl.conf (durante a configuração do certificado, optei por forçar o redirecionamento HTTPS) e, nesse arquivo, havia Require all granted , esse arquivo estava sobrescrevendo meu arquivo sub1.domain.com.conf .

Por fim, mudei a configuração de meus diretórios de acordo com a resposta de Tom - muito mais claro, obrigado!
Ele também resolveu minha questão de redirecionamento, já que agora minha pasta raiz para domain.com é /var/www/domain.com/www

    
por Amaury 26.11.2018 / 17:29

1 resposta

1

Eu não faria do diretório raiz do subdomínio uma subpasta do domínio raiz. Em vez de:

/var/www/html/
    - sub1/
    - sub2/
    - sub3/

Eu faria isso assim:

/var/www/domain.com/
    - www/ (the root)
    - sub1/
    - sub2/
    - sub3/

Isso torna muito mais fácil limitar o acesso aos arquivos. Em sua configuração atual, talvez o acesso seja limitado por VirtualHost , mas os mesmos dados podem ser acessados pelo domínio raiz: http://www.example.com/sub1/data .

    
por 26.11.2018 / 17:34