> For the complete documentation index, see [llms.txt](https://lab-mackleaps.gitbook.io/residencia-de-software-macklaeps-upm-fci/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lab-mackleaps.gitbook.io/residencia-de-software-macklaeps-upm-fci/recursos-educacionais/nginx/estrutura-de-pastas.md).

# Estrutura de pastas

Ao trabalhar com o Nginx, é fundamental compreender a estrutura de suas pastas principais e como elas se encaixam na configuração e operação do servidor. O diretório `/var/www` é comumente utilizado para armazenar os arquivos de conteúdo web, como páginas HTML, scripts JavaScript e folhas de estilo CSS. Esta é a localização padrão onde o Nginx espera encontrar os arquivos que serão servidos aos visitantes do seu site, permitindo uma organização clara e acessível dos recursos web. Por outro lado, o diretório `/etc/nginx` é o coração da configuração do Nginx, contendo todos os arquivos de configuração necessários para controlar o comportamento do servidor. Isso inclui o arquivo de configuração principal (`nginx.conf`) e diretórios para configurações específicas de sites, conhecidos como "server blocks" ou "virtual hosts", facilitando a gestão de múltiplos sites em um único servidor Nginx. Adicionalmente, o Nginx armazena seus logs em `/var/log/nginx`, onde são registradas informações cruciais sobre o acesso e erros do servidor, proporcionando insights valiosos para a resolução de problemas e otimização de desempenho. Esta estrutura organizada permite uma gestão eficaz e uma manutenção simplificada do servidor web Nginx.

Arvore de diretórios configuração Nginx em `/etc/nginx`:

```bash
/etc/nginx/
├── nginx.conf             # Arquivo de configuração principal do Nginx
├── mime.types             # Define tipos de mídia (MIME types) manipulados pelo Nginx
├── conf.d/                # Diretório para arquivos de configuração de sites específicos
│   └── *.conf             # Arquivos de configuração que são automaticamente incluídos no nginx.conf
├── sites-available/       # Armazena as configurações de todos os sites (não necessariamente ativos)
│   └── default            # Exemplo de arquivo de configuração para um site específico
├── sites-enabled/         # Contém links simbólicos para os sites ativamente servidos pelo Nginx
│   └── default.           # Link simbólico para a configuração em sites-available
├── snippets/              # Pequenos fragmentos de configuração que podem ser incluídos em outros arquivos
└── modules-available/     # Diretório para módulos dinâmicos disponíveis (dependendo da instalação)
    └── *.conf             # Arquivos de configuração dos módulos

```

* **nginx.conf**: Este é o arquivo de configuração principal do Nginx, onde as configurações globais são definidas. Ele também pode incluir instruções para ler outros arquivos de configuração de diretórios como **`conf.d`** e **`sites-enabled`**.
* **mime.types**: Contém definições de tipos de MIME que ajudam o Nginx a entender como tratar diferentes tipos de conteúdo.
* **conf.d/**: Este diretório é frequentemente utilizado para armazenar configurações específicas do servidor ou aplicação, que são automaticamente carregadas pelo **`nginx.conf`**. A convenção é usar a extensão **`.conf`** para esses arquivos.
* **sites-available/** e **sites-enabled/**: **`sites-available`** contém arquivos de configuração para todos os possíveis sites hospedados pelo servidor, enquanto **`sites-enabled`** contém links simbólicos para os arquivos de configuração dos sites que devem ser ativamente servidos pelo Nginx. Esta abordagem permite uma fácil ativação e desativação de sites.
* **snippets/**: Este diretório é útil para armazenar trechos de configuração que podem ser reutilizados em vários arquivos de configuração para evitar duplicação.
* **modules-available/**: Em algumas instalações do Nginx, este diretório contém módulos dinâmicos que podem ser ativados ou desativados conforme necessário. Os módulos estendem a funcionalidade do Nginx, mas seu uso e disponibilidade podem variar dependendo de como o Nginx foi compilado e instalado.

O diretório **`/var/www`** é tradicionalmente usado para armazenar os arquivos de conteúdo web, como páginas HTML, scripts PHP, folhas de estilo CSS e imagens. A estrutura dentro deste diretório pode variar dependendo de quantos sites estão sendo hospedados e como você deseja organizá-los. Uma estrutura comum é separar cada site em seu próprio subdiretório, nomeado após o domínio do site:

```bash
/var/www/
├── html/                  # Diretório padrão para conteúdo web no Nginx
│   ├── index.html        # Página inicial padrão do Nginx
│   └── ...               # Outros arquivos e diretórios para o site padrão
├── example.com/           # Diretório para um site específico
│   ├── public_html/      # Raiz do documento onde os arquivos acessíveis ao público são armazenados
│   │   ├── index.html    # Página inicial do site
│   │   └── ...           # Outros arquivos e diretórios do site
│   └── logs/             # Diretório para logs específicos do site (opcional e dependente da configuração)
└── another-site.com/     # Outro diretório para um site diferente, com estrutura similar

```

* **html/**: Este é o diretório padrão usado pelo Nginx para servir conteúdo se nenhuma outra configuração for especificada. Contém a página inicial padrão do Nginx e outros arquivos relacionados ao site padrão.
* [**example.com/**](http://example.com/), [**another-site.com/**](http://another-site.com/): Diretórios nomeados após os domínios dos sites, contendo os arquivos específicos de cada site. Dentro de cada um desses diretórios, **`public_html/`** é comumente usado como a raiz do documento, onde todos os arquivos acessíveis publicamente são armazenados.

Os logs do Nginx são essenciais para o diagnóstico de problemas, monitoramento de acessos e análise de segurança. O Nginx normalmente armazena seus arquivos de log em **`/var/log/nginx`**, divididos entre logs de acesso e de erro:

```bash
/var/log/nginx/
├── access.log            # Registra todas as solicitações ao servidor
├── error.log             # Registra erros de processamento do servidor
└── example.com/          # Diretórios para logs específicos de sites, se configurado dessa forma
    ├── access.log        # Logs de acesso específicos do site example.com
    └── error.log         # Logs de erro específicos do site example.com

```

* **access.log**: Este arquivo loga todas as solicitações feitas ao servidor Nginx. Cada linha no arquivo representa uma solicitação e inclui detalhes como o IP do cliente, a data e hora da solicitação, o método HTTP, a URL solicitada, o código de status HTTP retornado e o tamanho da resposta.
* **error.log**: Este arquivo contém mensagens de erro geradas pelo Nginx. Isso inclui erros de configuração, falhas ao processar solicitações e outros problemas do servidor. As mensagens neste log são cruciais para a solução de problemas.
