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.pswp.cn/bicheng/83220.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83220.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83220.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

換ip是換網絡的意思嗎?怎么換ip地址

在數字化時代,IP地址作為我們在網絡世界的"身份證",其重要性不言而喻。許多人常將"換IP"與"換網絡"混為一談,實際上兩者雖有聯系卻存在本質區別。本文將澄清這一概念誤區,并詳細介紹多種更換IP地址…

云游戲混合架構

云游戲混合架構通過整合本地計算資源與云端能力,形成了靈活且高性能的技術體系,其核心架構及技術特征可概括如下: 一、混合架構的典型模式 分層混合模式? 前端應用部署于公有云(如渲染流化服務),后端邏輯…

Docker常用命令操作指南(一)

Docker常用命令操作指南-1 一、Docker鏡像相關命令1.1 搜索鏡像(docker search)1.2 拉取鏡像(docker pull)1.3 查看本地鏡像(docker images)1.4 刪除鏡像(docker rmi) 二、Docker容器…

軟件性能之CPU

性能是個宏大而駁雜話題,從代碼,到網絡,到實施,方方面面都會涉及到性能問題,網上對性能講解的文章多如牛毛,從原理到方法再到工具都有詳細的介紹,本文雖不能免俗,但期望能從另外一個…

[SC]SystemC在CPU/GPU驗證中的應用(三)

SystemC在CPU/GPU驗證中的應用(三) 摘要:下面分享50個逐步升級SystemC編程能力的示例及建議的學習路線圖。您可以一次一批地完成它們——從前五個基礎的例子開始,然后轉向channels, TLM, bus models, simple CPU/GPU kernels等等。在每個階段掌握之后,再進行下一組…

如何設計高效的數據湖架構:存儲策略、Schema 演進與數據生命周期管理

本文圍繞現代數據湖架構的核心設計理念與實踐展開,重點討論如何高效組織數據存儲、支持 Schema 演進與版本管理、實現冷熱數據分層存儲和生命周期治理,確保數據湖在性能、成本、演進和治理能力上的全面可控。 ?? 一、數據湖架構演進概覽 傳統數據倉庫面對高頻更新、Schema…

建筑兔零基礎人工智能自學記錄101|Transformer(1)-14

Transformer 谷歌提出,一組編碼-解碼器 可以同時處理,通過位置編碼來處理單詞 實質是token詞語接龍(只是有不同的概率) token對應向量 Transformer簡述 文生圖就需要用到transformer黑箱 token 內部層次 中間主要是embedding…

Unity基礎學習(十二)Unity 物理系統之范圍檢測

目錄 一、關于范圍檢測的主要API: 1. 盒狀范圍檢測 Physics.OverlapBox 2. 球形范圍檢測 Physics.OverlapSphere 3. 膠囊范圍檢測 Physics.OverlapCapsule 4. 盒狀檢測 NonAlloc 版 5. 球形檢測 NonAlloc 版 6. 膠囊檢測 NonAlloc 版 二、關于API中的兩個重…

構建安全高效的郵件網關ngx_mail_ssl_module

一、快速上手:最小配置示例 worker_processes auto;mail {server {# 監聽 IMAP over TLSlisten 993 ssl;protocol imap;# TLS 協議與密碼套件ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;# 證書與私鑰ssl_…

打卡day41

知識回顧 數據增強卷積神經網絡定義的寫法batch歸一化:調整一個批次的分布,常用與圖像數據特征圖:只有卷積操作輸出的才叫特征圖調度器:直接修改基礎學習率 卷積操作常見流程如下: 1. 輸入 → 卷積層 → Batch歸一化層…

MySQL高級查詢技巧:分組、聚合、子查詢與分頁【MySQL系列】

本文將深入探討 MySQL 高級查詢技巧,重點講解 GROUP BY、HAVING、各種聚合函數、子查詢以及分頁查詢(LIMIT 語法)的使用。文章內容涵蓋實際應用中最常見的報表需求和分頁實現技巧,適合有一定 SQL 基礎的開發者進一步提升技能。 一…

現代 CSS 高階技巧:實現平滑內凹圓角的工程化實踐

通過 數學計算 CSS mask 復合遮罩 實現的真正幾何內凹效果: 背景是一張圖片,用來證明中間的凹陷是透明的。 完整代碼: app.js import FormPage from "./pages/formPage"; import "./App.css"; const App () > {re…

Qt不同布局添加不同控件

對于這種 不同布局添加不同控件 的情況,可以采用以下幾種簡化方法: 方法 1:使用 std::pair 或 std::tuple 配對(C++17 推薦) for (auto [layout, widget] : {std::pair{m_layoutMistakeCalibrate,

MySQL 事務解析

1. 事務簡介 事務(Transaction) 是一組操作的集合,它是一個不可分割的工作單位,事務會把所有的操作作為一個整體一起向系統提交或撤銷操作請求,即這些操作要么同時成功,要么同時失敗。 經典案例&#xff1…

PyTorch中 torch.utils.data.DataLoader 的詳細解析和讀取點云數據示例

一、DataLoader 是什么? torch.utils.data.DataLoader 是 PyTorch 中用于加載數據的核心接口,它支持: 批量讀取(batch)數據打亂(shuffle)多線程并行加載(num_workers)自…

在MDK中自動部署LVGL,在stm32f407ZGT6移植LVGL-8.4,運行demo,顯示label

在MDK中自動部署LVGL,在stm32f407ZGT6移植LVGL-8.4 一、硬件平臺二、實現功能三、移植步驟1、下載LVGL-8.42、MDK中安裝LVGL-8.43、配置RTE4、配置頭文件 lv_conf_cmsis.h5、配置lv_port_disp_template 四、添加心跳相關文件1、在STM32CubeMX中配置TIM7的參數2、使能…

德思特新聞 | 德思特與es:saar正式建立合作伙伴關系

德思特新聞 2025年5月9日,德思特科技有限公司(以下簡稱“德思特”)與德國嵌入式系統專家es:saar GmbH正式達成合作伙伴關系。此次合作旨在將 es:saar 的先進嵌入式開發與測試工具引入中國及亞太市場,助力本地客戶提升產品開發效率…

fork函數小解

學了好久終于搞懂fork函數的一些作用 1. fork函數作用:用于創建新的子進程 這是fork最根本的功能,在父進程里創建新的子進程、 但是創建新的子進程之后呢? 子進程和父進程的關系是什么樣的? 為什么fork得到的子進程返回值為0&am…

opencv(C++) 變換圖像與形態學操作

文章目錄 使用腐蝕和膨脹圖像形態濾波器實現案例使用形態學濾波器對圖像進行開運算和閉運算實現案例在灰度圖像上應用形態學操作算子形態學梯度(Morphological Gradient)黑帽變換(Black-hat Transform)使用分水嶺算法進行圖像分割使用 MSER 提取顯著區域MSER 檢測與可視化使…

測試工程師學LangChain之promptTemplate 實戰筆記

一、引言:大模型時代的測試自動化革命 2025 年,隨著大模型(如 DeepSeek)在自動化測試領域的廣泛應用,Prompt 編寫已成為測試工程師的核心技能之一。 為什么? 大模型輸出的質量 90% 取決于輸入的 PromptLangChain 的 PromptTemplate 提供了參數化 Prompt 的標準化方案Ope…