HomeAssistant设置https访问后的问题
之前 HomeAssistant 在浏览器中是这样打开的 http://ha.xxx.ml
最近因为测试的几个软件都需要 SSL 支持,所以准备全面升级到 https,拟定的方案是利用群晖的反代 + 内网穿透来实现。,所以升级完成后,应该是这样的 https://ha.xxx.ml
内网穿透
还是用的 frp ,但之前采用的一个域名一条记录的方式显然已经不适合反向代理,frpc.ini 需要按下面这样的进行修改,也可以用到《免费的泛域名https证书自动续期》里介绍的 SSL 证书自动续期。
1 | [http] |
反向代理
直接用的群晖的反向代理,这里「来源」中的端口要和 frpc.ini
中 local_port
一致
遇到问题
设置反代完成后,在浏览器中输入 https://ha.xxx.ml
但是登陆完成后,却一直连接不上
开始以为是 https 的问题,所以重新反代了一次 http 协议
但是结果是一样的,所以基本上可以确定是因为反代导致的,而不是因为 https
解决问题
查阅了一圈资料,发现主要原因是因为群晖自带的 nginx 不支持 websocket,这个问题直到 DSM6.2.1 才解决,而我的版本还是 DSM6.1.7。
好在网上已经有了解决方案。Synology DSM 6 反向代理的配置修复程序项目地址:https://github.com/orobardet/dsm-reverse-proxy-websocket
SSH连接后打开 /usr/syno/share/nginx/Portal.mustache
切记,修改前先备份,先备份,先备份,重要的事情总是要说三遍,备份是一种好习惯
在 location
部分中添加以下内容:
1 | proxy_set_headerUpgrade $http_upgrade; |
重启 httpd
1 | sudo synoservicecfg --restart nginx |
再次在浏览器中输入 https://ha.xxx.ml
,发现已经完美解决了用 https 访问后卡在登录界面的问题。
参考文档
群晖nas 修改nginx配置的问题
地址:https://www.sadk.org/%E6%97%A5%E5%BF%97/1970.html[进阶教程] nginx通过https反向代理hass的配置注意事项
地址:https://bbs.hassbian.com/thread-4276-1-1.htmlNginx反向代理Home assistant
地址:http://www.yunsean.com/nginxfan-xiang-dai-li-home/群晖nginx反向代理处理websocket协议的方法
地址:https://post.smzdm.com/p/a992qp87/