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
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Criar os diretórios raiz para ambos os domínios:
mkdir -p /var/www/example.com/ mkdir -p /var/www/example.net/
# mkdir -p /var/www/example.com/ # mkdir -p /var/www/example.net/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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/
# 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/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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/
# mkdir /var/log/nginx/example.com/ # mkdir /var/log/nginx/example.net/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Reinicie o serviço
nginx
:systemctl restart nginx
# systemctl restart nginx
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
# 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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
.