HTTPS y Nginx Proxy Pass
Configuración de virtualhost Nginx
server {
listen 443 ssl;
server_name ha.psc.local;
ssl_certificate /etc/nginx/certs/home-assistant.psc.local.pem;
ssl_certificate_key /etc/nginx/certs/home-assistant.psc.local.key;
location / {
proxy_pass http://10.15.50.11:8123/;
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_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
location /api/websocket {
proxy_pass http://10.15.50.11:8123/api/websocket;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
server {
if ($host = ha.psc.local) {
return 301 https://$host$request_uri;
}
listen 80;
server_name ha.psc.local;
return 404;
}
Compruebe la configuración del nuevo virtualHost con
nginx -t
Si aparece el siguiente error
Siga los pasos indicados en https://futurestud.io/tutorials/nginx-how-to-fix-unknown-connection_upgrade-variable, añadiendo la configuración a nginx.conf
.
Compruebe de nuevo
nginx -t
Ya no debería salir el error, deberá indicar que la configuración es correcta.
systemctl reload nginx
Sin embargo al acceder a la web mediante el proxy pass HTTPS, encontrará el siguiente error.
400: Bad Request
Si accede al apartado de logs mediante la conexión HTTP, encontrará el error indicando que no se ha definido un proxy autorizado.
Mediante la consola donde está instalado el contenedor, acceda al fichero config/configuration.yaml
Editelo y añada las siguientes lineas de configuración
http:
use_x_forwarded_for: true
trusted_proxies: IP_PROXY_1, IP_PROXY_2
Ejecute el reinicio del docker
docker restart homeassistant
Compruebe que ya puede acceder correctamente desde el proxy-pass.
En caso de que le aparezca el siguiente mensaje, si inspecciona la consola, podrá ver el siguiente error
Compruebe que ha copiado correctamente en la definición del virtualhost el bloque location /api/websocket
. Recuerde reiniciar el servicio nginx para que tenga en cuenta los cambios.