Рубрики
Uncategorized

Série Nginx # 2: CompIlando O Nginx.

Опа !! ЧЕГАМОС EM MAIS UMA PARTE DA SÉRIE SOBRE NGINX. Neste Capítulo, Aprienderes Como Commilar O … Теги от бразильцев, Nginx, DevOps, WebDev.

Опа !! ЧЕГАМОС EM MAIS UMA PARTE DA SÉRIE SOBRE NGINX.

Neste Capítulo, APRANDERMOS COMO AGIBAL O Código Fonte Do Nginx No Ubuntu.

Quais как Vantagens? 😎

  • Flexibilidade;
  • Утилизаção de Módulos de Terceiros;
  • Акпликар, как последние представители Correções de Segurança Mais.

Как сомвантагенс? 😢

  • É Mais Complemo;
  • Темп по требованию МАИС.

Докуациозно к тому, что que prexiso 👷

Precisamos Instalar Algumas Ferramentas Para «Buildar» E Adicionar Supupe Определенные функции Funcoliadades Do Nginx. Сан-элас:

apt update;
apt install -y curl \
    vim \              # Será nosso editor <3
    build-essential \  # Serve para "buildar"
    gcc \              # " para compilar o código escrito em C
    systemd \          # " para gerenciar o serviço do servidor
    libgd-dev \        # " para o uso do módulo de otimização de imagem (será mostrado em outro capítulo)
    libpcre3-dev \     # " para funções do Core e da diretiva Rewrite, Location (RegExp em geral)
    libssl-dev \       # " para utilizar SSL
    libmaxminddb-dev \ # " para usar um módulo de terceiro para GeoIP2
    zlib1g-dev         # " para otimização com GZIP

Ferramentas Instaladas, Vamos Baixar Nosso Nginx. Neste Capítulo, Utilizaremos A Versão 1.21.

Baixá-la é smples, Baasta Executar O Comando Abaixo Em Seu Terminal.

# Baixa e extrai
curl -sSLo- http://nginx.org/download/nginx-1.21.2.tar.gz | \
tar -xzvf -

# Acessa a pasta criada
cd nginx-1.21.2

Ótimo! Baixamos! Агора É Hora de Usar, как Ferramentas Baixadas Para, соучастник o nginx. 🎉🎉.

IREI DEICAR O Código Celluge E DEPOIS EXPAREI CADA UMA DAS Флаги Отказ

# Configura os diretórios e
# quais módulos o Nginx deverá instalar
./configure \
    \
    --prefix=/etc/nginx \
    --sbin-path=/usr/sbin/nginx \
    --conf-path=/etc/nginx/nginx.conf \
    --http-log-path=/var/log/nginx/access.log \
    --error-log-path=/var/log/nginx/error.log \
    --pid-path=/run/nginx.pid \
    --modules-path=/etc/nginx/modules-available \
    \
    --http-client-body-temp-path=/usr/local/nginx/client_body_temp \
    --http-proxy-temp-path=/usr/local/nginx/proxy_temp \
    --http-fastcgi-temp-path=/usr/local/nginx/fastcgi_temp \
    --http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp \
    --http-scgi-temp-path=/usr/local/nginx/scgi_temp \
    \
    --with-debug \
    --with-compat \
    --with-pcre-jit \
    --with-pcre \
    --user=www-data \
    --group=www-data \
    --with-threads \
    \
    --with-http_ssl_module \
    --with-http_stub_status_module \
    --with-http_realip_module \
    --with-http_auth_request_module \
    --with-http_v2_module \
    --with-http_dav_module \
    --with-http_slice_module \
    --with-http_addition_module \
    --with-http_gunzip_module \
    --with-http_gzip_static_module \
    --with-http_image_filter_module=dynamic \
    --with-http_sub_module \
    --with-stream=dynamic \
    --with-stream_ssl_module \
    \
    --without-mail_pop3_module \
    --without-mail_imap_module \
    --without-mail_smtp_module

