前言
我们在部署webos时候,往往遇到部署在家里服务器,NAS、软路由等上,现在家庭宽带基本都屏蔽80、443端口,我们要实现无端口访问我们的webos,其中之一的解决办法就是通过购买云服务器,比如某讯云,新人也就几十块一年。通过云服务器备案后可利用反向代理实现无端口访问,但是家庭宽带基本是动态IP,一旦IP变了,云服务器的代理就会失效,现在我们来解决这个问题。
搭建环境
- 服务器:群辉NAS
- 宽带:有动态公网IP(或者做了内网穿透)
- 利用DDNS把自己域名解析到家里的动态IP上,这里用www.xxx.com为例
- 可以通过自己的域名+端口访问webos
问题描述
用 Nginx 反向代理的几个网站经常出打不开,报 502 或 504 错误,重启 Nginx 后马上就好了。
错误代码一般下面两种:
502 Bad Gateway
或
504 Gateway Time-out
问题分析
分析 Nginx 错误日志发现错误原因是:
Nginx 反向代理的动态域名
IP 随时会变化(宽带重新拨号),但 IP 改变后 Nginx 的反向代理还是用的缓存的旧 IP。
错误日志部分如下
2023/02/09 15:44:28 [error] 29225#0: *12927 upstream timed out (110: Connection timed out) while connecting to upstream, client: 196.58.259.53, server: www.xxx.com, request: "GET / HTTP/2.0", upstream: "http://111.118.188.283:8088/", host: "www.xxx.com"
上面的错误日志upstream: "http://111.118.188.283:8088/"
中的ip其实已经是旧的了。
解决办法
- 使用
set
命令用变量定义要反向代理的域名,在对proxy_pass
进行转发的时候域名调用变量。 - 同时可以配置可靠的
valid
参数来自定义缓存有效时间间隔地对变量中的域名进行解析。 - 但这种方式必须要配置
resolver DNS服务器IP
用于对定义的域名进行解析,这里使用114.114.114.114
。
配置示例如下:
location / {
resolver 114.114.114.114 valid=60s;
set $backend "http://www.xxx.com:8088";
proxy_pass $backend;
}
注意放的位置
修改完保存即可
充电时电池发烫什么原因
[g=wunai] 不发烫就不正常了