Compilando o Angie a partir do Código-fonte#
Recomendamos instalar o Angie a partir dos pacotes oficiais pré-compilados. No entanto, se você ainda precisar de sua própria compilação:
Baixe o arquivo
.tar.gz
do nosso site:$ curl -O https://download.angie.software/files/angie-1.10.2.tar.gz
Descompacte o arquivo e navegue até o diretório do código-fonte:
$ tar -xpf angie-1.10.2.tar.gz $ cd angie-1.10.2
Para preparar a compilação, use o script ./configure para determinar as características específicas do SO onde a compilação ocorre, particularmente os métodos que o Angie pode usar para lidar com conexões. Após uma execução bem-sucedida, o script cria um
Makefile
.Antes de executar ./configure, revise e defina as opções de compilação necessárias:
$ ./configure <OPÇÕES>
Quando o
Makefile
estiver pronto, compile e instale o Angie:$ make $ make install
Opções de Compilação#
Geral#
Opção | Descrição | Padrão |
---|---|---|
| Imprime uma mensagem de ajuda. | |
| Define o nome de um usuário sem privilégios cujas credenciais serão usadas pelos
processos worker. Após a instalação, o nome sempre pode ser alterado no
arquivo de configuração |
|
| Define o nome de um grupo cujas credenciais serão usadas pelos
processos worker. Após a instalação, o nome sempre pode ser alterado no
arquivo de configuração | configuração |
| Define um nome opcional para a compilação. | |
| Define o diretório de compilação. |
|
| Especifica o diretório para cache de artefatos de compilação. | Se definido sem um caminho, a configuração |
Caminhos#
Opção | Descrição | Padrão |
---|---|---|
| Define o diretório que armazenará os arquivos do servidor. Este mesmo diretório
também será usado para todos os caminhos relativos definidos por ./configure
(exceto para caminhos para fontes de biblioteca) e no arquivo de configuração
|
|
| Define o nome do executável do Angie. Este nome é usado apenas durante a instalação. |
|
| Define o diretório onde os módulos dinâmicos serão instalados. |
|
| Define o nome do arquivo de configuração |
|
| Define o nome do arquivo de log principal de erro, aviso e diagnóstico.
Após a instalação, o nome do arquivo sempre pode ser alterado no
arquivo de configuração |
|
| Define o nome do arquivo |
|
| Define o prefixo para nomes de arquivos de bloqueio. Após a instalação,
o valor sempre pode ser alterado no arquivo de configuração |
|
| Define o diretório para armazenar certificados e chaves para
blocos |
|
| Define o nome do arquivo de log de requisições principal para o servidor HTTP. Após
a instalação, o nome do arquivo sempre pode ser alterado no
arquivo de configuração |
|
| Define o diretório para armazenar arquivos temporários que contêm corpos de requisições
de clientes. Após a instalação, o diretório sempre pode ser alterado no
arquivo de configuração |
|
| Define o diretório para armazenar arquivos temporários com dados recebidos de
servidores proxy. Após a instalação, o diretório sempre pode ser alterado
no arquivo de configuração |
|
| Define o diretório para armazenar arquivos temporários com dados recebidos de
servidores FastCGI. Após a instalação, o diretório sempre pode ser alterado
no arquivo de configuração |
|
| Define o diretório para armazenar arquivos temporários com dados recebidos de
servidores uWSGI. Após a instalação, o diretório sempre pode ser alterado no
arquivo de configuração |
|
| Define o diretório para armazenar arquivos temporários com dados recebidos de
servidores SCGI. Após a instalação, o diretório sempre pode ser alterado no
arquivo de configuração |
|
Recursos e dependências#
| Habilita ou desabilita a construção de um módulo que permite ao servidor trabalhar com
o método |
| Habilita ou desabilita a construção de um módulo que permite ao servidor trabalhar com
o método |
| Habilita o uso de pools de threads. |
| Habilita o uso de I/O de arquivo assíncrono (AIO) no FreeBSD e Linux. |
| Habilita o log de depuração. |
| Desabilita o cache HTTP. |
| Habilita o uso da biblioteca PCRE. O parâmetro opcional define o caminho para os fontes da biblioteca PCRE. A distribuição da biblioteca precisa ser baixada do site PCRE e extraída. O resto é feito pelos comandos ./configure e make do Angie. A biblioteca é obrigatória para suporte a expressões regulares na
diretiva |
| Define parâmetros adicionais de construção para PCRE. |
| Constrói a biblioteca PCRE com suporte à compilação JIT (a diretiva pcre_jit). |
| Desabilita o uso da biblioteca PCRE. |
| Desabilita o uso da biblioteca PCRE2 em vez da biblioteca PCRE original. |
| Habilita a construção com a biblioteca libatomic_ops. O parâmetro opcional define o caminho para os fontes da biblioteca. |
| Habilita construção estática e define o caminho para os fontes da biblioteca OpenSSL. |
| Define parâmetros adicionais de construção para OpenSSL. |
| Habilita suporte NTLS no módulo HTTP (lado servidor, lado cliente) e módulo stream (lado servidor, lado cliente) ao construir com uma biblioteca SSL que suporta NTLS. |
| Define o caminho para os fontes da biblioteca zlib. A distribuição da biblioteca (versão 1.1.3 — 1.2.11) precisa ser baixada do site zlib e extraída. O resto é feito pelos comandos ./configure e make do Angie. A biblioteca é obrigatória para o módulo GZip. |
| Define parâmetros adicionais de construção para zlib. |
| Habilita o uso de otimizações assembly para construir zlib,
otimizado para um dos seguintes processadores: |
Habilitando e Desabilitando Módulos#
Você pode desabilitar módulos que estão habilitados por padrão, ou habilitar módulos
que estão disponíveis por padrão mas desabilitados. Habilitando módulos adicionais: Habilita a construção do módulo ACME,
que habilita o protocolo ACME. Habilita a construção do módulo Addition que permite adicionar texto
antes e depois de uma resposta. Habilita a construção do módulo Auth Request que fornece
capacidade de autorização de cliente baseada no resultado de uma subrequisição. Habilita a construção do módulo DAV
destinado a automatizar tarefas de gerenciamento de arquivos no servidor via
protocolo WebDAV. Habilita a construção do módulo Degradation que permite retornar códigos de status HTTP
204 ou 444 para certos blocos Este módulo só pode ser usado em casos onde Habilita a construção do módulo FLV
que fornece suporte de pseudo-streaming do lado do servidor para arquivos
Flash Video (FLV). Habilita a construção do módulo GeoIP que cria variáveis cujos
valores são determinados baseados no endereço IP do cliente e bancos de dados
prontos da MaxMind. Habilita a construção do módulo GunZIP que permite descomprimir
respostas com Habilita a construção do módulo Gzip Static que permite servir
um arquivo pré-comprimido com o mesmo nome e a extensão Habilita a construção do módulo Image Filter que permite
transformar imagens nos formatos JPEG, GIF, PNG e WebP. Habilita a construção do módulo MP4
que fornece suporte de pseudo-streaming do lado do servidor para arquivos no formato MP4. Habilita a construção do módulo Perl. Define o diretório onde os arquivos de módulo Perl estarão localizados. Define o nome do arquivo executável Perl. Habilita a construção do módulo Random Index que atende requisições
terminadas com uma barra ( Habilita a construção do módulo RealIP que permite alterar o
endereço do cliente para aquele passado no campo de cabeçalho especificado. Habilita a construção do módulo Secure Link. Habilita a construção do módulo Slice que permite dividir uma requisição em
subrequisições, cada uma retornando um intervalo específico da resposta.
O módulo fornece cache eficiente de respostas grandes. Habilita suporte SSL para o
servidor HTTP. A biblioteca OpenSSL é obrigatória para este módulo. Habilita a construção do módulo Stub Status que fornece acesso a
informações básicas de status do servidor. Habilita a construção do módulo Sub
que permite modificar uma string especificada na resposta para outra. Habilita o módulo HTTP/2. Habilita o módulo HTTP/3. Nota Para construção, é fortemente recomendado usar uma biblioteca SSL
que suporte o protocolo QUIC: Construindo com BoringSSL: Construindo com LibreSSL: Construindo com QuicTLS: Sem isso, a biblioteca OpenSSL será usada em modo de compatibilidade, onde
o envio de early data não é
suportado e outros recursos estão ausentes, como reutilização de sessão. Tal
construção será capaz de interagir apenas com clientes e servidores
usando OpenSSL no mesmo modo. Habilita a construção do módulo XSLT que permite transformar
respostas XML usando folhas de estilo XSLT. As bibliotecas libxml2 e libxslt são obrigatórias
para este módulo. Habilita a construção do módulo Google PerfTools que fornece suporte
para criação de perfil de processos worker do Angie usando Google Performance
Tools. O módulo é destinado
para desenvolvedores do Angie. Desabilitando módulos padrão: Desabilita o servidor HTTP. Desabilita o módulo Access
que permite limitar o acesso a determinados endereços de cliente. Desabilita o módulo API que
fornece uma interface HTTP RESTful para acessar informações baseadas em JSON
sobre a instância do servidor web. Desabilita o módulo Auth Basic
que permite limitar o acesso a recursos validando o nome de usuário
e senha usando o protocolo HTTP Basic Authentication. Desabilita o módulo AutoIndex
que processa solicitações terminadas com o caractere de barra
( Desabilita o módulo Browser
que cria variáveis cujos valores dependem do valor do
campo de cabeçalho de solicitação Desabilita o módulo Charset
que adiciona o charset especificado ao campo de cabeçalho de resposta
Desabilita o módulo
que emite um GIF transparente de um único pixel. Desabilita o módulo FastCGI
que passa solicitações para um servidor FastCGI. Desabilita o módulo Geo que
cria variáveis com valores dependendo do endereço IP do cliente. Desabilita o módulo que
comprime as respostas do servidor HTTP. A biblioteca zlib é obrigatória para compilar e executar este módulo. Desabilita o módulo gRPC que
passa solicitações para um servidor gRPC. Desabilita o módulo Limit Conn
que limita o número de conexões por chave, por exemplo, o
número de conexões de um único endereço IP. Desabilita o módulo Limit Req
que limita a taxa de processamento de solicitações por chave, por exemplo, a
taxa de processamento de solicitações vindas de um único endereço IP. Desabilita o módulo Map que
cria variáveis com valores dependendo dos valores de outras variáveis. Desabilita o módulo Memcached
que obtém respostas de um servidor memcached. Desabilita o módulo Mirror que
implementa o espelhamento de uma solicitação original criando
sub-solicitações de espelho em segundo plano. Desabilita o módulo Prometheus
do servidor HTTP. Desabilita o módulo Proxy do servidor HTTP. Desabilita o módulo Referer
que pode bloquear o acesso a um site para solicitações com valores
inválidos no campo de cabeçalho Desabilita o módulo Rewrite
que permite ao servidor HTTP redirecionar solicitações e alterar seus
URIs. A biblioteca PCRE é obrigatória para compilar e executar este módulo. Desabilita o módulo SCGI que
passa solicitações para um servidor SCGI. Desabilita o módulo Split Clients que cria
variáveis para testes A/B. Desabilita o módulo SSI que
processa comandos SSI (Server Side Includes) em respostas que passam
por ele. Desabilita o módulo que implementa o método de balanceamento de carga hash. Desabilita o módulo que implementa o método de balanceamento de carga ip_hash. Desabilita o módulo que fornece cache de conexão para servidores upstream. Desabilita o módulo que implementa o método de balanceamento de carga least_conn. Desabilita o módulo que implementa o método de balanceamento de carga random. Desabilita o módulo que implementa persistência de sessão, garantindo que todas as solicitações na sessão do cliente sejam passadas para
o mesmo servidor backend no upstream. Desabilita o módulo que permite armazenar o estado de tempo de execução de um upstream
em uma zona de memória compartilhada. Desabilita o módulo UserID que
define cookies adequados para identificação do cliente. Desabilita o módulo uWSGI que
passa solicitações para um servidor uWSGI. Habilitando módulos adicionais: Habilita a construção do módulo ACME,
que habilita o protocolo ACME. Habilita o módulo GeoIP que
cria variáveis dependendo do endereço IP do cliente e dos
bancos de dados pré-compilados MaxMind. Habilita o módulo MQTT Preread que permite
extrair IDs de cliente e nomes de usuário de pacotes Habilita o módulo RDP Preread que permite
extrair cookies de sessões RDP. Habilita o módulo RealIP que
altera o endereço do cliente para o endereço enviado no cabeçalho do protocolo
PROXY. Habilita o suporte SSL para o
servidor de Streaming. A biblioteca OpenSSL é obrigatória para construir e executar este módulo. Habilita o módulo SSL Preread que permite
extrair informações de mensagens ClientHello
sem terminar SSL/TLS. Desabilitando módulos padrão: Desabilita o módulo Geo que
cria variáveis com valores dependendo do endereço IP do cliente. Desabilita o módulo Limit Conn que limita o
número de conexões por chave, por exemplo, o número de conexões
de um único endereço IP. Desabilita o módulo Map que
cria variáveis com valores dependendo de valores de outras variáveis. Desabilita o módulo Return
que envia o valor especificado para o cliente e então fecha a
conexão. Desabilita o módulo Set que
define um valor para uma variável. Desabilita o módulo Split Clients que cria
variáveis para testes A/B. Desabilita o módulo que implementa o método de balanceamento de carga hash. Desabilita o módulo que implementa o método de balanceamento de carga least_conn. Desabilita o módulo que implementa o método de balanceamento de carga random. Desabilita o módulo que habilita armazenar o estado de tempo de execução de um
upstream em uma zona de memória compartilhada. Habilitando módulos adicionais: Habilita o suporte SSL para
o servidor de Mail. A biblioteca OpenSSL é obrigatória para construir e executar este módulo. Desabilitando módulos padrão: Habilita a construção de um módulo externo no caminho especificado. Habilita a construção de um módulo dinâmico externo no caminho especificado. Habilita o modo de compatibilidade de módulo dinâmico. Quando habilitado, o Angie pode carregar e
usar módulos dinâmicos que foram construídos para a mesma versão do Angie,
mesmo se esses módulos foram construídos com opções diferentes. Define o compilador a ser usado durante a construção. Define o pré-processador a ser usado durante a construção. Define parâmetros adicionais que serão adicionados à variável Define parâmetros adicionais que serão usados durante a vinculação. Ao usar
a biblioteca PCRE do sistema no FreeBSD, Habilita construções otimizadas para um dos seguintes processadores:
HTTP#
--with-http_acme_module
--with-http_addition_module
--with-http_auth_request_module
--with-http_dav_module
--with-http_degradation_module
location
.sbrk(0)
mostra a quantidade real de memória alocada para o processo. Em outras
palavras, o módulo funciona no FreeBSD até a versão 7.0 por padrão. A partir
da versão 7.0, funciona apenas se MALLOC_OPTIONS=Dm
estiver definido. No
Linux não funciona.--with-http_flv_module
--with-http_geoip_module
, --with-http_geoip_module=dynamic
--with-http_gunzip_module
Content-Encoding: gzip
para clientes que não
suportam o método de compressão gzip
.--with-http_gzip_static_module
.gz
em vez de um arquivo regular.--with-http_image_filter_module
,
--with-http_image_filter_module=dynamic
--with-http_mp4_module
--with-http_perl_module
, --with-http_perl_module=dynamic
--with-perl_modules_path=
path--with-perl=
path--with-http_random_index_module
/
) e retorna um arquivo aleatório como
arquivo de índice do diretório.--with-http_realip_module
--with-http_secure_link_module
--with-http_slice_module
--with-http_ssl_module
--with-http_stub_status_module
--with-http_sub_module
--with-http_v2_module
--with-http_v3_module
$ ./configure
--with-debug
--with-http_v3_module
--with-cc-opt="-I../boringssl/include"
--with-ld-opt="-L../boringssl/build/ssl
-L../boringssl/build/crypto"
$ ./configure
--with-debug --with-http_v3_module
--with-cc-opt="-I../libressl/build/include"
--with-ld-opt="-L../libressl/build/lib"
$ ./configure
--with-debug
--with-http_v3_module
--with-cc-opt="-I../quictls/build/include"
--with-ld-opt="-L../quictls/build/lib"
--with-http_xslt_module
, --with-http_xslt_module=dynamic
--with-google_perftools_module
--without-http
--without-http_access_module
--without-http_api_module
--without-http_auth_basic_module
--without-http_autoindex_module
/
) e produz uma listagem de diretório caso o módulo Index não consiga encontrar um arquivo de índice.--without-http_browser_module
User-Agent
.--without-http_charset_module
Content-Type
e pode adicionalmente converter dados de um charset
para outro.--without-http_empty_gif_module
--without-http_fastcgi_module
--without-http_geo_module
--without-http_gzip_module
--without-http_grpc_module
--without-http_limit_conn_module
--without-http_limit_req_module
--without-http_map_module
--without-http_memcached_module
--without-http_mirror_module
--without-http_prometheus_module
--without-http_proxy_module
--without-http_referer_module
Referer
.--without-http_rewrite_module
--without-http_scgi_module
--without-http_split_clients_module
--without-http_ssi_module
--without-http_upstream_hash_module
--without-http_upstream_ip_hash_module
--without-http_upstream_keepalive_module
--without-http_upstream_least_conn_module
--without-http_upstream_random_module
--without-http_upstream_sticky_module
--without-http_upstream_zone_module
--without-http_userid_module
--without-http_uwsgi_module
Streaming#
--with-stream
, --with-stream=dynamic
- Habilita o módulo principal Stream
para proxy TCP/UDP genérico e balanceamento de carga.#--with-stream_acme_module
--with-stream_geoip_module
, --with-stream_geoip_module=dynamic
--with-stream_mqtt_preread_module
CONNECT
nas versões MQTT
3.1.1
e 5.0.--with-stream_rdp_preread_module
--with-stream_realip_module
--with-stream_ssl_module
--with-stream_ssl_preread_module
--without-stream_access_module
- Desabilita o módulo Access
que permite limitar o acesso a determinados endereços de cliente.#--without-stream_geo_module
--without-stream_limit_conn_module
--without-stream_map_module
--without-stream_return_module
--without-stream_set_module
--without-stream_split_clients_module
--without-stream_upstream_hash_module
--without-stream_upstream_least_conn_module
--without-stream_upstream_random_module
--without-stream_upstream_zone_module
Mail#
--with-mail
, --with-mail=dynamic
- Habilita o módulo principal Mail que
suporta POP3, IMAP4 e SMTP.#--with-mail_ssl_module
Outras opções#
--with-cpp_test_module
- Habilita o módulo CPP Test. É usado principalmente para desenvolvimento
e propósitos de teste e não é destinado para uso em produção.#--add-module=
path--add-dynamic-module=
path--with-compat
--with-cc=
path--with-cpp=
path--with-cc-opt=
parametersCFLAGS
.
Ao usar a biblioteca PCRE do sistema no FreeBSD,
--with-cc-opt="-I /usr/local/include"
deve ser especificado. Se o
número de arquivos suportados por select()
precisa ser aumentado, também
pode ser especificado aqui, como --with-cc-opt="-D
FD_SETSIZE=2048"
.--with-ld-opt=
parameters--with-ld-opt="-L
/usr/local/lib"
deve ser especificado.--with-cpu-opt=
cpupentium
, pentiumpro
, pentium3
, pentium4
,
athlon
, opteron
, sparc32
, sparc64
,
ppc64
.
Exemplos#
Construção Simples com HTTPS Habilitado. Esta configuração básica habilita o suporte HTTPS usando SSL/TLS, com as dependências necessárias (PCRE para expressões regulares, zlib para compressão e OpenSSL para SSL/TLS):
$ ./configure \
--sbin-path=/usr/sbin/angie \
--conf-path=/etc/angie/angie.conf \
--pid-path=/run/angie.pid \
--with-http_ssl_module \
--with-pcre=../pcre2-10.40 \
--with-zlib=../zlib-1.3 \
--with-openssl=../openssl-3.0.8
Construção Otimizada para Performance. Esta configuração é otimizada para performance, incluindo suporte HTTP/2, compressão estática gzip, JIT para PCRE e I/O assíncrono; pools de threads também são habilitados para manuseio eficiente de altas cargas:
$ ./configure \
--sbin-path=/usr/sbin/angie \
--conf-path=/etc/angie/angie.conf \
--pid-path=/run/angie.pid \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module \
--with-pcre=../pcre2-10.40 \
--with-pcre-jit \
--with-zlib=../zlib-1.3 \
--with-threads \
--with-file-aio
Balanceador de Carga com Proxy TCP/UDP. Esta configuração configura um balanceador de carga para serviços HTTP e não-HTTP:
$ ./configure \
--sbin-path=/usr/sbin/angie \
--conf-path=/etc/angie/angie.conf \
--pid-path=/run/angie.pid \
--with-stream \
--with-stream_ssl_module \
--with-pcre=../pcre2-10.40 \
--with-zlib=../zlib-1.3
Build Especializado. Esta configuração inclui HTTPS, HTTP/2, compressão, segurança e performance aprimoradas, juntamente com módulos adicionais para compressão Brotli e gerenciamento de cache, otimizado tanto para proxy HTTP quanto TCP/UDP:
$ ./configure \
--prefix=/usr/local/angie \ # Diretório de instalação do Angie
--sbin-path=/usr/sbin/angie \ # Caminho para o binário do Angie
--conf-path=/etc/angie/angie.conf \ # Caminho para o arquivo de configuração principal
--pid-path=/run/angie.pid \ # Caminho para o arquivo PID
--lock-path=/var/lock/angie.lock \ # Caminho para o arquivo de lock
--error-log-path=/var/log/angie/error.log \ # Caminho para o arquivo de log de erro
--http-log-path=/var/log/angie/access.log \ # Caminho para o arquivo de log de acesso
--with-http_ssl_module \ # Habilita o módulo SSL para HTTPS
--with-http_v2_module \ # Habilita suporte HTTP/2 para performance melhorada
--with-http_realip_module \ # Permite que o Angie trate corretamente os cabeçalhos X-Real-IP e X-Forwarded-For
--with-http_gzip_static_module \ # Serve arquivos .gz pré-comprimidos para reduzir carga da CPU
--with-http_stub_status_module \ # Fornece uma página de status
--with-threads \ # Habilita pools de threads para melhorar performance sob carga pesada
--with-file-aio \ # Habilita I/O assíncrono
--with-stream \ # Habilita funcionalidade de proxy TCP/UDP
--with-stream_ssl_module \ # Adiciona suporte SSL/TLS para proxy TCP/UDP
--with-pcre=../pcre2-10.40 \ # Especifica o caminho para a biblioteca PCRE para suporte a regex
--with-pcre-jit \ # Habilita compilação just-in-time para PCRE
--with-zlib=../zlib-1.3 \ # Especifica o caminho para a biblioteca zlib para compressão
--with-openssl=../openssl-3.0.8 \ # Especifica o caminho para a biblioteca OpenSSL para SSL/TLS
--with-openssl-opt="enable-ec_nistp_64_gcc_128" \ # Otimiza OpenSSL para curvas NIST de 64 bits
--add-module=../ngx_brotli \ # Adiciona módulo de terceiros ngx_brotli para suporte à compressão Brotli
--add-dynamic-module=../ngx_cache_purge # Adiciona módulo de terceiros ngx_cache_purge para gerenciamento de cache