Home Assistant配合Nginx Proxy Manager反向代理实现公网https网页及APP登录。

缘由:家里主要设备均为小米设备,但是还是有部分美的、TCL设备,以及旧手机改造的监控。则想通过Home Assistant统一管理。出于安全及统一管理的需求,所有对外的暴露都套了NPM的反向代理。

https://网址:端口---->
光猫192.168.1.1---->
软路由192.168.1.3:端口(30.30.30.1)--->
NPM:30.30.30.33:端口--->
HA:30.30.30.44:端口

1、HA需要Websockets Support,这个开关打开

2、NPM的对应条目里:Custom Nginx Configurationp配置

location / {
proxy_pass http://HA的内网ip:端口;
# 关键:正确设置 Host 头
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 X-Forwarded-Port $server_port;  

# Websocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

# 超时设置
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}

编辑 HA的配置文件 /config/configuration.yaml 

http:
base_url: https://公网的网址:端口 # 必须与公网访问地址完全一致
use_x_forwarded_for: true
trusted_proxies:
- 30.30.30.33 # NPM 容器 IP
- 192.168.1.0/24 # 局域网网段(可选)