-
Notifications
You must be signed in to change notification settings - Fork 1
Reverse proxy y TLS
El servidor escucha en HTTP plano en el puerto 5080 de la máquina. Para uso interno en LAN puede valer. Para acceso externo (teletrabajo, varias delegaciones) no: el tráfico va sin cifrar y tu navegador te marcará el sitio como inseguro.
Lo recomendable es ponerle delante un reverse proxy (Apache o nginx) que:
- Termine TLS con un certificado válido (Let's Encrypt, gratis).
- Sirva el chat en un dominio bonito (
chat.tuempresa.com). - Soporte WebSocket (SignalR del chat lo necesita; si no, cae a long-polling: funciona pero peor latencia).
Si tu VPS tiene Plesk, abre la extensión EnterpriseChat → tab Dominios, elige un subdominio existente o crea uno nuevo, y la extensión escribe el reverse proxy Apache por ti. Ver Instalación Plesk.
Si no tienes Plesk, sigue leyendo.
Apache viene de fábrica en casi cualquier Plesk/cPanel/manual. Requisitos:
- Apache 2.4+.
- Módulos:
proxy,proxy_http,proxy_wstunnel,rewrite,headers. Comprueba:Si falta alguno:for m in proxy proxy_http proxy_wstunnel rewrite headers; do a2query -m $m done
sudo a2enmod proxy proxy_http proxy_wstunnel rewrite headers && sudo systemctl reload apache2.
Pega esto en el bloque <VirtualHost *:443> del subdominio
chat.tuempresa.com (/etc/apache2/sites-available/chat.tuempresa.com.conf
o lo que use tu setup):
ProxyPreserveHost On
ProxyRequests Off
# WebSocket upgrade (SignalR) — debe ir ANTES del ProxyPass general.
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:5080/$1 [P,L]
ProxyPass / http://127.0.0.1:5080/ retry=0 timeout=3600 connectiontimeout=5
ProxyPassReverse / http://127.0.0.1:5080/
RequestHeader set X-Forwarded-Proto "https" env=HTTPSRecarga:
sudo apachectl -t && sudo systemctl reload apache2Verifica:
curl -kI https://chat.tuempresa.com/healthz
# Debe devolver 200 OK con Server: Kestrel (o Apache, según versión).Si nginx está delante de Apache (típico en Plesk con nginx activado), pega esto como Additional nginx directives del subdominio:
location ~ "^/" {
proxy_pass http://127.0.0.1:5080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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-Proto $scheme;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_buffering off;
}Importante:
location ~ "^/"(regex) en lugar delocation /(prefix) evita el errornginx: [emerg] duplicate location "/"cuando Plesk ya tiene unlocation /propio en la plantilla del vhost.
Verifica:
sudo nginx -t && sudo systemctl reload nginx
curl -kI https://chat.tuempresa.com/healthzSi gestionas con Plesk: tu subdominio ya tiene el botón "Let's Encrypt" en el panel. Click y listo.
Si gestionas a mano:
sudo apt-get install -y certbot python3-certbot-apache # o -nginx
sudo certbot --apache -d chat.tuempresa.com # o --nginxRenovación automática:
sudo systemctl status certbot.timerPara que http://chat.tuempresa.com redirija a https://:
<VirtualHost *:80>
ServerName chat.tuempresa.com
Redirect permanent / https://chat.tuempresa.com/
</VirtualHost>server {
listen 80;
server_name chat.tuempresa.com;
return 301 https://$server_name$request_uri;
}Plesk te activa esto con un checkbox en Apache & nginx Settings → Permanent SEO-safe 301 redirect.
En el cliente WPF, URL del servidor = https://chat.tuempresa.com
(sin :5080, sin http://). El cliente detecta automáticamente que es
HTTPS y usa wss:// para el WebSocket.
| Síntoma | Causa típica |
|---|---|
| 502 Bad Gateway | El servicio no está corriendo. systemctl status enterprisechat. |
| Página Plesk en vez del chat | Reverse proxy no aplicado o nginx/Apache no recargados. |
| Chat carga pero "Reconectando…" sin parar | Falta soporte WebSocket. Revisa que proxy_wstunnel (Apache) o proxy_set_header Upgrade $http_upgrade (nginx) están aplicados. |
| Certificado inválido | Let's Encrypt expiró o no llegaste a emitirlo. |
Más en Solución de problemas.
EnterpriseChat · Open source AGPLv3 / comercial · enterprisechat.es · soporte@enterprisechat.es