Configurando hosts virtuais do Apache em um arquivo extra

1

Eu tenho acesso a uma máquina rodando linux. O Apache2 está instalado nele. Eu preciso adicionar 3 hosts virtuais.

Em /etc/apache2/sites-available , há um conjunto de aproximadamente 15 arquivos exibidos com ls -la .

  1. Foi-me dito que o Apache2 leria esses arquivos um por um em ordem alfabética para criar hosts virtuais, está correto?

  2. Como o Linux dá preferência em caso de conflito? Último arquivo de leitura ganha? O primeiro arquivo de leitura vence?

  3. Se eu quiser configurar meus 3 hosts virtuais (que não estão em conflito com os hosts virtuais existentes), é apenas uma questão de criar um arquivo extra com eles nesse diretório?

P.S .: confundi available com enabled . Deve-se ler /etc/apache2/enabled . Desculpe.

    
por Jérôme Verstrynge 23.12.2015 / 13:28

2 respostas

3

Você pode querer ler a documentação do Apache2.

Foi-me dito que o Apache2 leria esses arquivos um por um em ordem alfabética para criar hosts virtuais, está correto?

Os hosts virtuais não são lidos em /etc/apache2/sites-available , mas em /etc/apache2/sites-enabled . Dito isso, o apache2 usa a libc e, de acordo com o gnu.org , A ordem em que os arquivos aparecem em um diretório tende a ser bastante aleatória .

editar:

Você pode querer ler a resposta do @nwildner também, o que é mais preciso do que eu.

Como o Linux dá preferência em caso de conflito? Último arquivo de leitura ganha? O primeiro arquivo de leitura vence?

Realmente não tenho certeza, mas se houver um conflito, geralmente ele exibirá uma mensagem de aviso e seu serviço httpd não será (re) carregado.

Se eu quiser configurar meus 3 hosts virtuais (que não estão em conflito com os hosts virtuais existentes), é apenas uma questão de criar um arquivo extra com eles nesse diretório?

Sim, e depois de adicionar seus arquivos extras, execute estes comandos:

sudo a2ensite my_site1.conf my_site2.conf my_site3.conf
sudo service apache2 reload

Ele pesquisará em /etc/apache2/sites-available para my_site1.conf , my_site2.conf e my_site3.conf .

    
por 23.12.2015 / 13:53
3

Responda sua pergunta depende muito da distribuição que você está usando. Eu assumirei que é baseado no Debian, já que eles usam essa abordagem de sites-available e sites-enabled dirs e o /etc/apache2 dir de configuração em vez de /etc/httpd como as distribuições baseadas em RPM.

Resposta 1. Isso está correto. Você pode ver a diretiva Include no seu arquivo apache2.conf :

host:/etc/apache2# grep sites apache2.conf
Include /etc/apache2/sites-enabled/

Veja a documentação sobre a diretiva de inclusão do Apache:

... Shell-style (fnmatch()) wildcard characters can be used in the filename or directory parts of the path to include several files at once, in alphabetical order. ...

Resposta 2. Não tenho certeza do que acontecerá. Eu tenho duplicado em purpouse um VirtualHost no meu servidor Apache e ele não reclamou sobre isso. Não tenho certeza se a primeira ou a última configuração foi definida como válida.

Edit1 : Parece que o CentOS Apache usa a primeira entrada do VirtualHost configurado, quando eu coloco 2 do mesmo VirtualHost dentro de /etc/httpd/conf.d/virtual_host.conf mudando apenas o DocumentRoot . Exemplo de configuração:

<VirtualHost ip.address.A:80>
  DocumentRoot /var/www/sites/wpad
  ServerName wpad.xxx.net
  ServerAlias wpad.xxx.net wpad
</VirtualHost>

<VirtualHost ip.address.A:80>
  DocumentRoot /var/www/sites/wpad2
  ServerName wpad.xxx.net
  ServerAlias wpad.xxx.net wpad
</VirtualHost>

Quando eu navego no modo Navegador Incognito / Privado, recebo o arquivo wpad.xxx.net/wpad.dat fornecido pelo primeiro virtualhost . Nenhum erro encontrado nos logs do Apache.

Answer 3. Na distribuição baseada em Debian você tem que criar o arquivo dentro de sites-available e criar um link simbólico para sites-enabled

cd /etc/apache2/sites-available/
ln -s your-site ../sites-enabled/

Ou você pode usar a2ensite como explicado por @ Sw0ut

    
por 23.12.2015 / 14:04