nginx反向代理学习过程中问题及解决总结
本文记录的是up自己遇到这些问题的解决方法,目的是让记录供日后学习,有相同问题小伙伴给一个思路,也可以评论私信我。
背景:家里有一台存放数据的NAS,系统为群辉,并且安装了docker,在docker上安装有homeassistant容器,up有自己的域名,家中外网ip是动态ip,之前是花生壳DDNS,后来改了aliyun解析域名(在docker中安装了DDNS)

,家中普通路由器做的端口映射,可以实现外网通过http方式访问家中NAS和homeassistant。后来因为homeassistant中部署一个服务,实现小爱同学接入homeassistant,接口必须通过https访问,所以,为了签发SSL证书通过HTTPS访问并且更安全,在docker中又部署了let's encrypt,实现自签SSL证书,并且内置反向代理nginx。
/docker/lets_encrypt/dns-conf,这个路径下的aliyun.ini文件access_key和access_key_secret修改,在阿里云DNS解析官网。还有容器80端口和443端口的转发用于SSL签发的验证。

过程中出现的几个头疼问题!!!解决方法
设置反向代理后,网址访问返回

这个是本地服务名称如果设置错误,不一致,找不到这个服务,就会出现这个问题,具体可以查看nginx的logs。例如你的一个服务config里homeassistant(这个是我的服务名,也就是我docker里容器的名称)和我实际docker中容器的名称不一致例如docker里叫homeassistant1,就会报502。

2.在我配置homeassistant反向代理时出现了
400 bad request
实际测试发现,请求是已经到了homeassistant,却被拒绝了,查看nginx的logs发现是通过的,是返回了400。查看homeassistant的logs时发现,
A request from a reverse proxy was received from 172.18.0.4, but your HTTP integration is not set-up for reverse proxies
实际是收到访问请求后给拒绝了。
解决办法 修改configuration.yaml
添加
http:
use_x_forwarded_for: true
trusted_proxies:
- 172.30.33.1 # 添加访问的ip白名单
各位遇到问题也可以评论,看见了一起研究解答以下。