目 录CONTENT

文章目录

Nginx+Acme+Nps实现内网穿透加密访问

数据渔港
2025-11-01 / 0 评论 / 0 点赞 / 46 阅读 / 1,221 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2025-11-03,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

NPS内网穿透、Nginx反向代理与ACME域名SSL证书服务,结合家中硬件(如路由器、个人电脑),构建了一个从内网到外网的高效、安全访问链路。利用闲置硬件降低成本,家庭网络私密性增强数据安全。NPS穿透防火墙,实现远程访问;Nginx提供稳定访问控制;ACME确保数据传输安全。此方案灵活易用,性能出色,是家庭用户实现内网服务安全外访的理想方案。

系统时区设置

  • 如果不设置好时区,设置的定时任务无法正常按照要求执行

 #设置上海时区
 sudo timedatectl set-timezone Asia/Shanghai

域名解析

  • 重要的事情多说几句,千万别忘记
	
	#如下方操作解析
  请在域名管理处泛域名解析到服务器  *.更换成你的域名 123.456.789
  请在域名管理处泛域名解析到服务器  *.更换成你的域名 123.456.789
	请在域名管理处泛域名解析到服务器  *.更换成你的域名 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即可,可选操作
	
	#github安装
  curl https://get.acme.sh | sh
  source ~/.bashrc
  
	#gitee安装  
	git clone https://gitee.com/neilpang/acme.sh.git
	cd acme.sh
	./acme.sh --install -m my@example.com

	#设置自动更新
	acme.sh --upgrade --auto-upgrade
	
	#可选-查看版本
	acme.sh -v
	
	#切换服务商为ZeroSSL
	acme.sh --set-default-ca --server zerossl
	
	#关联账户
	acme.sh --register-account -m 你的邮箱 --server zerossl
	
  #设置cloudflaer api非全局,其他DNS域名托管商参考这个文档:https://github.com/acmesh-official/acme.sh/wiki/dnsapi
	export CF_Token="你的Token"
	acme.sh --dns dns_cf --issue -d *.更换成你的域名 -d 更换成你的域名 --debug
	
	#创建SSL目录
	mkdir -p /etc/nginx/ssl
	
	#手动复制证书到nginx目录
	cp /root/.acme.sh/*.更换成你的域名_ecc/* /etc/nginx/ssl/
	
	#可选-设置定时任务,主要是想自动化每天覆盖掉之前的证书,这样更新后的证书能及时覆盖
	0 2 * * * rm -f /etc/nginx/ssl/* && cp /root/.acme.sh/*.更换成你的域名_ecc/* /etc/nginx/ssl/ && systemctl reload nginx >> /var/log/cert_renewal.log 2>&1
    
  #可选-查看已申请好的域名证书路径
  acme.sh --issue --dns dns_cf --domain *.更换成你的域名 更换成你的域名 --debug 
	

配置Nginx SSL




	server {
	    listen 80;
	    server_name 更换成你的域名;
	    return 301 https://$host$request_uri;

	}
	server {
	    listen 443 ssl;
	    server_name *.更换成你的域名; #这里设置的是泛域名,所有域名都可以
	    ssl_certificate /etc/nginx/ssl/fullchain.cer;  # SSL证书路径
	    ssl_certificate_key /etc/nginx/ssl/*.更换成你的域名.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,找到客户端类似这样设置

image-20241221180441042

  • 域名解析设置

image-20241221180550832

  • 安装好打开设置连接地址和密钥

image-20241221175112001

  • 服务端显示已在线

image-20241221180704574

效果展示

  • 使用无痕模式访问即可看到证书已经生效

image-20241221121328376

0

评论区

ip); ?>