Skip to content
Esta página se tradujo con IA y puede contener imprecisiones. Ayuda a mejorarla en GitHub.

Servicios web ​

Sirve proxy inverso, redirecciones, archivos estáticos y texto fijo por dominio. Es el punto de entrada web unificado de Gately. Ubicación en el menú: barra lateral «Web → Servicios web».

Estructura: listeners, sitios y sitio por defecto ​

La configuración tiene tres niveles:

  1. Listener: un puerto de escucha. Sus campos incluyen la red (tcp doble pila, tcp4, tcp6), la dirección de escucha (vacía para todas las direcciones), el puerto, el interruptor de HTTPS, la versión mínima de TLS (1.0 / 1.1 / 1.2 / 1.3) y si acepta el protocolo PROXY.
  2. Sitio: un sitio dentro de un listener, que se selecciona por dominio. Los dominios pueden ser un dominio exacto, *.example.com (coincide con subdominios de cualquier profundidad) o * (coincide con todo). La prioridad de coincidencia es dominio exacto, comodín y después *.
  3. Sitio por defecto: se usa cuando ningún sitio coincide. Si no está activado, se devuelve un 404.

Al guardar un cambio en un sitio o en el sitio por defecto, la lista de sitios se sustituye en caliente: el listener sigue funcionando, las conexiones abiertas (incluido WebSocket) se mantienen y cada sitio conserva sus estadísticas. Si la nueva configuración no es válida, los sitios anteriores siguen sirviendo. Cambiar los ajustes propios del listener (red, dirección, puerto, HTTPS, TLS mínimo, HTTP/3, protocolo PROXY) reinicia ese listener.

Tipos de sitio ​

TipoDescripción
Proxy inversoReenvía a uno o varios backends. Las direcciones de backend tienen la forma http(s)://host:port y se admite WebSocket
RedirecciónRedirige a una URL completa con código de estado 301 / 302 / 307 / 308 (por defecto 302), conservando opcionalmente la ruta y la cadena de consulta originales. La URL puede contener {host}, que se sustituye por el dominio que usó el visitante: https://{host} con «Conservar ruta y consulta» envía todas las peticiones HTTP a HTTPS en el mismo dominio
Archivos estáticosEl directorio debe ser una ruta absoluta. Con «Listado de directorios» desactivado, una petición a un directorio solo devuelve respuesta si existe index.html. «URL sin extensión» prueba ruta.html y ruta/index.html cuando falta un archivo (para VitePress y generadores similares, como try_files $uri $uri.html $uri/index.html de nginx). «Página 404» es una ruta dentro del directorio, como 404.html, que se devuelve con estado 404
Texto fijoContenido personalizado, Content-Type (por defecto text/plain; charset=utf-8) y código de estado (100-599, por defecto 200)

Otras opciones de los sitios de proxy inverso:

  • Usar el Host del backend: la cabecera Host se cambia a la dirección del backend; si está desactivado, se conserva el Host de la petición del cliente;
  • Omitir la verificación del certificado del backend, desactivar Keep-Alive;
  • Enviar el protocolo PROXY al backend (cabecera v2, transmite la IP real del cliente, requiere compatibilidad del backend);
  • Añadir X-Forwarded-For / X-Forwarded-Proto / X-Forwarded-Host / X-Forwarded-Port y X-Real-IP;
  • Usar el dominio visitado como SNI (solo backends HTTPS): el handshake lleva el dominio que usó el visitante y el certificado se verifica con él, como proxy_ssl_server_name on; proxy_ssl_name $host de nginx. Actívalo cuando el backend enrute por SNI, por ejemplo vhost_https de frp. Cada backend tiene su propio pool de conexiones, así que las conexiones nunca se reutilizan entre dominios.

Los sitios de cualquier tipo pueden definir un registro de acceso, orígenes cruzados (CORS), cabeceras de petición y respuesta personalizadas (un Clave: Valor por línea; un Valor vacío elimina esa cabecera) y pueden hacer referencia a una instancia de Cortafuegos WAF (si la instancia no existe o está desactivada, las peticiones pasan sin filtrar).

