当前位置: 首页 > news >正文

java 开发中 nps的内网穿透 再git 远程访问 以及第三放支付接口本地调试中的作用

在Java开发中,NPS内网穿透、Git远程访问和第三方支付接口的本地调试结合使用,可以有效提升开发效率和调试能力。以下是它们的具体作用及协作场景:


第一:为什么需要nps内网穿透

1. NPS内网穿透的作用

NPS(内网穿透工具)的核心功能是将内网服务暴露到公网,解决本地开发环境无法直接被外部访问的问题。

  • 应用场景

    • 本地服务公网可达:运行在本机的Java服务(如Spring Boot应用)默认只能通过localhost或内网IP访问。通过NPS配置端口映射,可将公网请求(如http://公网IP:端口)转发到本机服务。
    • 第三方回调测试:支付接口(如支付宝、微信支付)在完成支付后,需要回调开发者服务器。本地开发时,可通过NPS生成公网回调地址(如http://public.nps.com/callback),NPS将请求转发到本地的http://localhost:8080/pay/callback,实现回调逻辑的调试。
    • 团队协作演示:临时将本地开发环境暴露给同事或外部测试人员,无需部署到服务器。
  • 配置示例

    # NPS服务端配置(公网服务器)
    [tcp]
    mode = tcp
    server_port = 8080
    target_ip = 192.168.1.100 # 本地Java服务的内网IP
    target_port = 8080# 开发者本地启动Java服务
    java -jar myapp.jar --server.port=8080
    

2. Git远程访问的作用

Git远程访问通常指通过Git管理代码仓库,但在内网穿透场景下,可能涉及访问内网Git服务(如GitLab、Gitea)。

  • 应用场景

    • 访问内网Git仓库:若公司Git服务部署在内网,外部开发者可通过NPS将内网Git的SSH/HTTP端口映射到公网,实现远程代码拉取、推送。
    • 代码协作与持续集成:结合Git钩子(如Git Webhooks),在代码推送到远程仓库后,触发内网的Jenkins或GitLab CI/CD流程,完成自动化构建和测试。
  • 配置示例

    # 通过NPS将内网Git的SSH端口(22)映射到公网端口 2222
    [tcp]
    mode = tcp
    server_port = 2222
    target_ip = 192.168.1.200 # 内网Git服务器IP
    target_port = 22# 外部开发者克隆仓库
    git clone ssh://git@public.nps.com:2222/username/repo.git
    

3. 第三方支付接口本地调试的作用

第三方支付接口(如支付宝、微信支付)通常要求开发者提供公网可访问的回调地址(Notify URL),用于接收支付结果通知。本地开发时,需通过内网穿透实现这一需求。

  • 调试流程

    1. 配置NPS回调地址:在支付平台后台设置回调地址为NPS生成的公网URL(如http://public.nps.com/pay/notify)。
    2. 本地处理回调逻辑:Java应用在本地处理支付结果,如更新订单状态、记录日志等。
    3. 实时调试:通过NPS将支付平台的请求转发到本地,开发者可以直接在IDE中调试代码,查看请求参数和响应。
  • 代码示例(Spring Boot)

    @RestController
    public class PayController {@PostMapping("/pay/notify")public String handlePayNotify(@RequestBody String payload) {// 解析支付结果,更新数据库log.info("收到支付回调: {}", payload);return "success"; // 返回约定好的响应}
    }
    

三者的协同工作

  1. 开发流程

    • 开发者通过Git拉取最新代码到本地。
    • 启动本地Java服务,使用NPS暴露服务到公网。
    • 在支付平台配置NPS提供的回调地址,进行支付测试。
    • 调试完成后,通过Git提交代码到远程仓库,触发内网的CI/CD流程。
  2. 优势

    • 快速验证:无需部署到测试服务器,直接在本地调试支付等依赖外部请求的功能。
    • 降低成本:避免为临时调试购买公网服务器。
    • 安全性:内网Git服务通过NPS暴露时,可限制访问IP或设置鉴权,保障代码安全。

总结

  • NPS:打通本地与公网,解决回调、远程访问等核心痛点。
  • Git远程访问:保障代码管理和协作,结合内网穿透可扩展使用场景。
  • 第三方支付调试:依赖NPS实现端到端测试,确保支付逻辑正确性。

第二:nps内网穿透 安装 配置

以下是针对 NPS 内网穿透公网服务器(CentOS)本地局域网(Windows) 环境下的详细配置步骤,涵盖服务端与客户端的安装、配置及验证流程。


1. 公网服务器(CentOS)配置(NPS 服务端)

1.1 安装 NPS 服务端

  1. 下载 NPS
    访问 NPS GitHub Releases,选择 Linux 版本(如 linux_amd64_server.tar.gz):

    wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz
    
  2. 解压并安装

    tar -zxvf linux_amd64_server.tar.gz
    cd nps
    
  3. 配置服务端
    修改 conf/nps.conf 文件,关键配置项:

    # 服务端监听的HTTP/HTTPS端口
    http_proxy_port=80
    https_proxy_port=443# 客户端连接的TCP端口
    bridge_port=8024# Web管理界面端口
    web_port=8080# 管理用户名和密码
    web_username=admin
    web_password=your_password
    
  4. 开放防火墙端口
    开放 8044380248080 端口:

    firewall-cmd --zone=public --add-port=80/tcp --permanent
    firewall-cmd --zone=public --add-port=443/tcp --permanent
    firewall-cmd --zone=public --add-port=8024/tcp --permanent
    firewall-cmd --zone=public --add-port=8080/tcp --permanent
    firewall-cmd --reload
    
  5. 启动服务端

    sudo ./nps install  # 安装为系统服务
    sudo systemctl start nps
    sudo systemctl enable nps
    
  6. 验证服务端状态

    systemctl status nps
    

    访问 http://公网IP:8080,使用 adminyour_password 登录 Web 管理界面。


2. 本地局域网(Windows)配置(NPC 客户端)

2.1 安装 NPC 客户端

  1. 下载 NPC
    从 NPS Releases 下载 Windows 客户端(如 windows_amd64_client.tar.gz),解压到本地目录(如 C:\npc)。

  2. 生成客户端命令
    在 NPS Web 管理界面(http://公网IP:8080)中:

    • 进入 客户端 -> 新增,填写客户端名称(如 win-client)。
    • 生成连接命令,类似:
      ./npc -server=公网IP:8024 -vkey=客户端密钥 -type=tcp
      
  3. 配置客户端
    在解压后的目录 C:\npc 中,创建或修改 conf/npc.conf

    [common]
    server_addr=公网IP:8024
    vkey=客户端密钥  # 从Web管理界面获取
    conn_type=tcp
    
  4. 启动客户端
    打开命令提示符(管理员权限):

    cd C:\npc
    npc.exe install -config=conf\npc.conf  # 安装为Windows服务
    net start npc
    
  5. 验证客户端连接

    • 在 NPS Web 管理界面查看客户端状态是否为 在线
    • 查看客户端日志 C:\npc\log\npc.log

3. 配置内网穿透规则

3.1 在 NPS Web 界面添加穿透规则

  1. 添加 TCP 隧道

    • 进入 隧道 -> 新增,填写以下信息:
      • 客户端:选择刚创建的 win-client
      • 端口:公网服务器监听的端口(如 8081)。
      • 目标地址127.0.0.1(本地Windows的本地回环地址)。
      • 目标端口:本地Java服务端口(如 8080)。
    • 模式:选择 TCP
  2. 保存规则
    保存后,公网服务器会将 公网IP:8081 的请求转发到本地Windows的 127.0.0.1:8080


4. 验证内网穿透

4.1 本地启动服务

在 Windows 本地运行 Java 服务(如 Spring Boot):

java -jar myapp.jar --server.port=8080

4.2 公网访问测试

通过浏览器或 curl 访问公网地址:

curl http://公网IP:8081

若返回本地服务的响应,则穿透成功。


5. 操作系统差异注意事项

5.1 CentOS(服务端)

  • 权限问题:确保 NPS 服务端有权限绑定低端口(如80/443),或使用 setcap 赋予权限:
    sudo setcap cap_net_bind_service=+ep ./nps
    
  • 日志路径:服务端日志位于 /var/log/nps.log

5.2 Windows(客户端)

  • 防火墙配置:允许 npc.exe 通过 Windows 防火墙。
  • 开机自启:通过 npc.exe install 安装为服务后,默认开机自启。
  • 客户端更新:直接替换 npc.exe 文件并重启服务。

6. 常见问题

6.1 客户端连接失败

  • 检查服务端 bridge_port(默认8024)是否开放。
  • 确认客户端配置中的 server_addrvkey 正确。

6.2 公网访问超时

  • 检查服务端防火墙是否放行端口(如 8081)。
  • 确认本地服务(如Java应用)已启动并监听正确端口。

6.3 客户端频繁掉线

  • 检查网络稳定性,或调整客户端 auto_reconnection=true

最终 我们就可以做到内网穿透

通过以上配置,公网服务器(CentOS)的 NPS 服务端与本地 Windows 的 NPC 客户端协同工作,可实现以下场景:

  • 将本地 Java 服务暴露到公网,方便第三方支付回调测试。
  • 远程访问内网 Git 服务或其他私有服务。
  • 团队协作时快速共享本地开发环境。

关键点:确保服务端端口开放、客户端密钥正确、本地服务运行正常。

http://www.xdnf.cn/news/700939.html

相关文章:

  • 使用 find 遍历软链接目录时,为什么必须加 -L
  • 华为OD最新机试真题-按单词下标区间翻转文章内容-OD统一考试(B卷)
  • 【案例95】“小”问题引发的“大”发现---记一次环境修复
  • 十六进制数据转换为对应的字符串
  • Python 如何让自动驾驶的“眼睛”和“大脑”真正融合?——传感器数据融合的关键技术解析
  • Java+POI+EXCEL导出柱形图(多列和单列柱形图)
  • 外骨骼驾驶舱HOMIE——3500元让人形机器人1:1复刻人类动作:类似Mobile ALOHA主从臂的主从分离版
  • 深度学习入门:从零搭建你的第一个神经网络
  • Vue3对接deepseek实现ai对话
  • 系统性学习C语言-第十讲-操作符详讲
  • javascript中运算符的优先级
  • 如何把示例数据0.617、0.229、0.174保留两位小数,并在后面添加%处理,处理后的结果如下:61.7%、22.9%、17.4%
  • Java | 韩顺平 循序渐进学Java自用笔记---OOP高级(二)
  • Kaggle-基于xgboost的销量预测
  • Java基础 Day23
  • ROC和生存曲线的绘制-spss
  • 精准监测,健康无忧--XC3576H工控主板赋能亚健康检测仪
  • 数据库相关面试
  • 74道TypeScript高频题整理(附答案背诵版)
  • Python解析DOC文档表格
  • Ovito建模并正交化方法
  • 删除队列中整数
  • 股票收益率的计算
  • 新能源工厂环境监控系统如何提升电池生产洁净度
  • C# async/await 完全指南:从入门到实践
  • API 与 SPI
  • iframe三方页面嵌入
  • 【深度学习-pytorch篇】3. 优化器实现:momentum,NAG,AdaGrad,RMSProp,Adam
  • 张 测试大数据集的效果
  • 国内外AI编程工具对比(Trae对比Cursor)