Ir al contenido principal

Configuración de proxy inverso

Esta sección describe cómo integrar Sync-in con un proxy inverso existente.

información

Con la instalación de Docker recomendada, el servidor ya está configurado con el proxy inverso Nginx.
Por lo tanto, esta documentación no se aplica a ese caso de uso.


¿Por qué un proxy inverso?​

Un proxy inverso mejora la seguridad y la conectividad de tu despliegue de Sync-in (NPM o Docker).
Actúa como un escudo entre Internet y el servidor Sync-in, filtrando el tráfico y ocultando la infraestructura interna.
Centraliza la gestión del cifrado HTTPS, lo que garantiza que todas las comunicaciones con Sync-in permanezcan seguras.
Finalmente, simplifica la integración en el entorno de red controlando los flujos e interactuando con otros servicios existentes.

Configuración del servidor Sync-in​

En el archivo de configuración environment.yaml, la sección server define la opción trustProxy, que le dice al servidor hasta qué punto debe confiar en los servidores proxy (por ejemplo, Nginx, Traefik) para determinar la dirección IP real del cliente.

server:
trustProxy: 1 # default value if not specified

Valores posibles​

ValorComportamiento
falseIgnora los encabezados del proxy, usa solo la IP de conexión directa
trueConfía en toda la cadena de proxy
n (por ejemplo, 1)Confía en el n-ésimo proxy de la cadena
IP, CIDRConfía sólo en los proxies especificados
advertencia

Se recomienda la configuración trustProxy: 1 cuando se ejecuta detrás de un proxy inverso (Nginx, Traefik, etc.).
Garantiza que el servidor Sync-in recupere correctamente la dirección IP del cliente y funcione sin errores en un entorno proxy.

Configuración de Nginx​

Se pueden utilizar varios proxies inversos. En esta documentación, la configuración se describe con Nginx, ya que es la solución más común y mejor compatible.

Este archivo de configuración es la referencia recomendada para garantizar el funcionamiento óptimo de las funciones del servidor Sync-in.

⚠️ Las directivas server_name, ssl_certificate, ssl_certificate_key así como la dirección del servidor sync_in:8080 deben adaptarse a su entorno.

# SYNC-IN NGINX VHOST

map $request_uri $xfp {
# This header must be null on webdav uri
# It causes authentication failures with Microsoft-WebDAV-MiniRedir (Windows)
~^/webdav(?:/.*)? "";
default $scheme;
}


map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}

upstream sync_in_server {
server sync_in:8080;
keepalive 32;
}

server {
listen 80;
# listen 443 ssl;
# http2 on;
# server_name domain.com www.domain.com;
# ssl_certificate /etc/ssl/certs/fullchain.pem;
# ssl_certificate_key /etc/ssl/certs/privkey.pem;
# ssl_protocols TLSv1.2 TLSv1.3;
# ssl_session_cache shared:SSL:10m;
# ssl_session_timeout 1h;
# ssl_prefer_server_ciphers on;
# ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';
# ssl_ecdh_curve X25519:prime256v1;

# General settings
charset UTF-8;
server_tokens off;
access_log off;
include mime.types;

# Optimized file sending
sendfile on;
tcp_nodelay on;
tcp_nopush on;

# Buffering for requests proxied to Node
proxy_http_version 1.1;
chunked_transfer_encoding on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $xfp;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_cache_bypass $http_upgrade;
proxy_redirect off;

# Proxy buffering settings
proxy_buffering off; # nginx -> node
proxy_buffers 8 512k;
proxy_buffer_size 512k; # node highWaterMark

# Generous timeouts for long transfers or ws
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
keepalive_timeout 180 90s;

# Clients settings
proxy_request_buffering off; # client -> nginx
large_client_header_buffers 4 16k;
client_max_body_size 0;
client_body_buffer_size 25M;

location / {
proxy_pass http://sync_in_server;
}

location ~* .(ico|jpg|png|gif|jpeg|swf|woff|svg)$ {
# nginx always use the most accurate rule in its internal routing policies
proxy_pass http://sync_in_server;
gzip_static on;
gzip_comp_level 5;
expires 1d;
add_header Cache-Control public;
}

# NOTE: This is only needed when the Collabora Online Docker container is running locally
# and you are not using an external URL.
# Uncomment the line below to enable it:
# include collabora.conf;

# NOTE: This is only needed when the OnlyOffice Docker container is running locally
# and you are not using an external URL.
# Uncomment the line below to enable it:
# include onlyoffice.conf;
}

Configuración de Collabora Online​

En ambos modos, la función Collabora debe estar habilitada en el archivo de configuración environment.yaml:

applications:
files:
collabora:
enabled: true

⚠️ Si implementó Collabora usando Docker y ejecuta Nginx con HTTPS, asegúrese de habilitar terminación SSL.

Modo proxy​

En la configuración de Nginx, descomente la directiva include collabora.conf; para cargar la configuración de Collabora.
En este modo, no es necesario exponer el servidor Collabora directamente a Internet, pero aún así debe ser accesible desde el servidor Sync-in.

Luego, cree el archivo /etc/nginx/collabora.conf e inserte el contenido a continuación.

⚠️ El valor de proxy_pass debe ajustarse según la dirección de tu servidor Collabora.

# Static Files
location ^~ /browser/ {
proxy_pass http://collabora:9980;
proxy_set_header Host $http_host;
}

# WOPI Discovery URL and Capabilities
location ^~ /hosting/ {
proxy_pass http://collabora:9980;
proxy_set_header Host $http_host;
}

# Main WebSocket + Docs Management
location ^~ /cool/ {
proxy_pass http://collabora:9980;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}

Modo externo​

Se debe poder acceder al servidor Collabora tanto desde el servidor Sync-in como desde el navegador (nombre de dominio o dirección IP).
Configure la directiva externalServer en environment.yaml:

applications:
files:
collabora:
enabled: true
externalServer: collabora.my-domain.com

Configuración de OnlyOffice​

En ambos modos, la función OnlyOffice debe estar habilitada en el archivo de configuración environment.yaml:

applications:
files:
onlyoffice:
enabled: true
información

Los parámetros avanzados de OnlyOffice se detallan en la sección Parámetros del servidor.

Modo proxy​

En la configuración de Nginx, descomente la directiva include onlyoffice.conf; para cargar la configuración de OnlyOffice.
En este modo, no es necesario exponer el servidor OnlyOffice directamente a Internet, pero aún así debe ser accesible desde el servidor Sync-in.

Luego, cree el archivo /etc/nginx/onlyoffice.conf e inserte el contenido a continuación.

⚠️ El valor de proxy_pass debe ajustarse según la dirección de su servidor OnlyOffice.

location ^~ /onlyoffice/ {
proxy_pass http://onlyoffice:80/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host/onlyoffice;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_no_cache 1;
proxy_cache_bypass 1;
}

Modo externo​

Se debe poder acceder al servidor OnlyOffice tanto desde el servidor Sync-in como desde el navegador (nombre de dominio o dirección IP).
Configure la directiva externalServer en environment.yaml:

applications:
files:
onlyoffice:
enabled: true
externalServer: onlyoffice.my-domain.com