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