NPS内网穿透、Nginx反向代理与ACME域名SSL证书服务,结合家中硬件(如路由器、个人电脑),构建了一个从内网到外网的高效、安全访问链路。利用闲置硬件降低成本,家庭网络私密性增强数据安全。NPS穿透防火墙,实现远程访问;Nginx提供稳定访问控制;ACME确保数据传输安全。此方案灵活易用,性能出色,是家庭用户实现内网服务安全外访的理想方案。
操作系统选择与服务器选购
- 经测试2H1G完全无压力
- CentOS-7.6.1810-x64
系统时区设置
- 如果不设置好时区,设置的定时任务无法正常按照要求执行
#设置上海时区
sudo timedatectl set-timezone Asia/Shanghai
域名解析
- 重要的事情多说几句,千万别忘记
#如下方操作解析
请在域名管理处泛域名解析到服务器 *.datafh.cn 123.456.789
请在域名管理处泛域名解析到服务器 *.datafh.cn 123.456.789
请在域名管理处泛域名解析到服务器 *.datafh.cn 123.456.789
设置系统源
- 设置阿里云的软件源
安装crul和
sudo yum install curl -y && sudo yum install wget -y
#执行更换
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#生成缓存
yum makecache
安装nginx
- 设置启用Nginx官方仓库
#设置官方仓库
sudo vi /etc/yum.repos.d/nginx.repo
#在文件中添加以下内容保存生效
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=http://nginx.org/keys/nginx_signing.key
#执行安装
sudo yum install nginx
#启用并启动Nginx
sudo systemctl start nginx
#设置开机启动
sudo systemctl enable nginx
安装Acme.sh
- 执行代码之后数分钟后会显示申请成功,之后复制到nginx目录设置ssl即可,可选的不需要的可以略过
#安装acme.sh
curl https://get.acme.sh | sh
source ~/.bashrc
#设置自动更新
acme.sh --upgrade --auto-upgrade
#可选-查看版本
acme.sh -v
#切换服务商为ZeroSSL
acme.sh --set-default-ca --server zerossl
#关联账户
acme.sh --register-account -m shujuyugang@gmail.com --server zerossl
#设置cloudflaer api非全局
export CF_Token="ewmclTQvkFqsUbDNZDPlJhDU7gxWOZc9w4FewADm"
acme.sh --dns dns_cf --issue -d *.datafh.cn -d datafh.cn --debug
#创建SSL目录
mkdir -p /etc/nginx/ssl
#手动复制证书到nginx目录
cp /root/.acme.sh/*.datafh.cn_ecc/* /etc/nginx/ssl/
#可选-设置定时任务,主要是想自动化每天覆盖掉之前的证书,这样更新后的证书能及时覆盖
0 2 * * * rm -f /etc/nginx/ssl/* && cp /root/.acme.sh/*.datafh.cn_ecc/* /etc/nginx/ssl/ && systemctl reload nginx >> /var/log/cert_renewal.log 2>&1
#可选-查看已申请好的域名证书路径
acme.sh --issue --dns dns_cf --domain *.datafh.cn datafh.cn --debug
配置nginx ssl
server {
listen 80;
server_name datafh.cn;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name *.datafh.cn; #这里设置的是泛域名,所有域名都可以
ssl_certificate /etc/nginx/ssl/fullchain.cer; # SSL证书路径
ssl_certificate_key /etc/nginx/ssl/*.datafh.cn.key; # SSL私钥路径
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://127.0.0.1:7780/; #设置反向代理的端口是nps的这样 所有的请求都会访问7780端口,nps正常设置你需要的域名即可,然后都可以正常访问
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 X-Forwarded-Proto $scheme;
}
}
安装NPS
- 一般安装启动后,nps会自动设置开启自启
#下载服务端,
wget https://github.com/ehang-io/nps/releases/download/v0.26.9/linux_amd64_server.tar.gz
#解压安装包
tar -xf linux_amd64_server.tar.gz
#安装nps
./nps install
#编辑配置文件路径是/etc/nps/conf/nps.conf
vi /etc/nps/conf/nps.conf
#把下面的内容保存因为nginx已经占用了80 443所以这里要改到其他端口
http_proxy_ip=0.0.0.0
http_proxy_port=7780
https_proxy_port=7433
#https_just_proxy=true
#保存生效
nps start
#启动nps
./nps start
创建客户端和域名代理
- 访问自己的nps项目 一般是ip:8080,找到客户端类似这样设置
- 域名解析设置
- 安装好打开设置连接地址和密钥
- 服务端显示已在线
效果展示
- 使用无痕模式访问即可看到证书已经生效
评论区