Como configurar virtual hosts (server blocks) no Nginx

Deixe sua contribuição, assim vamos facilitar a manutenção e configuração para outros membros que estão iniciando.
Regras do fórum Leia as Regras Gerais do Manjaro Brasil em "Normatividade" e pesquise antes de postar.

Como configurar virtual hosts (server blocks) no Nginx

Mensagempor coyoterj » 06 Set 2016, 16:19  •  MS 1

Segue mais uma dica: como configurar virtual hosts (server blocks) no Nginx em servidor local. Espero que seja útil.

Para quem não tem o LEMP instalado, postei um roteiro aqui no forum

/*****
Notas:
- considerando pasta root do servidor: /srv/http
- considerando user: http
- exemplo usado como vhosts: seudominio1.com e seudominio2.com
- faça sempre backup antes de modificar qualquer arquivo
*****/

Passo 1 - Configurar pastas do servidor (lembrando que estou usando path diferente do padrão)
- criar os diretórios
Código: Selecionar todos
sudo mkdir -p /srv/http/seudominio1.com/html
sudo mkdir -p /srv/http/seudominio2.com/html

- setar o proprietário
Código: Selecionar todos
sudo chown -R $USER:$USER /srv/http/seudominio1.com/html
sudo chown -R $USER:$USER /srv/http/seudominio2.com/html

- setar permissões da pasta principal
Código: Selecionar todos
sudo chmod -R 755 /srv/http


Passo 2 - Criar páginas simples para teste
- Primeiro domínio
Código: Selecionar todos
nano /srv/http/seudominio1.com/html/index.html

- colocar algo simples como exemplo, salvar e fechar
Código: Selecionar todos
<html>
    <head>
        <title>Este é o primeiro domínio</title>
    </head>
    <body>
        <h1>Domínio 1 server block ok!</h1>
    </body>
</html>

- copiar esse arquivo e repetir o processo
Código: Selecionar todos
cp /srv/http/seudominio1.com/html/index.html /srv/http/seudominio2.com/html/

- abrir o arquivo index.html do domínio 2
Código: Selecionar todos
nano /srv/http/seudominio2.com/html/index.html

- editar, salvar e fechar
Código: Selecionar todos
<html>
    <head>
        <title>Este é o segundo domínio</title>
    </head>
    <body>
        <h1>Domínio 2 server block ok!</h1>
    </body>
</html>


Passo 3 - Criar server blocks (virtual host) para cada domínio
- Para facilitar futuras adições de vhosts, faço da "maneira Apache"
Código: Selecionar todos
sudo mkdir /etc/nginx/servers-available
sudo mkdir /etc/nginx/servers-enabled

- Criar o arquivo com o primeiro virtual host (server block) dentro da pasta "servers-available"
Código: Selecionar todos
sudo nano /etc/nginx/servers-available/seudominio1

- Adicionar o código abaixo:
Código: Selecionar todos
server {
        listen 80;

        root /srv/http/seudominio1.com/html;
        index index.html index.html index.htm;

        server_name seudominio1.com;

        location / {
                try_files $uri $uri/ /index.html?$query_string;
        }

        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /srv/http;
        }

        location ~ \.php$ {
                try_files $uri /index.html =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass   unix:/run/php-fpm/php-fpm.sock;
                fastcgi_index  index.html;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
        }
}

- Salvar e fechar
- Criar o segundo virtual host (server block) dentro da pasta "servers-available"
Código: Selecionar todos
sudo cp /etc/nginx/servers-available/seudominio1 /etc/nginx/servers-available/seudominio2

- Modificar no código apenas o nome do domínio e manter o restante igual:
Código: Selecionar todos
server {
        listen 80;

        root /srv/http/seudominio2.com/html;
        index index.html index.html index.htm;

        server_name seudominio2.com;
        (...)
}


Passo 4 - Finalizar configurações Nginx
- adicionar a seguinte linha no final do bloco "http" do arquivo /etc/nginx/nginx.conf
Código: Selecionar todos
include servers-enabled/*;

- Exemplo de uma configuração básica
Código: Selecionar todos
user http;
worker_processes  auto;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #access_log  /srv/http/logs/access.log;
    #error_log   /srv/http/logs/error.log;

    sendfile        on;
    keepalive_timeout  65;

    include servers-enabled/*;
}


Passo 5 - Modificar o arquivo /etc/hosts
Código: Selecionar todos
- sudo nano /etc/hosts

- adicionar os nomes dos domínios criados, salvar e fechar
Código: Selecionar todos
127.0.0.1   localhost
(. . .)
127.0.0.2   seudominio1.com
127.0.0.3   seudominio2.com


Passo 6 - Habilitar os server blocks (virtual host) e reiniciar o Ngnix
- criar links simbólicos
Código: Selecionar todos
sudo ln -s /etc/nginx/servers-available/seudominio1 /etc/nginx/servers-enabled/seudominio1
sudo ln -s /etc/nginx/servers-available/seudominio2 /etc/nginx/servers-enabled/seudominio2

- reiniciar Nginx
Código: Selecionar todos
sudo systemctl restart nginx


Passo 7 - Testar
- Visitar os sites criados: http://seudominio1.com e http://seudominio2.com para testar se tudo foi configurado corretamente.

Espereo ter ajudado ;)
Marco Telles
Dell Inspiron 5447 Intel Core i5-4210U CPU @ 1.70GHz × 4 | HD sata 1 Tb | 4 Gb ram
Pier de Ipanema | Facebook Pier de Ipanema
Avatar do usuário
coyoterj
Aprendiz

 
Mensagens: 17
Registro: 04 Set 2016, 08:46
Localização: Cabo Frio
Agradeceu: 8 vez(es)
Agradecido: 2 vez(es)
Distro utilizada: Manjaro
Versão: 16.08
Ambiente: xfce
Repositório: Stable
Habilidade: Novice

Tópicos Semelhantes Estatísticas Última mensagem

Não é possível configurar segundo monitor

por Francislei » 13 Set 2020, 11:30

Respostas: 0

Exibições: 273

13 Set 2020, 11:30

por Francislei Ver última mensagem

Voltar para Dicas, Truques e Astúcias



Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes

^ Voltar ao Topo