2.2. Configuração do NGINX como um servidor web que fornece diferentes conteúdos para diferentes domínios
Por padrão, NGINX atua como um servidor web que fornece o mesmo conteúdo aos clientes para todos os nomes de domínio associados com os endereços IP do servidor. Este procedimento explica como configurar o NGINX:
-
Para atender aos pedidos ao domínio
example.com
com conteúdo do diretório/var/www/example.com/
-
Para atender aos pedidos ao domínio
example.net
com conteúdo do diretório/var/www/example.net/
-
Para atender todas as outras solicitações, por exemplo, para o endereço IP do servidor ou para outros domínios associados com o endereço IP do servidor, com conteúdo do diretório
/usr/share/nginx/html/
Pré-requisitos
- O NGINX é instalado como descrito em Seção 2.1, “Instalando e preparando o NGINX”.
Os clientes e o servidor web resolvem o domínio
example.com
eexample.net
para o endereço IP do servidor web.Observe que você deve adicionar manualmente estas entradas ao seu servidor DNS.
Procedimento
Edite o arquivo
/etc/nginx/nginx.conf
:Por padrão, o arquivo
/etc/nginx/nginx.conf
já contém uma configuração "catch-all". Se você eliminou esta parte da configuração, readicione o seguinte blocoserver
ao blocohttp
no arquivo/etc/nginx/nginx.conf
:server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; }
Estas configurações configuram o seguinte:
-
A diretiva
listen
define o endereço IP e as portas que o serviço escuta. Neste caso, NGINX escuta na porta80
tanto em todos os endereços IPv4 como IPv6. O parâmetrodefault_server
indica que o NGINX usa este blocoserver
como padrão para solicitações correspondentes aos endereços IP e portas. -
O parâmetro
server_name
define os nomes dos anfitriões pelos quais este blocoserver
é responsável. O parâmetroserver_name
para_
configura o NGINX para aceitar qualquer nome de host para este blocoserver
. -
A diretiva
root
estabelece o caminho para o conteúdo da web para este blocoserver
.
-
A diretiva
Acrescentar um bloco similar
server
para o domínioexample.com
ao blocohttp
:server { server_name example.com; root /var/www/example.com/; access_log /var/log/nginx/example.com/access.log; error_log /var/log/nginx/example.com/error.log; }
-
A diretiva
access_log
define um arquivo de log de acesso separado para este domínio. -
A diretiva
error_log
define um arquivo de registro de erros separado para este domínio.
-
A diretiva
Acrescentar um bloco similar
server
para o domínioexample.net
ao blocohttp
:server { server_name example.net; root /var/www/example.net/; access_log /var/log/nginx/example.net/access.log; error_log /var/log/nginx/example.net/error.log; }
Criar os diretórios raiz para ambos os domínios:
#
mkdir -p /var/www/example.com/
#mkdir -p /var/www/example.net/
Configurar o contexto
httpd_sys_content_t
em ambos os diretórios raiz:#
semanage fcontext -a -t httpd_sys_content_t "/var/www/example.com(/.*)?"
#restorecon -Rv /var/www/example.com/
#semanage fcontext -a -t httpd_sys_content_t "/var/www/example.net(/.\*)?"
#restorecon -Rv /var/www/example.net/
Estes comandos definem o contexto
httpd_sys_content_t
nos diretórios/var/www/example.com/
e/var/www/example.net/
.Note que você deve instalar o pacote
policycoreutils-python-utils
para executar os comandosrestorecon
.Criar os diretórios de log para os dois domínios:
#
mkdir /var/log/nginx/example.com/
#mkdir /var/log/nginx/example.net/
Reinicie o serviço
nginx
:#
systemctl restart nginx
Etapas de verificação
Criar um arquivo de exemplo diferente em cada raiz de documento do host virtual:
#
echo "Content for example.com" > /var/www/example.com/index.html
#echo "Content for example.net" > /var/www/example.net/index.html
#echo "Catch All content" > /usr/share/nginx/html/index.html
-
Use um navegador e conecte-se a
http://example.com
. O servidor web mostra o conteúdo do exemplo do arquivo/var/www/example.com/index.html
. -
Use um navegador e conecte-se a
http://example.net
. O servidor web mostra o conteúdo do exemplo do arquivo/var/www/example.net/index.html
. -
Use um navegador e conecte-se a
http://IP_address_of_the_server
. O servidor web mostra o conteúdo do exemplo do arquivo/usr/share/nginx/html/index.html
.