前言
我们通过购买国内云服务器自建zerotier根服务器后,能不能使云服务器和家里的nas加入到我们的虚拟内网使其联通,在外面就可以访问我们的nas?答案是可以的。下面就是具体的实现步骤。
实现步骤
云服务器配置域名
1.购买一个便宜的域名
2.将域名解析到我们的云服务器
3.为需要代理的服务配置子域名
云服务器安装zerotier客户端
参考linux部署
nas安装zerotier客户端
nas安装可以参考linux部署,也可以参考使用的nas系统的教程进行安装,记得需要将Planet
文件替换成zerotier根服务器的,加入网络就可以获取nas在虚拟局域网的ip地址,就可以去服务器上通过Nginx代理进行访问。
云服务器安装Nginx
在我们部署zerotier根服务器的云服务器上安装Nginx。
Ubuntu/Debian 系统:
# 更新源 sudo apt update
# 安装 Nginx sudo apt install nginx -y
# 管理服务 sudo systemctl start nginx sudo systemctl enable nginx
|
CentOS/RHEL 系统:
sudo yum install epel-release -y
sudo yum install nginx -y
sudo systemctl start nginx sudo systemctl enable nginx
|
安装成功后,Nginx位置在/etc/nginx
下,进去配置Nginx代理配置:
cd /etc/nginx/sites-available
sudo nano example.conf
|
编写反向代理配置(以代理Nas的 Navidrome为例)
server { listen 443 ssl http2; server_name music.example.top;
ssl_certificate /etc/letsencrypt/live/example.top/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.top/privkey.pem; include /etc/nginx/conf.d/ssl.conf;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
location / { proxy_pass http://10.42.212.149:4533; include proxy_params; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; add_header Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: https:; media-src * blob:; connect-src 'self' wss://*.example.top;" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header Referrer-Policy "same-origin" always; }
proxy_hide_header Content-Security-Policy; proxy_hide_header X-Content-Type-Options; proxy_hide_header X-Frame-Options; proxy_hide_header Referrer-Policy; }
server { listen 80; server_name music.example.top; return 301 https://$host$request_uri; }
|
SSL证书配置请参考:如何为 Hexo 博客配置 Nginx 泛域名 SSL 证书(含自动续期) | 人间客的Blog
1.配置文件不需要SSL配置可删除(需要请替换成自己域名的SSL证书)
2.安全头设置请注意wss替换成自己的域名
启用配置:
sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/
sudo nginx -t
|
重启Nginx
sudo systemctl reload nginx
sudo systemctl restart nginx
|
注意事项:
- 防火墙配置:记得开放服务器的443和80端口
- 域名解析:提前将域名 A 记录指向服务器 IP
到此就配置完成,可以访问配置好的域名查看效果,可以通过不同的子域名代理到nas的各种服务,只需要配置相应的代理即可。
效果
