【原创】解决云服务器nginx反向代理webos源地址ip改变无法访问

前言

我们在部署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其实已经是旧的了。

解决办法

  1. 使用 set 命令用变量定义要反向代理的域名,在对proxy_pass进行转发的时候域名调用变量。
  2. 同时可以配置可靠的valid参数来自定义缓存有效时间间隔地对变量中的域名进行解析。
  3. 但这种方式必须要配置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;
}

注意放的位置

【原创】解决云服务器nginx反向代理webos源地址ip改变无法访问

修改完保存即可

给TA打赏
共{{data.count}}人
人已打赏
docker/群辉webos

Webos安装教程(Linux/群晖(NAS版)

2023-2-9 16:37:30

webos常见问题

【原创】docker容器连不上宿主机mysql解决办法

2023-2-9 16:58:31

2 条回复 A文章作者 M管理员

评论已经关闭

  1. 充电时电池发烫什么原因

    • [g=wunai] 不发烫就不正常了

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索