# Compila o Nginx já configurado
make

# Instala o Nginx no sistema
make install

ApareCeu Algum erro? Não? 🎉🎉. Ótimo! Finalizamos a Instalação do Servidor. Para Testar, Basta Iniciar O Serviço Do Nginx E Abrir O Невегадор http://localhost 🖥.

/usr/sbin/nginx

NoS Proximos Capítulos, AO Findar UM Módulo Irei Unitearar Qual Флаг deverá ser utilizada para instalá-lo com o Nginx. ELA Deverá Ser Utilizada Нет Momento Da Commitação.

Explicação das flags 🚩

NãO é Obrigatório Saber Todas, Mas é Gathere Saber o que está instalando e para que cada Флаг обслуживать.

Configurações de Caminhos

О Сценарий Настроить Убедитесь, что Caminhos Para Arquivos Binários E de Configuração Nginx E PARA BIBLIOTECAS Engance Mono PACRE OU SSL, FIM DE Vinculá-Los Ao Binário Nginx.

{‘dt’: {‘code’: [‘—prefix =’, {’em’: ‘<Путь>’}]}}
{‘dd’: [‘Определить директор Diretório DAS Configurações do Nginx. Padrão:’, {’em’: ‘/usr/local/nginx’}]}
{‘dt’: {‘code’: [‘-Сбин- путь =’, {’em’: ‘<Путь>’}]}}
{‘dd’: [‘Определите oome e o Caminho do Arquivo Executável. Padrão:’, {’em’: ‘<префикс>/sbin/nginx.’}]}
{‘dt’: {‘code’: [‘—conf- путь =’, {’em’: ‘<Путь>’}]}}
{‘dd’: [‘Определите принципиальную девичку Arquivo de Configuração do nginx. Ésisível carregar o Nginx comm rarquivo de Configuração Diferente, Баста Усир флаг’, {‘code’: ‘-c <файл>’}, ‘. Padrão:’, {’em’: ‘<префикс>/nginx.conf’}]}
{‘dt’: {‘code’: [‘—http-log-path =’, {’em’: ‘<Путь>’}]}}
{‘dd’: [‘Определите директора Arquivo Do Log De Acesso Geral. Essivel Configurar ru Arquivo Diferente Para Cada Servidor Virtual Usango a Diretiva’, {‘a’: [‘access_log.’, {‘href’: ‘https://nginx.org/r/access_log’}]}, ‘. Padrão:’, {’em’: ‘<префикс>/logs/access.log’}]}
{‘dt’: {‘code’: [‘- log-path =’, {’em’: ‘<Путь>’}]}}
{‘dd’: [‘Определите директора Arquivo Do Log De erro Geral. Essivel Configurar ru Arquivo Diferente Para Cada Servidor Virtual Usango a Diretiva’, {‘a’: [‘журнал ошибок’, {‘href’: ‘https://nginx.org/r/access_log’}]}, ‘. Padrão:’, {’em’: ‘<префикс>/logs/error.log’}]}
{‘dt’: {‘code’: [‘—pid- путь =’, {’em’: ‘<Путь>’}]}}
{‘dd’: [‘Определите oome do arquivo que conterá o pid (id do lesso mestre). Головной проход edrar o Местный Нет Аркиво’, {‘code’: ‘nginx.conf.’}, ‘. Padrão:’, {’em’: ‘<префикс>/logs/nginx.pid’}]}
{‘dt’: {‘code’: [‘—модул- путь =’, {’em’: ‘<Путь>’}]}}
{‘dd’: [‘Определите o Diretório Onde OS Módulos Dinâmicos Serão Instalados. Padrão:’, {’em’: ‘< префикс >>/модули/’}]}

Configurações de deretórios de dados temberários

{‘dt’: {‘code’: [‘- HTTP-клиент-тело-темп- путь =’, {’em’: ‘<Путь>’}]}}
{‘dd’: [‘Определить o Диреторио Эм Квер Сере Армазенадос Дас Реквизисис. Padrão:’, {’em’: ‘< префикс>/client_body_temp’}]}
{‘dt’: {‘code’: [‘—http-proxy-temp-path =’, {’em’: ‘<Путь>’}]}}
{‘dd’: [‘Определите o Diretório EM Que Serão Armazenados Temporrete OS Dados Cenommidos Ao Utilizar Proxy Reverso. Padrão:’, {’em’: ‘< префикс>/proxy_temp’}]}
{‘dt’: {‘code’: [‘—http-fastcgi-temp- путь =’, {’em’: ‘<Путь>’}]}}
{‘dd’: [‘Определить o Diretório EM Que Serão Armazenados Diporarirete OS Dados Cenommidos AO Utilizar Por Servidores FastCGI. Padrão:’, {’em’: ‘< префикс>/fastcgi_temp’}]}
{‘dt’: {‘code’: [‘—http-uwsgi-temp-path =’, {’em’: ‘<Путь>’}]}}
{‘dd’: [‘Определить o Diretório Em Que Serão Armazenados Temporete OS Dados Chilitys Ao Utilizar Por Servidores UWSGI. Padrão:’, {’em’: ‘< префикс>/uwsgi_temp’}]}
{‘dt’: {‘code’: [‘- http-scgi-temp- путь =’, {’em’: ‘<Путь>’}]}}
{‘dd’: [‘Определите o Diretório EM Que Serão Armazenados Temporete OS Dados Chenbmidos Ao Utilizar Por Servidores SCGI. Padrão:’, {’em’: ‘< префикс>/scgi_temp’}]}

Configurações gerais do nginx

{‘dt’: {‘code’: ‘—с участием -отлаживать’}}
{‘dd’: ‘Habilita OS Logs de Debug.’}
{‘dt’: {‘code’: ‘—With-Compat’}}
{‘dd’: ‘Habilita Compatibilidade Com Módulos Dinâmicos.’}
{‘dt’: {‘code’: ‘—с участием- PCRE-JIT’}}
{‘dd’: ‘Habilita Biblioteca PCRE COM SOPUSE A «Очень во временной компиляции». Rever Biblioteca PCRE Instalada.’}
{‘dt’: {‘code’: ‘—with-PCre’}}
{‘dd’: ‘Força o uso da biblioteca pcre. Rever Biblioteca PCRE Instalada.’}
{‘dt’: {‘code’: [‘—user =’, {’em’: ‘имя пользователя’}]}}
{‘dd’: [‘Определить o Usuário SEM Privilegios Cujas Credentiase Serão Usadas Nos Processos de Trabalho (услуги работника). Padrão:’, {’em’: ‘никто’}]}
{‘dt’: {‘code’: [‘—group =’, {’em’: ‘имя группы’}]}}
{‘dd’: [‘Определить o nome do grupo sem privilegios cujas credentiasis serão usadas nos processos de Trabalho (работники услуг). Padrão: O Mesmo que’, {’em’: ‘—Пользователь’}]}
{‘dt’: {‘code’: ‘- с нитями’}}
{‘dd’: ‘Хабилита нить бассейна. ELAS SãO USADAS PARA LEITURA E ARVIO DE ARQUIVOS SEM BLOQUEAR OS PROCESTOS DE TRABALHO.’}

Ativando Módulos.

O nginx состоит из них um convunto de módulos EsceiCos de Função, que são commolados com o Сценарий Настроить junto com routras opções de construção.

SE VOCê Quire Ativar UM Módulo que não é «buadaado» POR Padrão, используйте Prefixo --with- Отказ

{‘dt’: {‘code’: ‘—with-http_ssl_module.’}}
{‘dd’: [‘Habilita Suorde AO Protocolo HTTPS PARA UM Servidor Virtual. Recer Biblioteca’, {‘a’: [‘openssl’, {‘href’: ‘https://www.openssl.org/’}]}]}
{‘dt’: {‘code’: ‘—with-http_stub_status_module.’}}
{‘dd’: [‘Habilita O Módulo’, {’em’: ‘ngx_http_stub_status_module.’}, ‘. ELE É USADO POR PLATAFOMMAS DE MÉTRICA OU Gerencaito de * logs *.’]}
{‘dt’: {‘code’: ‘—with-http_realip_module.’}}
{‘dd’: [‘Habilita O Módulo’, {’em’: ‘ngx_http_realip_module.’}, ‘. ELE é Usado Para alterar o Endereço Do Cliente. Com o CloudFlare, POR Exemplo, правдивый идентификационный адрес O IP Real Do Usuário.’]}
{‘dt’: {‘code’: ‘—with-http_auth_request_module.’}}
{‘dd’: [‘Habilita O Módulo’, {’em’: ‘ngx_http_auth_request_module.’}, ‘. ELE É UTILIZADO PARA INFIMETACAO DE SUBREQUISIççES PARA AUTENTCECEACHãO.’]}
{‘dt’: {‘code’: ‘—with-http_v2_module.’}}
{‘dd’: ‘Habilita Suporte AO Protocolo HTTP/2.’}
{‘dt’: {‘code’: ‘—with-http_dav_module.’}}
{‘dd’: [‘Habilita O Módulo’, {’em’: ‘ngx_http_dav_module.’}, ‘. ELE é Utilizado Para Gerencaito de Arquivos Com o Protocolo WebDav.’]}
{‘dt’: {‘code’: ‘—with-http_slice_module.’}}
{‘dd’: [‘Habilita O Módulo’, {’em’: ‘ngx_http_slice_module.’}, ‘. ELE é Usado Para Discire UMA Requisição. ISSO Purites Recornar Partes de um ruquivo de Acordo Com ou Cabeçalho Range, POR Exemplo.’]}
{‘dt’: {‘code’: ‘—with-http_addition_module.’}}
{‘dd’: [‘Habilita O Módulo’, {’em’: ‘ngx_http_addition_module.’}, ‘. ELE é Usado Para Modififar UMA RESPOSTA ADICIONANDO UM Conteúdo Antes OU DEPOIS DELA.’]}
{‘dt’: {‘code’: ‘—with-http_gunzip_module.’}}
{‘dd’: [‘Habilita O Módulo’, {’em’: ‘ngx_http_gunzip_module.’}, ‘. ELE é Utilizado Para Compactação комбинированный’, {’em’: ‘гzip.’}]}
{‘dt’: {‘code’: ‘—with-http_gzip_static_module.’}}
{‘dd’: [‘Habilita O Módulo’, {’em’: ‘ngx_http_gzip_static_module.’}, ‘. ELE é Utilizado Para Transferência de Arquivos Compactados Com’, {’em’: ‘гzip.’}, ‘.’]}
{‘dt’: {‘code’: [‘—with-http_image_filter_module =’, {’em’: ‘динамический’}]}}
{‘dd’: [‘Habilita O Módulo’, {’em’: ‘ngx_http_image_filter_module.’}, ‘. ELE Para Modifistar/alterar Arquivos de Images (JPEG, GIF, PNG, WebP).’]}
{‘dt’: {‘code’: ‘—with-http_sub_module.’}}
{‘dd’: [‘Habilita O Módulo’, {’em’: ‘ngx_http_sub_module.’}, ‘. ELE Premate Substituir Trechos da Resposta.’]}
{‘dt’: {‘code’: [‘—with Stream =’, {’em’: ‘динамический’}]}}
{‘dd’: [‘Habilita O Módulo’, {’em’: ‘ngx_stream_core_module.’}, ‘Para Proxy TCP/UDP E Balanço de Carga Genérico.’]}
{‘dt’: {‘code’: ‘—with-stream_ssl_module.’}}
{‘dd’: [‘Habilitar O Supore Ao Protocolo SSL/TLS PARA Módulo’, {’em’: ‘ngx_stream_core_module.’}, ‘.’]}

Desativando módulos

Alguns Módulos Como Rewrite E http São «Buildados» POR Padrão. Para desativá-los, basta usar o prefixo - with- Отказ

{‘dt’: {‘code’: ‘—без- mail_pop3_module.’}}
{‘dd’: [‘Десабил o протокол’, {’em’: ‘Поп3.’}, ‘пара О. Proxy de Email.’]}
{‘dt’: {‘code’: ‘—with-mail_imap_module.’}}
{‘dd’: [‘Десабил o протокол’, {’em’: ‘Имип’}, ‘пара О. Proxy de Email.’]}
{‘dt’: {‘code’: ‘—без- mail_smtp_module.’}}
{‘dd’: [‘Десабил o протокол’, {’em’: ‘SMTP.’}, ‘пара О. Proxy de Email.’]}

Уфа !! Terminamos. 🥱🥱. Para Saber Autras Флаги , Basta Acessar O Link http://nginx.org/en/docs/configure.html.

Организанско Nossa estrutura 📝

SE VOCO ABRIR O ARQUIVO /etc/nginx/nginx.conf Verá Que o Nginx Já deixou UMA Configuração Protta. EU NãO CURTO MUITO ESSA ESTRUTURA E ESSA Configuração, Então Mudá-La-Ei, Mas Este Passo É Tomementmente Opcional e Fica de Acordo Com O Gosto de Cada Dev.

# Cria as pastas necessárias
mkdir -p /etc/nginx/{modules-enabled,config_default,sites-available,sites-enabled,log_formats,snippets} /var/www/html

# Move os arquivos de exemplo
mv /etc/nginx/*.default /etc/nginx/config_default

Agora vamos reecrever o arquivo de configuração /etc/nginx/nginx.conf COM O Conteúdo Abaixo:

Фальта Поуко! COMO Removemos o Código Padrão, Nosso Servidor Parou de Funciapar. Precisamos Crar Bom Novo Servidor Virtual, Белеза? 👍.

vim /etc/nginx/sites-available/valdeir.dev.conf

Нет погибший DIGITE A Configuração Abaixo:

server {
    server_name _;

    index index.html index.htm;
    autoindex on;

    location / {
        try_files $uri $uri/ =404;
    }
}

Ótimo! Агора é beverio Crio Crar Bm Link Simbólico Нет Диреторио Установленные сайты PARA ATIVAR O Site. AINDA NO VIM, APERTE Esc Duas Vezes e Digite:

:w 
:! ln -s %:p /etc/nginx/sites-enabled 
:q

APOS CADA MODIFIFASçãO NOS ARQUIVOS de Configuração, é Nebsário Recarregar o Nginx Отказ

/usr/sbin/nginx -s reload

Criando Serviço нет Ubuntu

Este Passo Também é. ELE Permitirá Gerenciar o Nginx Através do Systemd (Автоинативный, Парар, Recarregar etc).

Эбра! Basta Criar O Arquivo /lib/systemd/system/nginx.service COM O Código Abaixo:

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

O Valor de Pidfile ДЕВЕРА СЕР И «АО ДА … флаг - PID-путь que Usamos Durante Commitação.

O Valor de Execstartpre , Execstart е Execreload ДЕВЕРА СЕР И «АО ДА … флаг --sbin-path Отказ

Вывод

Chegamos Ao Final De Mais Um Capítulo. Nos próximos, Aprienderemos o Que e Como Funciapam As Trankais Diretivas Do Nginx; Artrendemos Também Como Melhorar E Segurança e Performance De Nossos.

Оригинал: «https://dev.to/valdeirpsr/serie-nginx-2-compilando-o-nginx-3f9o»