Transporte y protocolos ​

  • HTTPS: usa un certificado del módulo Certificados SSL que cubra el dominio;
  • HTTP/3 (QUIC): actívalo en un listener con HTTPS para servir también HTTP/3 por UDP en el mismo número de puerto; se anuncia al navegador con la cabecera de respuesta Alt-Svc. Hay que permitir ese puerto UDP en el cortafuegos y en el reenvío de puertos;
  • WebSocket: el proxy inverso lo admite automáticamente;
  • Protocolo PROXY: un listener puede aceptar cabeceras PROXY enviadas por componentes situados antes (como haproxy y frp). Solo confía en las IP o subredes indicadas en «Ajustes globales → Orígenes PROXY de confianza»; si se deja vacío, no confía en ningún origen. El proxy inverso puede enviar cabeceras PROXY al backend.

Autenticación ​

Se configura en la página «Seguridad» del editor del sitio:

  • Autenticación web: el navegador muestra una página de inicio de sesión;
  • Autenticación básica: HTTP Basic;
  • Usuarios: un usuario:contraseña por línea, y la contraseña puede ser un hash bcrypt. La autenticación básica necesita al menos un usuario cuando está activada; la autenticación web necesita al menos un usuario o una identidad de inicio de sesión de terceros cuando está activada;
  • Inicio de sesión de terceros: se admiten GitHub, Google, QQ y OIDC, con tus propias aplicaciones OAuth. Las identidades permitidas se escriben una por línea con la forma proveedor:cuenta, por ejemplo github:octocat y google:me@gmail.com. Un # al final de una línea añade un comentario, y github:* significa cualquier cuenta de ese proveedor.

