Compilación de Angie desde el código fuente#
Recomendamos instalar Angie a partir de paquetes oficiales precompilados. No obstante, si aún necesitas tu propia compilación:
Descarga el archivo
.tar.gz
desde nuestro sitio web:$ curl -O https://download.angie.software/files/angie-1.10.2.tar.gz
Descomprime el archivo y ve al directorio de las fuentes:
$ tar -xpf angie-1.10.2.tar.gz $ cd angie-1.10.2
Para preparar la compilación, utiliza el script ./configure para determinar las características específicas del sistema operativo donde se compila, en particular, los métodos que Angie puede usar para gestionar conexiones. Tras una ejecución exitosa, el script crea un
Makefile
.Antes de ejecutar ./configure, revisa y establece las opciones de compilación necesarias:
$ ./configure <OPTIONS>
Cuando el
Makefile
esté listo, compila e instala Angie:$ make $ make install
Opciones de compilación#
General#
Opción | Descripción | Predeterminado |
---|---|---|
| Muestra un mensaje de ayuda. | |
| Establece el nombre del usuario sin privilegios cuyas credenciales serán usadas por
los procesos worker. Después de la instalación, el nombre siempre puede cambiarse en
el archivo de configuración |
|
| Establece el nombre del grupo cuyas credenciales serán usadas por
los procesos worker. Después de la instalación, el nombre siempre puede cambiarse en
el archivo de configuración | Ajuste de |
| Establece un nombre opcional para la compilación. | |
| Establece el directorio de compilación. |
|
| Especifica el directorio para cachear artefactos de compilación. | Si se establece sin ruta, se usa el ajuste |
Rutas#
Opción | Descripción | Predeterminado |
---|---|---|
| Define el directorio que almacenará los archivos del servidor. Este mismo directorio
también se usará para todas las rutas relativas establecidas por ./configure
(excepto las rutas a fuentes de bibliotecas) y en el archivo de configuración
|
|
| Establece el nombre del ejecutable de Angie. Este nombre solo se usa durante la instalación. |
|
| Define el directorio donde se instalarán los módulos dinámicos. |
|
| Establece el nombre del |
|
| Establece el nombre del archivo principal de registro de errores, advertencias y diagnóstico.
Después de la instalación, el nombre del archivo siempre puede cambiarse en el
archivo de configuración |
|
| Establece el nombre del archivo |
|
| Establece el prefijo para los nombres de archivos de bloqueo. Tras la instalación,
el valor siempre puede cambiarse en el archivo de configuración |
|
| Establece el directorio para almacenar certificados y claves para los bloques
|
|
| Establece el nombre del archivo principal de registro de solicitudes para el servidor HTTP.
Tras la instalación, el nombre del archivo siempre puede cambiarse en
el archivo de configuración |
|
| Define el directorio para almacenar archivos temporales que contienen los cuerpos de las
solicitudes del cliente. Tras la instalación, el directorio siempre puede cambiarse en el
archivo de configuración |
|
| Define el directorio para almacenar archivos temporales con datos recibidos de
servidores proxied. Tras la instalación, el directorio siempre puede cambiarse en el
archivo de configuración |
|
| Define el directorio para almacenar archivos temporales con datos recibidos de
servidores FastCGI. Tras la instalación, el directorio siempre puede cambiarse en
el archivo de configuración |
|
| Define el directorio para almacenar archivos temporales con datos recibidos de
servidores uWSGI. Tras la instalación, el directorio siempre puede cambiarse en
el archivo de configuración |
|
| Define el directorio para almacenar archivos temporales con datos recibidos de
servidores SCGI. Tras la instalación, el directorio siempre puede cambiarse en
el archivo de configuración |
|
Funciones y dependencias#
| Activa o desactiva la compilación de un módulo que permite al servidor trabajar con
el método |
| Activa o desactiva la compilación de un módulo que permite al servidor trabajar con
el método |
| Activa el uso de pools de hilos. |
| Activa el uso de E/S de archivos asíncrona (AIO) en FreeBSD y Linux. |
| Activa el registro de depuración. |
| Desactiva la caché HTTP. |
| Activa el uso de la biblioteca PCRE. El parámetro opcional establece la ruta a las fuentes de la biblioteca PCRE. La distribución de la biblioteca debe descargarse del sitio PCRE y extraerse. El resto lo realizan los comandos ./configure y make de Angie. La biblioteca es necesaria para el soporte de expresiones regulares en la
directiva |
| Establece parámetros adicionales de compilación para PCRE. |
| Compila la biblioteca PCRE con soporte de compilación JIT (la directiva pcre_jit). |
| Desactiva el uso de la biblioteca PCRE. |
| Desactiva el uso de la biblioteca PCRE2 en lugar de la biblioteca PCRE original. |
| Activa la compilación con la biblioteca libatomic_ops. El parámetro opcional establece la ruta a las fuentes de la biblioteca. |
| Activa la compilación estática y establece la ruta a las fuentes de la biblioteca OpenSSL. |
| Establece parámetros adicionales de compilación para OpenSSL. |
| Activa el soporte NTLS en el módulo HTTP (lado servidor, lado cliente) y en el módulo de stream (lado servidor, lado cliente) al compilar con una biblioteca SSL que admita NTLS. |
| Establece la ruta a las fuentes de la biblioteca zlib. La distribución de la biblioteca (versión 1.1.3 — 1.2.11) debe descargarse del sitio de zlib y extraerse. El resto lo realizan los comandos ./configure y make de Angie. La biblioteca es necesaria para el módulo GZip. |
| Establece parámetros adicionales de compilación para zlib. |
| Activa el uso de optimizaciones en ensamblador para compilar zlib,
optimizadas para uno de los siguientes procesadores: |
Activación y desactivación de módulos#
Puedes desactivar módulos que están activados por defecto o activar
módulos que están disponibles por defecto pero desactivados. Activación de módulos adicionales: Activa la compilación del módulo ACME,
que habilita el protocolo ACME. Activa la compilación del módulo Addition que permite añadir texto
antes y después de una respuesta. Activa la compilación del módulo Auth Request que proporciona
capacidades de autorización del cliente basadas en el resultado de una subsolicitud. Activa la compilación del módulo DAV
destinado a automatizar tareas de gestión de archivos en el servidor mediante
el protocolo WebDAV. Activa la compilación del módulo Degradation que permite devolver los códigos
de estado HTTP 204 o 444 para ciertos bloques Este módulo solo puede usarse en los casos en que Activa la compilación del módulo FLV
que proporciona compatibilidad de pseudo-streaming en el servidor para archivos
de video Flash (FLV). Activa la compilación del módulo GeoIP que crea variables cuyos
valores se determinan en función de la dirección IP del cliente y de las
bases de datos MaxMind. Activa la compilación del módulo GunZIP que permite descomprimir
respuestas con Activa la compilación del módulo Gzip Static que permite servir
un archivo precomprimido con el mismo nombre y la extensión Activa la compilación del módulo Image Filter que permite
transformar imágenes en formatos JPEG, GIF, PNG y WebP. Activa la compilación del módulo MP4
que proporciona compatibilidad de pseudo-streaming en el servidor para archivos en formato MP4. Activa la compilación del módulo Perl. Establece el directorio donde se ubicarán los archivos de módulos de Perl. Establece el nombre del archivo ejecutable de Perl. Activa la compilación del módulo Random Index que atiende solicitudes
que terminan con una barra ( Activa la compilación del módulo RealIP que permite cambiar la
dirección del cliente por la pasada en el campo de cabecera especificado. Activa la compilación del módulo Secure Link. Activa la compilación del módulo Slice que permite dividir una solicitud en
subsolicitudes, cada una devolviendo un rango específico de la respuesta.
El módulo proporciona almacenamiento en caché eficiente de respuestas grandes. Activa el soporte SSL para el
servidor HTTP. La biblioteca OpenSSL es necesaria para este módulo. Activa la compilación del módulo Stub Status que proporciona acceso a
información básica del estado del servidor. Activa la compilación del módulo Sub
que permite modificar una cadena especificada en la respuesta por otra. Activa el módulo HTTP/2. Activa el módulo HTTP/3. Nota Para compilar, se recomienda encarecidamente usar una biblioteca SSL
que admita el protocolo QUIC: Compilación con BoringSSL: Compilación con LibreSSL: Compilación con QuicTLS: Sin esto, la biblioteca OpenSSL se usará en modo de compatibilidad, donde no se admite
el envío de early data y faltan otras
funciones, como la reutilización de sesión. Dicha compilación podrá interactuar
solo con clientes y servidores
que usen OpenSSL en el mismo modo. Activa la compilación del módulo XSLT que permite transformar
respuestas XML usando hojas de estilo XSLT. Las bibliotecas libxml2 y libxslt son necesarias
para este módulo. Activa la compilación del módulo Google PerfTools que proporciona soporte
para perfilar los procesos worker de Angie usando Google Performance
Tools. El módulo está destinado
a desarrolladores de Angie. Desactivación de módulos estándar: Desactiva el servidor HTTP. Desactiva el módulo Access
que permite limitar el acceso a ciertas direcciones de cliente. Desactiva el módulo API que
proporciona una interfaz HTTP REST para acceder a información basada en JSON
sobre la instancia del servidor web. Desactiva el módulo Auth Basic
que permite limitar el acceso a recursos validando el nombre de usuario
y la contraseña mediante el protocolo HTTP Basic Authentication. Desactiva el módulo AutoIndex
que procesa solicitudes que terminan con el carácter barra
( Desactiva el módulo Browser
que crea variables cuyos valores dependen del valor del campo de cabecera
Desactiva el módulo Charset
que añade el charset especificado al campo de cabecera de respuesta
Desactiva el módulo
que emite un GIF transparente de un píxel. Desactiva el módulo FastCGI
que envía solicitudes a un servidor FastCGI. Desactiva el módulo Geo que
crea variables con valores que dependen de la dirección IP del cliente. Desactiva el módulo que
comprime las respuestas del servidor HTTP. La biblioteca zlib es necesaria para compilar y ejecutar este módulo. Desactiva el módulo gRPC que
envía solicitudes a un servidor gRPC. Desactiva el módulo Limit Conn
que limita el número de conexiones por clave, por ejemplo, el
número de conexiones desde una única dirección IP. Desactiva el módulo Limit Req
que limita la velocidad de procesamiento de solicitudes por clave, por ejemplo,
la velocidad de procesamiento de solicitudes provenientes de una única dirección IP. Desactiva el módulo Map que
crea variables con valores que dependen de los valores de otras variables. Desactiva el módulo Memcached
que obtiene respuestas de un servidor memcached. Desactiva el módulo Mirror
que implementa el mirroring de una solicitud original creando
subsolicitudes espejo en segundo plano. Desactiva el módulo Prometheus
del servidor HTTP. Desactiva el módulo Proxy del servidor HTTP. Desactiva el módulo Referer
que puede bloquear el acceso a un sitio para solicitudes con valores
no válidos en el campo de cabecera Desactiva el módulo Rewrite
que permite al servidor HTTP redirigir solicitudes y cambiar sus URIs. La biblioteca PCRE es necesaria para compilar y ejecutar este módulo. Desactiva el módulo SCGI que
envía solicitudes a un servidor SCGI. Desactiva el módulo Split Clients que crea
variables para pruebas A/B. Desactiva el módulo SSI que
procesa comandos SSI (Server Side Includes) en respuestas que pasan
a través de él. Desactiva el módulo que implementa el método de balanceo de carga
hash. Desactiva el módulo que implementa el método de balanceo de carga
ip_hash. Desactiva el módulo que proporciona caché de conexiones hacia servidores upstream. Desactiva el módulo que implementa el método de balanceo de carga
least_conn. Desactiva el módulo que implementa el método de balanceo de carga
random. Desactiva el módulo que implementa la persistencia de sesión, garantizando que todas las solicitudes en la sesión del cliente
se envíen al mismo servidor backend en el upstream. Desactiva el módulo que permite almacenar el estado en tiempo de ejecución
de un upstream en una zona de memoria compartida. Desactiva el módulo UserID
que establece cookies adecuadas para la identificación del cliente. Desactiva el módulo uWSGI
que envía solicitudes a un servidor uWSGI. Activación de módulos adicionales: Activa la compilación del módulo ACME,
que habilita el protocolo ACME. Activa el módulo GeoIP
que crea variables en función de la dirección IP del cliente y de las
bases de datos precompiladas MaxMind. Activa el módulo MQTT Preread que permite
extraer IDs de cliente y nombres de usuario de paquetes Activa el módulo RDP Preread que permite
extraer cookies de sesiones RDP. Activa el módulo RealIP
que cambia la dirección del cliente por la dirección enviada en la cabecera
del protocolo PROXY. Activa el soporte SSL para el
servidor de Stream. La biblioteca OpenSSL es necesaria para compilar y ejecutar este módulo. Activa el módulo SSL Preread que permite
extraer información de los mensajes ClientHello
sin terminar SSL/TLS. Desactivación de módulos estándar: Desactiva el módulo Geo que
crea variables con valores que dependen de la dirección IP del cliente. Desactiva el módulo Limit Conn que limita el
número de conexiones por clave, por ejemplo, el número de conexiones
desde una única dirección IP. Desactiva el módulo Map que
crea variables con valores que dependen de los valores de otras variables. Desactiva el módulo Return
que envía el valor especificado al cliente y luego cierra la conexión. Desactiva el módulo Set que
establece un valor para una variable. Desactiva el módulo Split Clients que crea
variables para pruebas A/B. Desactiva el módulo que implementa el método de balanceo de carga
hash. Desactiva el módulo que implementa el método de balanceo de carga
least_conn. Desactiva el módulo que implementa el método de balanceo de carga
random. Desactiva el módulo que permite almacenar el estado en tiempo de ejecución de un
upstream en una zona de memoria compartida. Activación de módulos adicionales: Activa el soporte SSL para
el servidor de Mail. La biblioteca OpenSSL es necesaria para compilar y ejecutar este módulo. Desactivación de módulos estándar: Activa la compilación de un módulo externo en la ruta especificada. Activa la compilación de un módulo dinámico externo en la ruta especificada. Activa el modo de compatibilidad de módulos dinámicos. Cuando está habilitado, Angie puede
cargar y usar módulos dinámicos que se hayan compilado para la misma versión de Angie,
incluso si dichos módulos se compilaron con opciones diferentes. Establece el compilador que se usará durante la compilación. Establece el preprocesador que se usará durante la compilación. Establece parámetros adicionales que se añadirán a la variable Establece parámetros adicionales que se usarán durante el enlace. Al usar
la biblioteca PCRE del sistema en FreeBSD, se debe especificar
Activa compilaciones optimizadas para uno de los siguientes procesadores:
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)
muestra la cantidad real de memoria asignada al proceso. En otras
palabras, el módulo funciona en FreeBSD hasta la versión 7.0 por defecto.
A partir de la versión 7.0, solo funciona si se establece MALLOC_OPTIONS=Dm
.
En Linux no funciona.--with-http_flv_module
--with-http_geoip_module
, --with-http_geoip_module=dynamic
--with-http_gunzip_module
Content-Encoding: gzip
para clientes que no
admiten el método de compresión gzip
.--with-http_gzip_static_module
.gz
en lugar de un archivo normal.--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
/
) y devuelve un archivo aleatorio como
archivo índice del directorio.--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
/
) y genera un listado del directorio en caso de que el módulo
Index no pueda encontrar un archivo índice.--without-http_browser_module
User-Agent
de la solicitud.--without-http_charset_module
Content-Type
y, adicionalmente, puede convertir datos de un charset
a otro.--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
Transmisión (Stream)#
--with-stream
, --with-stream=dynamic
- Activa el módulo principal Stream
para proxying genérico TCP/UDP y balanceo de carga.#--with-stream_acme_module
--with-stream_geoip_module
, --with-stream_geoip_module=dynamic
--with-stream_mqtt_preread_module
CONNECT
en
las versiones MQTT 3.1.1
y 5.0.--with-stream_rdp_preread_module
--with-stream_realip_module
--with-stream_ssl_module
--with-stream_ssl_preread_module
--without-stream_access_module
- Desactiva el módulo Access
que permite limitar el acceso a ciertas direcciones 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
Correo (Mail)#
--with-mail
, --with-mail=dynamic
- Activa el módulo principal Mail
que admite POP3, IMAP4 y SMTP.#--with-mail_ssl_module
Otras opciones#
--with-cpp_test_module
- Activa el módulo de pruebas CPP. Se utiliza principalmente para desarrollo
y pruebas y no está destinado a uso en producción.#--add-module=
path--add-dynamic-module=
path--with-compat
--with-cc=
path--with-cpp=
path--with-cc-opt=
parametersCFLAGS
.
Al usar la biblioteca PCRE del sistema en FreeBSD,
se debe especificar --with-cc-opt="-I /usr/local/include"
. Si
es necesario aumentar el número de archivos admitidos por select()
,
también puede especificarse aquí, por ejemplo --with-cc-opt="-D
FD_SETSIZE=2048"
.--with-ld-opt=
parameters--with-ld-opt="-L /usr/local/lib"
.--with-cpu-opt=
cpupentium
, pentiumpro
, pentium3
, pentium4
,
athlon
, opteron
, sparc32
, sparc64
,
ppc64
.
Ejemplos#
Compilación simple con HTTPS. Esta configuración básica activa el soporte HTTPS usando SSL/TLS, con las dependencias necesarias (PCRE para expresiones regulares, zlib para compresión y 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
Compilación optimizada para rendimiento. Esta configuración está optimizada para el rendimiento, incluye soporte HTTP/2, compresión estática gzip, JIT para PCRE y E/S asíncrona; también se activan pools de hilos para manejar cargas altas de forma eficiente:
$ ./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 con proxy TCP/UDP. Esta configuración prepara un balanceador de carga para servicios HTTP y no 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
Compilación especializada. Esta configuración incluye HTTPS, HTTP/2, compresión, seguridad y rendimiento mejorados, junto con módulos adicionales para compresión Brotli y gestión de caché, optimizada tanto para proxy HTTP como TCP/UDP:
$ ./configure \
--prefix=/usr/local/angie \ # Directorio de instalación de Angie
--sbin-path=/usr/sbin/angie \ # Ruta al binario de Angie
--conf-path=/etc/angie/angie.conf \ # Ruta al archivo de configuración principal
--pid-path=/run/angie.pid \ # Ruta al archivo PID
--lock-path=/var/lock/angie.lock \ # Ruta al archivo de bloqueo
--error-log-path=/var/log/angie/error.log \ # Ruta al archivo de registro de errores
--http-log-path=/var/log/angie/access.log \ # Ruta al archivo de registro de acceso
--with-http_ssl_module \ # Activa el módulo SSL para HTTPS
--with-http_v2_module \ # Activa soporte HTTP/2 para mejorar el rendimiento
--with-http_realip_module \ # Permite a Angie manejar correctamente cabeceras X-Real-IP y X-Forwarded-For
--with-http_gzip_static_module \ # Sirve archivos .gz precomprimidos para reducir carga de CPU
--with-http_stub_status_module \ # Proporciona una página de estado
--with-threads \ # Activa pools de hilos para mejorar el rendimiento bajo alta carga
--with-file-aio \ # Activa E/S asíncrona
--with-stream \ # Activa funcionalidad de proxy TCP/UDP
--with-stream_ssl_module \ # Añade soporte SSL/TLS para proxy TCP/UDP
--with-pcre=../pcre2-10.40 \ # Especifica la ruta a la biblioteca PCRE para soporte de regex
--with-pcre-jit \ # Activa compilación JIT para PCRE
--with-zlib=../zlib-1.3 \ # Especifica la ruta a la biblioteca zlib para compresión
--with-openssl=../openssl-3.0.8 \ # Especifica la ruta a la biblioteca OpenSSL para SSL/TLS
--with-openssl-opt="enable-ec_nistp_64_gcc_128" \ # Optimiza OpenSSL para curvas NIST de 64 bits
--add-module=../ngx_brotli \ # Añade el módulo de terceros ngx_brotli para soporte de compresión Brotli
--add-dynamic-module=../ngx_cache_purge # Añade el módulo de terceros ngx_cache_purge para gestión de caché