Saltar al contenido principal

nginx

Con nginx se puede configurar un proxy inverso para que el servidor de ValerIA sea accesible desde internet, usando un certificado de seguridad y con un dominio propio.

Instalación

Para instalar nginx en el servidor correspondiente, deberemos ejecutar el siguiente comando:

instalar nginx
sudo apt-get install nginx
systemctl status nginx

Editar el fichero json de redirección de puertos

editar redicciones
sudo nano /etc/nginx/sites-available/default

Comprobar que los nuevos parámetros están correctos

Comprobar funcionamiento
sudo nginx -t

Reestablecer el servicio

Restart
sudo service nginx restart

Configurando nginx

Para ello deberemos seguir los siguientes pasos:

  1. Instalar nginx en el servidor correspondiente.
  2. Crear un dominio (valeria.midominio.com en los ejemplos), y apuntarlo en los DNS a la IP publica del router.
  3. Indicar al router que redirija el puerto 80 y el 443 al servidor donde se ha instalado el nginx.
  4. Usar Certbot para generar un certificado de seguridad para el dominio.
  5. Modificar el fichero de configuración de nginx llamado /etc/nginx/sites-available/default para que redirija las peticiones al servidor swarm de ValerIA (IP.SW.A.RM en los ejemplos), de la siguiente manera:
editar el fichero /etc/nginx/sites-available/default
    sudo nano /etc/nginx/sites-available/default
crear o editar sección server en /etc/nginx/sites-available/default
...
server {
server_name valeria.midominio.com;
location / {
proxy_pass http://IP.SW.A.RM:3051/;
}
location /v1 {
proxy_pass http://IP.SW.A.RM:5051/v1;
}
location /conductor {
proxy_pass http://IP.SW.A.RM:1881/conductor;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
proxy_set_header Host $host;
}
location /conductor/comms {
proxy_pass http://valeriaws;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
proxy_set_header Host $host;
}

listen [::]:443 ssl; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/valeria.midominio.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/valeria.midominio.com/privkey.pem; # managed by Cert>
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
if ($host = valeria.midominio.com) {
return 301 https://$host$request_uri;
} # managed by Certbot

listen 80;
listen [::]:80;

server_name valeria.midominio.com;
return 404; # managed by Certbot
}
...

Hay que intentar que no acaben las redirecciones en /, ya que si no, en algunas situaciones no funcionan los websockets.

  1. Modificar el fichero de configuración de nginx llamado /etc/nginx/nginx.conf para que dentro de la seccion http, tenga la seccion map y upstream, de la siguiente manera:
editar el fichero /etc/nginx/nginx.conf
    sudo nano /etc/nginx/nginx.conf
editar sección server en /etc/nginx/nginx.conf
...
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server IP.SW.A.RM:1881;
}
...
  1. Para activar conviene comprobar que el comando nginx -t no da errores, y si no los da, reiniciar el servicio con sudo systemctl restart nginx.
comprobar y reiniciar nginx
    sudo nginx -t
sudo service nginx restart