Hace un tiempo atras empecé a interiorizarme en el manejo de Web Sockets, para lo cual realizé un chat de pruebas, para lo cual necesité configurar Nginx para que se ocupe de realizar la redirección de puertos y la utilización de certificados SSL.
Bueno, el primer paso será obtener los certificados SSL, para lo cual usé Let’s Encript, luego se necesita crear el archivo de configuración correspondiente en: /etc/nginx/sites-available.
En este caso el archivo que cree se denomina chat-ws.greenborn.com.ar, con el siguiente contenido:
server {
listen PUERTO_ESCUCHA;
ssl on;
server_name DOMINIO;
ssl_certificate PATH_CERTIFICADO/fullchain.pem; # managed by Certbot
ssl_certificate_key PATH_CERTIFICADO/privkey.pem; # managed by Certbot
include PATH_LETS_ENCRIPT/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam PATH_LETS_ENCRIPT/ssl-dhparams.pem; # managed by Certbot
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass "http://127.0.0.1:PUERTO_INTERNO";
}
}
Claramente en el mismo se debe reemplazar:
- PUERTO_ESCUCHA: Especificando el puerto que se usará publicamente para la conexion con el Web Socket
- DOMINIO: El dominio asignado a la APP
- PATH_CERTIFICADO: Ubicación del certificado SSL
- PATH_LETS_ENCRIPT: Ubicación de la instalación de Lets Encript
- PUERTO_INTERNO: Es el puerto que la APP estará escuchando
Luego será necesario crear el enlace simbólico del archivo de configuración, por ej con:
ln -s /etc/nginx/sites-available/archivo_config /etc/nginx/sites-enabled/archivo_config
Y reiniciar el servicio de Nginx
sudo service nginx restart
Con eso ya sería todo.
Una forma de comprobar el funcionamiento podría ser usar una extensión del navegador como simple-websocket-client, disponible tanto para Firefox como para Chrome: https://addons.mozilla.org/en-US/firefox/addon/simple-websocket-client/ o https://chrome.google.com/webstore/detail/simple-websocket-client/pfdhoblngboilpfeibdedpjgfnlcodoo