前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >宝塔反代HomeAssistant并添加SSL笔记

宝塔反代HomeAssistant并添加SSL笔记

原创
作者头像
kr
修改2022-06-15 18:16:55
7.4K0
修改2022-06-15 18:16:55
举报
文章被收录于专栏:个人教程个人教程

前言

  • 从昨天2021-11-09下午,弄到现在2021-11-10的3点,终于弄好了。
  • 实现了HTTPS访问、隐藏端口号。

遇到的问题

在宝塔设置反向代理后直接访问报错:400: Bad Request

  • Home-Assistant使用反向代理要设置白名单,不然会拦截。

设置白名单后能正常访问,但无法登录,登录会弹出:Unable to connect to Home Assistant.

  • Home-Assistant要用到websocket,而宝塔默认的反代配置文件没有添加websocket支持。

找错误中一些巧合

  • 在查第一个400: Bad Request报错原因时,看到一个回答是说因为反代配置加了websocket支持才报错,删掉就不报错了。
  • 而这个和我第二个问题撞上了,很是巧合。
  • 如果当时看到那个回答反其道而行之加上去,说不定早就解决了。

正式笔记

宝塔方面操作

添加SSL支持
  • 设置里复制证书文件添加就行,略。
添加反代
  • 目标URL:https://[域名]:8123
  • 发送域名:域名
修改反代配置文件(添加websocket支持)

来源:群晖自带nginx反代hass方法 - 『HomeAssistant』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz! (hassbian.com)

  • 添加如下代码:
代码语言:txt
复制
proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 86400;
  • 这时添加前的:
代码语言:txt
复制
#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/
  • 这是添加后的:
代码语言:txt
复制
#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
  • 进入配置>日志,查看日志。
  • 不出意外会有报错,大概如下:
代码语言:txt
复制
Received X-Forwarded-For header from an untrusted proxy 172.17.0.1
代码语言:txt
复制
A request from a reverse proxy was received from 172.17.0.1,but your HTTP integration is not set-up for reverse proxies
  • 记住这个IP,这里是172.17.0.1
添加SSL支持和反代白名单
  • .crt.key证书文件拷贝到config目录
  • 打开configuration.yaml,添加如下配置(视情况修改),然后重启服务:
代码语言:txt
复制
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

个人博客原文链接:https://cloud.tencent.com/developer/article/2023987

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 遇到的问题
    • 在宝塔设置反向代理后直接访问报错:400: Bad Request
      • 设置白名单后能正常访问,但无法登录,登录会弹出:Unable to connect to Home Assistant.
      • 找错误中一些巧合
      • 正式笔记
        • 宝塔方面操作
          • 添加SSL支持
          • 添加反代
          • 修改反代配置文件(添加websocket支持)
        • Home-Assistant方面的设置
          • 获取反向代理源IP
          • 添加SSL支持和反代白名单
      相关产品与服务
      SSL 证书
      腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档