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:
- Instalar
nginx
en el servidor correspondiente. - Crear un dominio (valeria.midominio.com en los ejemplos), y apuntarlo en los DNS a la IP publica del router.
- Indicar al router que redirija el puerto 80 y el 443 al servidor donde se ha instalado el
nginx
. - Usar
Certbot
para generar un certificado de seguridad para el dominio. - 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.
- 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;
}
...
- 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