# yunAIYI_nginxUpdate **Repository Path**: MemoryFast/yunAIYI_nginxUpdate ## Basic Information - **Project Name**: yunAIYI_nginxUpdate - **Description**: yunAIYI_nginxUpdate 协助部署动态公网ip+云服务器 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2021-07-07 - **Last Updated**: 2021-07-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # yunAIYI_nginxUpdate ## 业务背景 使用第三方提供的内网穿透服务,还是有明显的网络延迟,如果有阿里云或腾讯云,可以自己结合宽带动态公网ip部署自己的内网穿透。没有过多的流量损耗,速度肯定比第三方内网 穿透快和稳定,同时又可以最大程度的使用个人服务器的硬件性能优势。 原理:TCP长连接状态处理,当宽带动态公网ip变化,实时更新到阿里云web服务器,更新nginx,从而完成内网穿透。 > 站点: https://homeapp.top ## 前置条件 1. 电信宽带下的服务器 PCserver1。有电信公网ip但动态变化,且无80 443端口权限。 2. 阿里云web服务器例 PCserver2,固定公网ip如:1.1.1.1 。部署web服务会nginx。 (测试环境服务器配置:5m宽带,1核2g内存。) nginx配置,把80 443都代理到一个变量ip,内容随便写,会自动更新。 set @mydynamicIP "111.1.1.1"。 配置信息参考后面示例。 3. 域名如 mydomain.top,a记录绑定到1.1.1.1。 ## 最终效果 核心业务系统部署在宽带环境下的pc服务器上。(自己的pc服务器硬件性能远超这台云服务器) 访问 https://mydomain.top ,仅通过PCserver2 nginx进行代理,业务服务器还是在PCserver1上。 ## 和第三方提供的内网穿透比对测试 测试数据 以下三张图片分别是下面三种方式测试结果: 测试图如下: > 动态公网ip+云服务器:
![动态公网ip+云服务器](document/images/1.png)
> natapp vip2内网穿透:
![natapp vip2内网穿透](document/images/2.png)
> 动态公网ip直连:
![动态公网ip直连](document/images/3.png)
经测试这三种模式下的网速: 1. 动态公网ip+云服务器 速度排行第二 2. natapp vip2内网穿透 速度排行第三 3. 动态公网ip 直连(非80端口) 速度排行第一 第二种,慢的离谱,但是当你自己访问,非并发访问,感觉不出来慢,大并发访问时候上层流量是有瓶颈的! 具体,可以再亲测,yunAIYI_nginxUpdate 就是协助部署动态公网ip+云服务器。 使用第一种方案后,域名访问速度提升测试图: > 升级后测试图:
![升级后测试图](document/images/5.png)
## 使用说明: Aliyun_nginxServer Aliyun_nginxClient 启动顺序可以随意 。 1. 云服务器 PCserver2 下载运行 document/build/aliyun_nginxServer or aliyun_nginxServer.exe 和配置文件config。 双击运行即可。 访问: 有内容,说明启动成功。 nohup aliyun_nginxServer > /dev/null 2>&1 & 2. 自己的pc PCserver1 下载运行 document/build/aliyun_nginxClient or aliyun_nginxClient.exe 和配置文件config。 保障8999端口没有被占用。 配置文件中修改 aliyunip 为自己的阿里云web服务器ip。 双击运行即可。 访问: 有内容,说明启动成功。 ## 升级日志 > 2020年6月14日 12:43:41 1. 发现问题,电信刷新动态公网ip,等待13分钟才恢复。 问题现象: 动态公网ip更新后第一时间推送到云服务器了,但是链接成功后,send和recv有超时可能性,因为动态公网那边网络不是瞬间完成ip更新,需要等10多钟才可以。 问题处理: 路由器设置定时重启完成ip刷新,防止随机性刷新ip,电信刷新ip的时候,有10多分钟的网络故障。读写超时日志优化,读写超时缩短,及时响应日志,发起重连。 目前 send recv没超时时间设置,先不处理。 ## todo 1. 获取路由器api 获取公网ip 2. 路由器api 重新拨号 定时拨号刷新ip,防止换ip随机性。 > 2020年6月14日电信刷新公网ip报错日志:
![升级后测试图](document/images/2020年6月14日电信刷新公网ip报错日志.png)
解决方案: 1. 可能换ip 就需要等15分钟 ,定时每天晚上1点刷新ip。防止随机性刷新ip。 路由器就有定时重启功能,或者通过api重启。选前面的方案吧。更通用。 ## nginx配置文件示例 ``` #homeapp.top.conf server { set $myip "111.113.215.87"; listen 443 ssl http2; server_name homeapp.top; # SSL ssl_certificate /usr/local/nginx/mywebsiteconf/www.homeapp.top.pem; ssl_certificate_key /usr/local/nginx/mywebsiteconf/www.homeapp.top.key; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; # additional config location / { proxy_pass http://$myip:99; index index.html index.htm index.jsp; } error_page 400 401 402 403 405 408 410 412 413 414 415 500 501 502 503 504 506 /505.html; location = /502.htm { root html/; } error_page 404 https://homeapp.top; } # subdomains redirect server { listen 443 ssl http2; server_name *.homeapp.top; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; # SSL ssl_certificate /usr/local/nginx/mywebsiteconf/www.homeapp.top.pem; ssl_certificate_key /usr/local/nginx/mywebsiteconf/www.homeapp.top.key; return 301 https://homeapp.top$request_uri; error_page 400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 504 506 /505.html; location = /502.htm { root html/; } } # HTTP redirect X-Forwarded-For 和 X-Real-IP server { listen 80; server_name .homeapp.top; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; return 301 https://homeapp.top$request_uri; } ```