Los proveedores de inicio de sesión de terceros se configuran en «Ajustes globales»: introduce tu propio Client ID / Secret, activa el proveedor y define también una dirección de callback (debe ser atendida por uno de los listeners de Gately, por ejemplo https://auth.example.com). La URL de callback que debes registrar en GitHub / Google / QQ es:

text
https://auth.example.com/__gately_auth/oauth/callback

El inicio de sesión de terceros de la propia interfaz de administración se configura por separado en «Ajustes → Cuenta y seguridad».

Autenticación delegada (Authelia y similares) ​

Delega la autenticación en un servicio externo, como auth_request de nginx o forwardAuth de Traefik. Marca «Autenticación delegada» en la página «Seguridad». No se puede combinar con la autenticación básica o web en el mismo sitio.

CampoDescripción
urlEl endpoint de comprobación, como el de Authelia, http://127.0.0.1:9091/api/authz/auth-request
loginUrlAdónde enviar a los visitantes cuando el endpoint responde 401, como https://auth.example.com/?rd={url}&rm={method}. {url} es la dirección original (codificada como URL) y {method} el método de la petición. Si está vacío, se devuelve tal cual la respuesta del endpoint
copyHeadersCabeceras de identidad que se copian de la respuesta del endpoint a la petición al backend; por defecto son Remote-User, Remote-Groups, Remote-Email y Remote-Name

Cómo funciona:

  • Cada petición va primero a url como un GET sin cuerpo, con las cabeceras del visitante (cookies, Authorization, etc.) más X-Original-Method, X-Original-URL, X-Forwarded-Method, X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-Uri, X-Forwarded-For y X-Real-Ip. El tiempo de espera es de 10 segundos;
  • Una respuesta 2xx deja pasar la petición, con las cabeceras de identidad añadidas; un 401 redirige a loginUrl (estado 302); otras respuestas, como 403 o una redirección, se devuelven al visitante; un servicio inalcanzable produce 502;
  • Las cabeceras de identidad enviadas por los visitantes se eliminan siempre, por lo que no se pueden falsificar;
  • Funciona con las reglas por ruta y el «Ámbito de autenticación», de modo que solo algunas rutas (por ejemplo /admin) requieran inicio de sesión, y con los enlaces temporales para compartir.

Usuarios compartidos: TOTP e inicio de sesión único ​

Define las cuentas una sola vez y úsalas en varios sitios, con verificación en dos pasos TOTP opcional. Cubre lo que muchas personas buscan al ejecutar Authelia.

En «Ajustes globales → Usuarios compartidos»:

  • Añade usuarios con un nombre de usuario y una contraseña. Las contraseñas se guardan como hashes bcrypt y la API nunca las devuelve. Para añadir TOTP, pulsa «Activar TOTP», escanea el código QR con una app de autenticación (Google Authenticator, 1Password, etc.) y guarda. Regenerar la clave invalida la anterior;
  • Dominio de SSO, como example.com: tras iniciar sesión en cualquier sitio de ese dominio o de sus subdominios, los demás sitios no piden volver a iniciar sesión. Usa una cookie de dominio padre (gately_sso, válida durante 7 días) que nunca se reenvía a los backends. Déjalo vacío para iniciar sesión en cada sitio por separado.

En un sitio, marca «Usar usuarios compartidos» junto a la autenticación web o básica. Los usuarios propios del sitio siguen funcionando también.

Comportamiento:

  • La página de inicio de sesión muestra un campo de código de verificación cuando algún usuario compartido tiene TOTP. Cada código sirve una sola vez;
  • Cambiar la contraseña o la clave TOTP de un usuario cierra las sesiones de ese usuario;
  • La autenticación básica solo acepta usuarios compartidos sin TOTP, porque el aviso de contraseña del navegador no tiene dónde introducir un código;
  • Los intentos fallidos cuentan para el mismo límite de intentos y bloqueo automático que los demás inicios de sesión.

Control de acceso ​

Listas de IP permitidas y bloqueadas ​

El «Control de acceso por IP» de la página «Seguridad» del sitio puede estar desactivado, en modo lista de permitidas o en modo lista de bloqueadas. La lista admite una IP o subred por línea (como 192.168.1.0/24) y además puede hacer referencia a listas de IP suscritas.

Listas de IP suscritas ​

Añade listas en «Ajustes globales → Listas de IP suscritas»: indica la URL de descarga y el intervalo de actualización (24 horas por defecto). Gately las descarga periódicamente y las guarda en caché en el directorio de configuración, de modo que tras un reinicio se pueden usar sin conexión a Internet. El contenido admite una IP, un CIDR o un rango inicio-fin por línea; lo que va detrás de #, ; o // es un comentario. Por ejemplo, para los rangos de IP de provincias y ciudades chinas puedes usar https://metowolf.github.io/iplist/data/cncity/440000.txt (provincia de Guangdong) de metowolf/iplist.

  • Las listas de IP permitidas y bloqueadas de los sitios y de las reglas por ruta pueden hacer referencia a varias listas, que se comprueban junto con los rangos escritos a mano; coincidir con cualquiera cuenta como estar en la lista;
  • Si el contenido descargado no se puede analizar (por ejemplo, se recibe una página de error), se conserva la lista anterior, se muestra el motivo en la lista y se reintenta al cabo de una hora;
  • Hasta que la lista se descarga correctamente cuenta como vacía: una lista de IP permitidas deniega por tanto el acceso y una lista de IP bloqueadas no bloquea nada adicional;
  • Una lista a la que todavía hace referencia algún sitio no se puede eliminar.

Reglas por ruta ​

En «Reglas por ruta», dentro de la página «Seguridad», sobrescribe la autenticación y la configuración de IP del sitio según el prefijo de ruta:

CampoValores
prefixUn prefijo de ruta que empieza por /, como /admin
authHeredar del sitio (vacío), off (sin autenticación), on (autenticación obligatoria)
ipMode / ipListHeredar del sitio (vacío), whitelist o blacklist, con una lista de IP o subredes

Reglas de coincidencia:

  • Gana el prefijo más largo;
  • La coincidencia respeta los límites de segmento de ruta: /admin coincide con /admin y /admin/x, pero no con /administrator;
  • La ruta de la petición se normaliza primero (se eliminan ., .. y las barras duplicadas) y después se compara, así que /public/../admin se trata como /admin;
  • Solo se puede configurar una regla para el mismo prefijo.

La opción «Ámbito de autenticación» (authOptional): cuando está marcada, la autenticación solo se aplica a las rutas marcadas como «Obligatoria» en las reglas, y el resto de rutas son públicas. Esta opción requiere activar antes la autenticación básica o web.

Enlaces temporales para compartir ​

Cuando la autenticación básica o web está activada, puedes crear enlaces para compartir de un sitio, de modo que los visitantes accedan sin cuenta:

CampoDescripción
NombreUna etiqueta, como «Para Alice»
CaducidadVacío para que no caduque
Usos maxUsesNúmero máximo de veces que se puede canjear el enlace; 0 significa sin límite. El contador se reinicia tras un reinicio
Límite de ruta pathPrefixSi no está vacío, el enlace solo puede acceder a las rutas bajo este prefijo; debe empezar por /

Un visitante abre https://dominio/cualquier-ruta?_gs=token para canjear una sesión. Tras un canje correcto, el servidor establece una cookie de acceso sin inicio de sesión y redirige a la dirección sin el parámetro _gs. La sesión dura como máximo 24 horas y nunca más allá de la caducidad del enlace. Un token no válido se trata como una visita normal y no revela el motivo del fallo. Las sesiones ya emitidas dejan de ser válidas de inmediato al eliminar el enlace. El token se genera al guardar (de al menos 16 caracteres) y el enlace completo se puede copiar desde la interfaz.

Límite de intentos de autenticación y bloqueo automático ​

  • Tras 10 autenticaciones fallidas desde la misma IP de origen en 15 minutos, los intentos posteriores se rechazan durante un tiempo;
  • En «Ajustes globales → Bloqueo automático → Bloquear por fallos de autenticación», introduce un número de minutos (de 0 a 43200); la IP de origen se bloquea al llegar a 10 fallos. 0 significa sin bloqueo, solo limitación de intentos;
  • Cuando se activa un bloqueo automático se publica un evento AuthBanned, que se puede enviar por el Centro de notificaciones;
  • Las direcciones IPv6 se cuentan y se bloquean por subred /64.

Lista de bloqueos ​

La lista de bloqueos de «Ajustes globales» muestra las IP bloqueadas actualmente, el motivo (fallos de autenticación repetidos o bloqueo manual) y la hora de expiración, y cada entrada se puede levantar con «Desbloquear». También puedes bloquear manualmente: introduce una IP y un número de horas (de 1 a 720, es decir, 30 días como máximo); la API usa 24 horas por defecto.

La lista de bloqueos se comparte con Prevención de intrusiones: con el módulo activado, aquí solo se muestra el número de bloqueos y un enlace a su página para gestionarlos. Los bloqueos también afectan al reenvío de puertos, STUN y otros servicios, y se descartan en el cortafuegos del sistema si la sincronización está activada; con «Ignorar direcciones de la LAN» activado, esas direcciones nunca se bloquean automáticamente.

Filtro de países con GeoIP ​

El «Filtro de países» de un sitio tiene tres modos: desactivado, permitir solo y denegar. Introduce códigos de país ISO de dos letras separados por comas, como CN, HK, US. Cuando está activado se requiere al menos un país.

  • El filtrado depende de una base de datos GeoIP, que debes importar antes en «Ajustes globales → Base de datos GeoIP»: sube un archivo .mmdb o introduce una URL de descarga. Se admiten MaxMind GeoLite2, DB-IP y otras bases de datos de países o ciudades; el límite de subida es de 129 MB;
  • Si no hay ninguna base de datos cargada, el filtrado no tiene efecto (todos los visitantes pasan) y la interfaz muestra un aviso;
  • Las direcciones de redes privadas siempre se permiten;
  • En el modo «Denegar», se permiten las direcciones cuyo país no se encuentra en la base de datos.

Backends por ruta ​

Para un sitio de proxy inverso, envía las peticiones bajo un prefijo de ruta a otros backends, como location /api/ { proxy_pass ...; } de nginx. Añádelos en «Backends por ruta», en la página «Básico» del editor del sitio.

CampoDescripción
prefixUn prefijo de ruta como /api/. La coincidencia respeta los límites de segmento de ruta: /api y /api/ coinciden ambos con /api y /api/x, pero no con /apix
targetsLos backends de esta ruta, escritos como los backends del sitio. Si está vacío, se usan los del sitio y solo se añaden las cabeceras siguientes
requestHeadersCabeceras de petición añadidas para esta ruta, una Clave: Valor por línea. Se aplican después de las del sitio, y una cabecera con el mismo nombre sustituye a la del sitio
  • Gana el prefijo más largo y la ruta se reenvía sin cambios (el prefijo no se elimina);
  • Los demás ajustes del sitio, como la opción de Host, las comprobaciones de certificado, las cabeceras reenviadas, el protocolo PROXY, la política de balanceo de carga y las comprobaciones de estado, se aplican a todos los backends por ruta;
  • La compresión, el límite de peticiones, la caché y las reescrituras se aplican a todo el sitio.

Mejoras del proxy inverso ​

Estas opciones están en la página «Tráfico» del editor del sitio.

Backends, peso y reserva ​

La lista de backends admite una dirección por línea, seguida opcionalmente de parámetros:

text
http://10.0.0.2:8080 weight=3
http://10.0.0.3:8080 backup
  • weight=N: peso, un entero de 1 a 100, por defecto 1;
  • backup: un backend de reserva que solo se usa cuando todos los backends que no son de reserva no están disponibles. Cuando todos los backends no están disponibles, se vuelven a probar los que no son de reserva.

Política de balanceo de carga ​

Opción de la interfazlbPolicyDescripción
Round robin (ponderado)VacíoPor defecto
Aleatorio (ponderado)random
Hash de IP (sesiones persistentes)ip_hashLa misma IP de cliente siempre va al mismo backend
Menos conexionesleast_connElige el menor valor de conexiones / peso

Comprobaciones de estado ​

El interruptor de comprobación activa está desactivado por defecto. Campos y valores por defecto una vez activado:

CampoPor defectoRango
Modo modehttphttp (solicita la ruta de comprobación; un código de estado inferior a 400 cuenta como saludable) o tcp (solo prueba la conexión)
Ruta path/Empieza por /, solo en modo http
Intervalo interval10 segundosDe 1 a 3600
Tiempo de espera timeout3 segundosDe 1 a 60
Fallos consecutivos fails3 fallos lo marcan como no disponibleDe 1 a 20
Éxitos consecutivos passes2 éxitos lo recuperanDe 1 a 20

Si está activado el envío del protocolo PROXY al backend, las comprobaciones HTTP cambian automáticamente a TCP.

Las comprobaciones pasivas siempre están activas: entre varios backends, uno con 3 fallos de conexión consecutivos se pausa durante 30 segundos antes de volver a sondearlo (un backend único sin comprobación activa nunca se retira). Una vez activadas las comprobaciones activas, la recuperación se decide por completo según sus resultados. Cuando cambia el estado de un backend, se publican los eventos de backend caído y backend recuperado, que se pueden enviar por el Centro de notificaciones.

Compresión ​

La compresión se puede activar en los sitios de proxy inverso, archivos estáticos y texto fijo (no en los de redirección). Según Accept-Encoding, se prefiere br y después gzip.

  • Solo se comprime el contenido de tipo texto: text/*, JSON, JavaScript, XML, XHTML, RSS / Atom, WebAssembly y SVG; se excluye text/event-stream;
  • Las respuestas cuyo Content-Length declarado es inferior a 256 bytes se dejan tal cual;
  • Las respuestas que ya tienen un Content-Encoding se dejan tal cual; las peticiones de actualización a WebSocket pasan directamente;
  • Tras la compresión, los ETag fuertes se convierten en ETag débiles.

Límite de peticiones por IP ​

Limitación de peticiones con token bucket por IP de cliente. Campos:

CampoDescripción
ratePeticiones permitidas por segundo
burstCapacidad de ráfaga. Cuando se define rate y burst es 0, por defecto vale rate redondeado hacia abajo más 1
maxConnsMáximo de peticiones simultáneas por IP; 0 significa sin límite

Cuando el límite de peticiones está activado, se debe definir al menos uno de rate y maxConns.

Caché de respuestas en memoria ​

Se aplica solo a los sitios de proxy inverso. La caché vive en memoria y usa expulsión LRU.

CampoPor defectoRango
Duración por defecto ttl0De 0 a 30 días (en segundos). Cuando el origen no declara ninguna directiva de caché, las respuestas 200 se almacenan durante este tiempo; 0 significa que solo se almacenan las respuestas que el origen permite explícitamente
Capacidad de la caché maxMb64De 1 a 4096 MB

Reglas de caché:

  • Solo se almacenan las peticiones GET, y la petición no debe contener las cabeceras Authorization, Cookie ni Range, ni Cache-Control: no-cache;
  • Solo se almacenan las respuestas con estado 200; se omite una respuesta si contiene Set-Cookie, Vary: * o un Cache-Control con no-store / private / no-cache;
  • Se respeta primero s-maxage y después max-age;
  • Una entrada individual está limitada a 4 MB y también a un máximo de una cuarta parte de la capacidad total;
  • Un acierto devuelve las cabeceras X-Cache: HIT y Age, y un fallo devuelve X-Cache: MISS;
  • La clave de caché incluye el Host, la URI completa de la petición y Accept-Encoding.

Reescritura y redirección de rutas ​

Las reglas se evalúan en orden y la evaluación se detiene en la primera coincidencia.

CampoDescripción
patternUna expresión regular que se compara con la ruta de la petición, como ^/old/(.*)$
toEl resultado de la sustitución; usa $1 para referirte a los grupos
redirectDesactivado para una reescritura interna (la ruta reescrita se envía al backend y el destino debe empezar por /); activado para una redirección
codeCódigo de estado de la redirección 301 / 302 / 307 / 308, por defecto 302

Las redirecciones conservan los parámetros de consulta originales. El destino de una redirección puede contener {host}, el dominio que usó el visitante. Las reglas de redirección se ejecutan antes de la autenticación, como location = / { return 302 ...; } de nginx, de modo que una ruta como / puede enviar a los visitantes a otro sitio sin pedirles que inicien sesión.

Estadísticas de acceso y monitorización ​

Estadísticas del sitio ​

En un listener en ejecución, pulsa «Estadísticas» en la fila de un sitio para abrir la ventana de estadísticas, donde puedes elegir la última hora, las últimas 6 horas o las últimas 24 horas:

  • Estadísticas de acceso por minuto: un punto por minuto, conservadas durante las últimas 24 horas, con una curva de número de peticiones y curvas de errores 4xx / 5xx;
  • Distribución de códigos de estado (2xx / 3xx / 4xx / 5xx) y tráfico de respuesta acumulado;
  • Las 10 IP de origen y los 10 países principales (las estadísticas por país requieren una base de datos GeoIP importada);
  • Los sitios de proxy inverso muestran el estado de salud, el peso, la marca de reserva y el número actual de conexiones de cada backend.

Las estadísticas se guardan en memoria y vuelven a empezar a contarse tras un reinicio o tras cambiar los ajustes propios del listener. Editar un sitio conserva sus contadores. Las clasificaciones siguen como máximo 5000 orígenes distintos.

Métricas de Prometheus ​

El endpoint global GET /api/metrics reúne las métricas de todos los módulos; consulta Métricas de monitorización. El endpoint del módulo que se describe a continuación solo incluye las métricas de los servicios web.

El endpoint de métricas es GET /api/webservice/metrics, en formato de texto de Prometheus, y requiere credenciales de inicio de sesión o un token de API.

bash
curl -H "Authorization: Bearer gtl_xxxx" http://localhost:16680/api/webservice/metrics
MétricaTipoDescripción
gately_site_requests_totalcounterPeticiones acumuladas de un sitio
gately_site_errors_totalcounterErrores de backend de un sitio
gately_site_active_requestsgaugePeticiones en curso
gately_site_response_bytes_totalcounterBytes de respuesta acumulados
gately_site_responses_totalcounterRespuestas contadas por clase de estado (etiqueta class: de 2xx a 5xx)
gately_upstream_upgaugeSi un backend está saludable: 1 saludable, 0 no disponible (con la etiqueta upstream)

Todas las métricas llevan las etiquetas listener (nombre del listener#clave del listener) y site (nombre del sitio o, si no tiene, el primer dominio).

Importar configuración de nginx ​

El botón «Importar nginx» de la parte superior de la página convierte sitios de nginx existentes en listeners y sitios de Gately. Se recomienda ejecutar nginx -T en el host de nginx y pegar la salida completa: incluye todos los archivos de include, y Gately los expande igual que nginx.

  • Primero la vista previa: agrupados por puerto de escucha, se muestran el tipo de cada sitio, su backend o directorio, el archivo de origen y el número de línea, y los puntos a revisar (directivas que usan variables, location con expresiones regulares, dominios sin certificado, etc.); para los sitios que no se pueden convertir se indica el motivo;
  • Los sitios de un mismo puerto se añaden al listener existente o, si no hay ninguno, se crea un listener nuevo; los dominios que ya existen se omiten, así que se puede importar varias veces;
  • Por defecto se importan desactivados, para revisarlos uno a uno en paralelo con nginx antes de activarlos; con «Activar tras importar» marcado se aplican de inmediato (si nginx sigue ocupando el mismo puerto, el listener nuevo no podrá iniciarse);
  • Se convierten: proxy_pass (incluidos el peso, la reserva y la política de balanceo de carga de upstream), directorios estáticos root / alias (autoindex, try_files $uri.html, error_page 404), redirecciones y contenido fijo con return, redirecciones rewrite de todo el sitio, add_header, proxy_set_header, gzip, allow / deny, backends por ruta, control de acceso y redirecciones a nivel de location, y listen ... proxy_protocol y quic;
  • auth_request se convierte en autenticación delegada: el endpoint de autenticación se toma del proxy_pass de la location de la subpetición de autenticación (admite variables con set) y la redirección de inicio de sesión de error_page 401 =302, por lo que la configuración habitual de Authelia se convierte directamente; si solo está activado en algunas location, se convierte en un «Ámbito de autenticación» limitado a esas rutas;
  • auth_basic se convierte en autenticación básica con usuarios compartidos; el archivo de usuarios de nginx no se lee, así que nadie podrá pasar hasta que añadas los usuarios;
  • El reenvío TCP/UDP de stream se configura en Reenvío de puertos. Los certificados no se importan: si a un sitio HTTPS le falta el certificado, la vista previa muestra los archivos de certificado que usa nginx, y puedes añadirlos por ruta de archivo en la página de Certificados.

Sustituir haproxy y nginx ​

El reenvío de puertos y los servicios web juntos pueden sustituir la pareja haproxy + nginx. Una disposición habitual es una regla de enrutamiento SNI en el puerto 443 que envía la VPN y otros servicios TLS directamente a sus backends y todo lo demás a un listener de servicios web que acepta el protocolo PROXY, más un listener de servicios web en el puerto 80 con un sitio de redirección (https://{host}).

Conversión de ajustes de nginx:

nginxGately
server con server_nameun sitio con esos dominios
location con otro proxy_passbackends por ruta
auth_request (Authelia)autenticación delegada, o usuarios compartidos con TOTP
proxy_ssl_name $hostusar el dominio visitado como SNI
return 301 https://$host$request_uriun sitio de redirección con https://{host} y «Conservar ruta y consulta»
return 302 /admin en location = /una reescritura con «Redirección» activada y patrón ^/$
try_files $uri $uri.html $uri/index.html y error_page 404archivos estáticos con URL sin extensión y página 404
add_headercabeceras de respuesta

Consejo de despliegue ​

Los servicios web necesitan escuchar en puertos del host como el 80 / 443. En despliegues con Docker se recomienda --network host.

Publicado bajo la licencia Apache-2.0.