Loading... > 本文仅是个人思路和理解,如果适合你则使用. > > 因为个人会随时访问图片,视频.office文档等, 本来想到的思路是购买一个阿里云的国内服务器,挂载阿里的OSS对象存储, 这其实是最稳定也是最优的方案, 前提是不需要担心高额的OSS费用支出, 再加上个人备案有些麻烦, 所以就放弃了. > > 先在自己的openwrt路由上安装好网站, 买几个大容量的硬盘柜, 这其实已经满足了个人网盘的需求, 但是毕竟带端口访问, 如果顺便搭建下其他的网站,比如个人博客,就不太方便了, 直到最近突然想起自己有个搬瓦工的GIA CN2的机器平时就是用于学习科学的, 然后有了思路, 在搬瓦工的机器上安装Nginx反代自己的路由地址就OK啦, 再把静态的资源图片,视频等文件rewrite一下, 国内能直连不用绕一圈访问. 看起来挺简单的,但是其中还是有些曲折, 所以记录一下. ### 前期准备 <div class="tip inlineBlock info"> 安装好openwrt, <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://www.silencetime.com/index.php/archives/33/" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://www.silencetime.com/usr/themes/handsome/assets/img/sj/4.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">U盘安装LEDE, OPENWRT家庭软路由</p> <div class="inster-summary text-muted"> 注意:这个不是把固件写到U盘,想使用U盘启动的同学可以离开了,这个是用U盘把固件写到内置的硬盘里,安装完后无需再用... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 绑定域名到路由 <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://www.silencetime.com/index.php/archives/25/" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://www.silencetime.com/usr/themes/handsome/assets/img/sj/4.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">使用域名远程访问Openwrt</p> <div class="inster-summary text-muted"> 使用域名远程访问家庭路由Openwrt / LEDE,并添加SSL证书,启用HTTPS访问前期准备软路由已经配置好... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 安装宝塔,搭建好网站 <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://www.silencetime.com/index.php/archives/31/" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://www.silencetime.com/usr/themes/handsome/assets/img/sj/4.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">在openwrt或群晖中用docker快速部署宝塔面板</p> <div class="inster-summary text-muted"> 在openwrt或群晖中用docker快速部署宝塔面板, 并搭建第一个网站前期准备已经安装好openwrt路由器或... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 提示: 绑定域名到网站的时候可以使用CNAME解析到路由地址即可. </div> 在宝塔软件商店搜索KODBOX即可自动完成安装,这时候你应该可以通过自定义端口和域名浏览自己的网盘, 没有特别的需求, 以下步骤可以跳过了. 但是如果你不想通过自定义端口访问,或者有搭建自己博客的需求, 则可以选择继续折腾. ### 步骤 * 为了区分, 我们假定把国外的服务器命名为A且网站域名为a.com,负责反代, 路由器命名为B且网站域名为b.com, 负责web服务. 路由B远程访问的域名为c.com * 在A里搭建一个空白网站, 域名为a.com. 且a.com解析到A * 在B里搭建好真实的网站, 域名为a.com(是的,域名和a.com一样) * 在B里添加一个另外的网站a1.com目录绑定至a.com (做伪静态用) * 在A里, 设置a.com反代规则 * 由于B是动态IP地址, 而nginx的反代只解析一次就会把DNS地址保存,以后不会再解析, 所以为了避免因为网络变化而导致不能访问,需要nginx的upstream服务, 参考文章<div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://www.silencetime.com/index.php/archives/29/" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://www.silencetime.com/usr/themes/handsome/assets/img/sj/4.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">宝塔Tengine编译安装nginx_upstream_check_module</p> <div class="inster-summary text-muted"> 简介: nginx_upstream_check_module是由 淘宝技术团队开发的一个 Tengine(ngi... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div>, 配置`ngx_http_upstream_dynamic_module`(改下模块名字即可) * 复制下面代码插入到nginx的conf配置里 ```shell #插入到server前 upstream cloudproxy { dynamic_resolve fallback=stale fail_timeout=30s; server b.com:端口号; #如果你没有多服务器做负载均衡,以下2行可忽略 #server f.com:端口号; #check interval=3000 rise=2 fall=5 timeout=1000 type=http; } #插入到server里 #设置伪静态 国内直连 location ~ .*\.(gif|jpg|jpeg|png|mp3|mp4|zip|7z|css|js|woff|woff2|ttf)$ { expires 30d; rewrite "^/(.*)$" https://a1.com:端口号/$1; } ``` **反代** ```shell #PROXY-START/ location ~* \.(php|jsp|cgi|asp|aspx)$ { set $cloudproxy cloudproxy; proxy_pass https://$cloudproxy; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location / { set $cloudproxy cloudproxy; proxy_pass https://$cloudproxy; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; #防跨域配置 if ($request_method = 'POST') { add_header 'Access-Control-Allow-Origin' *; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; } if ($request_method = 'GET') { add_header 'Access-Control-Allow-Origin' *; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; } add_header X-Cache $upstream_cache_status; #Set Nginx Cache add_header Cache-Control no-cache; expires 12h; } #PROXY-END/ ``` 最后修改:2021 年 01 月 22 日 © 允许规范转载 打赏 赞赏作者 支付宝 赞 0 如果觉得我的文章对你有用,请随意赞赏