使用宝塔反向代里HomeAssistant并添加SSL
在宝塔设置反向代理后直接访问报错:400: Bad Request
Home-Assistant使用反向代理要设置白名单,不然会拦截。
设置白名单后能正常访问,但无法登录,登录会弹出:Unable to connect to Home Assistant.
Home-Assistant要用到websocket,而宝塔默认的反代配置文件没有添加websocket支持。
找错误中一些巧合
在查第一个400: Bad Request报错原因时,看到一个回答是说因为反代配置加了websocket支持才报错,删掉就不报错了。
而这个和我第二个问题撞上了,很是巧合。
如果当时看到那个回答反其道而行之加上去,说不定早就解决了。
正式笔记宝塔方面操作添加SSL支持
设置里复制证书文件添加就行,略。
添加反代
目标URL:http://[域名]:8123
发送域名:域名
添加如下代码:
proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400;
这时添加前的:
#PROXY-START/ location ~* \.(gif|png|jpg|css|js|woff|woff2)$ { proxy_pass https://hass.xxx.cn:8123; proxy_set_header Host hass.xxx.cn; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; expires 12h; } location / { proxy_pass https://hass.xxx.cn:8123; proxy_set_header Host hass.xxx.cn; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; add_header X-Cache $upstream_cache_status; #Set Nginx Cache add_header Cache-Control no-cache; } #PROXY-END/
这是添加后的:
#PROXY-START/ location ~* \.(gif|png|jpg|css|js|woff|woff2)$ { proxy_pass https://hass.xxx.cn:8123; proxy_set_header Host hass.xxx.cn; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; expires 12h; } location / { proxy_pass https://hass.xxx.cn:8123; proxy_set_header Host hass.xxx.cn; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; add_header X-Cache $upstream_cache_status; #Set Nginx Cache add_header Cache-Control no-cache; } #PROXY-END/
Home-Assistant方面的设置获取反向代理源IP
直接访问https://[域名]或者http://[域名]
用ip或者http://[域名]:8123登录Home-Assistant
添加SSL支持和反代白名单
把.crt、.key证书文件拷贝到config目录
打开configuration.yaml,添加如下配置(视情况修改),然后重启服务:
http: base_url: [域名] ssl_certificate: [.crt文件] ssl_key: [.key文件] use_x_forwarded_for: true trusted_proxies: - 1.14.147.22 - 172.17.0.1 - 127.0.0.1 - ::1
上面最下面那几个ip就是白名单列表,可以把公网IP和本地IP也写上去。
白名单参考的是这个文章,不过没有用这个文章里的添加SSL证书的方法:为Home Assistant 开启HTTPS访问 - 天雨的博客 - Masterain (irain.in)
添加SSL证书的方法用的是这个里面的:SSL Encryption with DuckDNS breaks hassio - Configuration - Home Assistant Community (home-assistant.io)