侧边栏壁纸
博主头像
数据渔港

点亮对生活的好奇心

  • 累计撰写 33 篇文章
  • 累计创建 56 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

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

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

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,找到客户端类似这样设置

image-20241221180441042

  • 域名解析设置

image-20241221180550832

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

image-20241221175112001

  • 服务端显示已在线

image-20241221180704574

效果展示

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

image-20241221121328376

0

评论区

ip); ?>