You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Home Assistant通过Nginx反向代理实现HTTPS访问时出现502 Bad Gateway错误求助

Home Assistant通过Nginx反向代理实现HTTPS访问时出现502 Bad Gateway错误求助

看起来你已经搭好了反向代理的基本框架,但502错误说明Nginx没法成功连接到上游的Home Assistant实例,咱们一步步来排查问题:

  • 第一步:验证Nginx主机到HA实例的连通性
    在你的Linux主机(192.168.0.110)上,直接用工具测试能不能访问HA的IP和端口。比如执行:

    curl http://192.168.0.73:8123
    

    或者用telnet测试端口是否开放:

    telnet 192.168.0.73 8123
    

    如果这一步连不上,那问题出在网络层面,先解决主机和HA虚拟机的连通问题。

  • 第二步:检查Linux主机的防火墙规则
    主机的防火墙(比如ufw、firewalld)可能阻止了对HA实例端口的访问。可以先临时关闭防火墙测试,或者添加允许规则:

    • 如果你用的是ufw:
      sudo ufw allow out to 192.168.0.73 port 8123
      
    • 如果你用的是firewalld:
      sudo firewall-cmd --add-rich-rule='rule family="ipv4" destination address="192.168.0.73" port port="8123" protocol="tcp" accept' --permanent
      sudo firewall-cmd --reload
      
  • 第三步:配置Home Assistant信任代理
    HA默认会拒绝来自反向代理的请求,需要在HA的configuration.yaml里添加信任代理设置:

    http:
      use_x_forwarded_for: true
      trusted_proxies:
        - 192.168.0.110  # 你的Nginx主机IP
    

    添加完成后重启Home Assistant,再测试访问。

  • 第四步:修复Nginx配置的语法问题
    你提供的Nginx配置里存在换行错误(比如return 301被拆成了两行),这可能导致配置解析异常。修正后的完整配置如下:

    server {
      if ($host = domain.xyz) {
        return 301 https://$host$request_uri;
      }
    
      listen 80;
      server_name domain.xyz;
      return 301 https://$host$request_uri;
    }
    
    server {
      listen 443 ssl;
      server_name domain.xyz;
    
      ssl_certificate /etc/letsencrypt/live/domain.xyz/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/domain.xyz/privkey.pem;
    
      location / {
        proxy_pass http://192.168.0.73:8123;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # WebSocket support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
      }
    }
    

    修改后执行sudo nginx -t检查配置语法是否正确,确认无误后重启Nginx:

    sudo systemctl restart nginx
    
  • 第五步:检查KVM虚拟机的网络模式
    确认HA的KVM虚拟机使用的是桥接模式而非NAT模式。如果是NAT模式,主机可能无法直接访问虚拟机的内部IP,需要调整KVM的网络设置为桥接,确保虚拟机和主机在同一局域网段。

备注:内容来源于stack exchange,提问作者Bazim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 13:14:31