基于Docker的內網穿透實戰:frp 0.68 + Nginx最佳實踐

在實際應用中,我們常常遇到這樣的需求:

  • 家里的NAS服務器、開發環境、測試服務,需要暴露到公網訪問

  • 企業內部系統,僅允許在特定域名或端口暴露,但沒有公網IP

  • 多個內網應用,希望通過一個統一的外網入口訪問

傳統方法(如端口映射、VPN)存在種種局限。 這時候,輕量、高效、開源的?frp(Fast Reverse Proxy)?成為了解決方案的首選。

本文將以 frp 0.68為例,結合Docker容器化部署,并通過Nginx反向代理優化訪問體驗,完整講解一套生產級實踐方案。

1?? frp適用場景概覽

frp?是一款高性能的反向代理應用,主要應用于:

  • 內網穿透:將內網服務(如SSH、Web)暴露到公網

  • 遠程辦公:安全地訪問公司內部資源

  • 異地數據同步:建立點對點連接

  • 微服務通信:跨網段通信

  • 個人項目發布:將家里的開發環境一鍵發布到公網展示

相較于傳統VPN,frp部署簡單、資源占用小,支持多種協議(TCP、UDP、HTTP、HTTPS、STCP、SUDP),尤其適合快速搭建和靈活擴展。


2?? 快速部署教程(基于 micrograils/frp 鏡像)

假設我們有一臺云服務器,公網域名為:www.sample.com。 目標是將家中一臺機器的本地Web服務(localhost:8080)安全暴露到公網。

2.1 服務端(frps)部署

① 配置 frps.toml

創建?frps.toml?文件:

bindAddr = "0.0.0.0"
bindPort = 7000vhostHttpPort = 8080auth.method = "token"
auth.token = "strong_token_here"transport.tls.force = true[webServer]
addr = "0.0.0.0"
port = 7500
user = "admin"
password = "admin"

說明

  • 監聽?7000?端口接受客戶端連接

  • 監聽?8080?端口作為 HTTP 虛擬主機端口

  • 開啟?token認證?和?TLS強制加密

  • 管理后臺開放7500端口


② 啟動 frps 容器

docker run -d \--name frps \-p 7000:7000 \-p 8080:8080 \-p 127.0.0.1:7500:7500 \-v $(pwd)/frps.toml:/etc/frp/frps.toml \-e FRP_MODE=server \micrograils/frp:latest

Tips

  • 管理后臺7500端口只綁定127.0.0.1,避免暴露到公網

  • 容器內讀取本地掛載的配置文件


2.2 客戶端(frpc)部署

在本地機器(比如家庭服務器)創建?frpc.toml

serverAddr = "你的服務器公網IP或域名"
serverPort = 7000transport.tls.enable = trueauth.method = "token"
auth.token = "strong_token_here"[webServer]
addr = "0.0.0.0"
port = 7400
user = "admin"
password = "admin"[[proxies]]
name = "home-web"
type = "http"
localIP = "127.0.0.1"
localPort = 8080
customDomains = ["www.sample.com"]

③ 啟動 frpc 容器(使用host網絡)

docker run -d \--name frpc \--network host \-v $(pwd)/frpc.toml:/etc/frp/frpc.toml \-e FRP_MODE=client \micrograils/frp:latest

說明

  • 使用?--network host,frpc容器直接訪問本機服務

  • 將本地8080端口通過frp注冊到服務器

  • 綁定域名?www.sample.com


3?? 優化:Server端引入前置Nginx,隱藏8080端口

frp默認的 HTTP服務使用?vhostHttpPort(比如8080), 如果直接訪問,需要帶端口號,如:

http://www.sample.com:8080

體驗極差!

標準解決方法:在服務器上用Nginx反向代理,將80端口請求轉發到8080端口。


① 安裝Nginx

Ubuntu/Debian系統:

sudo apt update
sudo apt install nginx

② 配置Nginx反向代理

編輯?/etc/nginx/sites-available/default?或創建新conf:

server {listen 80;server_name www.sample.com;location / {proxy_pass http://127.0.0.1:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}

③ 重啟Nginx

sudo systemctl restart nginx

④ 測試訪問

現在可以直接通過:

http://www.sample.com

優雅訪問你本地服務器的Web服務啦!

(無須攜帶8080端口,體驗更好,SEO友好)


4?? 完善實踐建議

在實際生產部署中,還推薦做如下優化:

項目

建議

HTTPS加密

給Nginx配置 Let's Encrypt 免費SSL證書(推薦用certbot自動續期)

防火墻加固

只允許必要端口開放,如7000/80/443,管理端口7500僅內網可訪問

frp限速

根據需求在frps中配置帶寬控制(bandwidth.limit)

多域名管理

支持多個customDomains,在frp配置中擴展

容災備份

保留 frps 和 frpc 的配置文件快照


5?? 小結

通過 frp + Docker + Nginx 的組合方案,我們可以:

  • 快速、安全地將內網服務暴露到公網

  • 保持訪問體驗優雅(無端口號訪問)

  • 實現靈活的多域名、多服務映射

  • 保證通信過程加密認證,提高安全性

對于中小企業辦公、遠程訪問、個人項目展示,這是一套成本低、擴展性強的內網穿透實戰方案。

如果你的應用場景中,需要更多定制(比如雙向認證、動態注冊等),frp也提供了豐富的擴展功能,值得深入挖掘!


📢 最后提示

  • 本文所有部署基于?frp 0.68版,不同版本請注意配置項差異

  • 示例用鏡像?micrograils/frp,推薦搭配Docker統一管理,簡潔高效

  • Nginx反向代理不僅提升體驗,也是未來統一接入網關建設的基礎

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81307.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81307.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81307.shtml

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

相關文章

完美中國制度流程體系建設(70頁PPT)(文末有下載方式)

資料解讀:《完美中國制度流程體系建設》 詳細資料請看本解讀文章的最后內容。 該文檔圍繞完美中國制度流程體系建設展開,從風險管理流程等前期工作切入,全面剖析企業制度流程體系框架,結合案例指出常見問題,評估完美公…

計算機組成原理實驗(5) 堆棧寄存器實驗

實驗五 堆棧寄存器實驗 一、實驗目的 1、熟悉堆棧概念 2、熟悉堆棧寄存器的組成和硬件電路 二、實驗要求 按照實驗步驟完成實驗項目,對4個堆棧寄存器進行讀出、寫入數據操作。 三、實驗說明 3.1 堆棧寄存器組實驗構成(圖3-1) 本系統…

RAGFlow報錯:ESConnection.sql got exception

環境: Ragflowv0.17.2 問題描述: RAGFlow報錯:ESConnection.sql got exception _ming_cheng_tks, 浙江, operatorOR;minimum_should_match30%) 2025-04-25 15:55:06,862 INFO 244867 POST http://localhost:1200/_sql?formatjson […

鼠標滾動字體縮放

在VsCode中編輯文件時,有時候發現Ctrl鼠標滾輪并不能縮放字體,下面是啟用這個功能的方法。 第一步: 進入設置,可以從左下角按鈕菜單進入,也可以使用【Ctrl,】。 第二步: 啟用鼠標滾輪縮放功能 第三步&…

深度學習·經典模型·VisionTransformer

VIT embedding處理與標準的Transformer不同,其他基本一致 Embedding Graph: ( H , W , C ) (H,W,C) (H,W,C) Patch: ( N , P 2 C ) (N,P^2C) (N,P2C),其中 N H ? W P 2 N\frac{H*W}{P^2} NP2H?W?, P P P是patch的大小 注意的是,論文了保留與Bert的…

Python Selenium 完全指南:從入門到精通

Python Selenium 完全指南:從入門到精通 📚 目錄 環境準備與基礎入門元素定位與交互操作等待機制與異常處理面向對象封裝與框架設計進階技巧與最佳實踐性能優化與調試技巧實戰案例分析 環境準備與基礎入門 1. 安裝 Selenium 與瀏覽器驅動 安裝 Selen…

基于ffmpeg的音視頻編碼

1 音頻編碼 本質上是由pcm文件轉到一個協議文件 比如說aac協議 1.1 音頻基本知識回歸 比特率 比特率是指單位時間內傳輸或處理的比特(bit)數量,通常用 bps(bits per second,比特每秒)來表示。它是衡量數…

BT137-ASEMI機器人功率器件專用BT137

編輯:LL BT137-ASEMI機器人功率器件專用BT137 型號:BT137 品牌:ASEMI 封裝:TO-220F 批號:最新 引腳數量:3 封裝尺寸:如圖 特性:雙向可控硅 工作結溫:-40℃~150℃…

攻防世界 dice_game

dice_game ??????dice_game (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file game game: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]254…

Astral Ascent 星界戰士(星座上升) [DLC 解鎖] [Steam] [Windows SteamOS macOS]

Astral Ascent 星界戰士(星座上升) [DLC 解鎖] [Steam] [Windows & SteamOS & macOS] 需要有游戲正版基礎本體,安裝路徑不能帶有中文,或其它非常規拉丁字符; DLC 版本 至最新全部 DLC 后續可能無法及時更新文章…

git中reset和checkout的用法

git reset:重置分支的歷史與工作區? 核心作用??:移動當前分支的指針(即改變分支的歷史),并可選地修改暫存區(Index)和工作目錄(Working Directory)。常用于撤銷提交或…

權限提升—Linux提權內核溢出漏洞輔助項目

前言 今天開啟Linux提權的篇章,主要是講一下Linux的內核漏洞提權,利用方式和Windows系統漏洞提權差不多,也是網上的項目掃一下,然后根據漏洞編號去找exp即可。 信息收集 首先要說一下Linux用戶的權限劃分。 系統用戶&#xff…

React Native Redux 使用指南 redux-toolkit

React Native Redux 使用指南 redux-toolkit 一個可預測和可維護的全局狀態管理 JavaScript 庫 Redux 和 React-Redux以及**reduxjs/toolkit 的關系:** Redux、React-Redux、reduxjs/toolkit 是 React 生態中狀態管理的「黃金三角組合」,它們的關系可…

JVM——Java 虛擬機是如何加載 Java 類的?

引入 在 Java 世界的底層運作中,類加載機制扮演著一個既神秘又關鍵的角色。它就像是一個精心設計的舞臺幕后 machinery,確保了 Java 程序能夠順利運行。今天,我們就深入探索 Java 虛擬機(JVM)是如何加載 Java 類的。 …

清華團隊提出時序聚類數據庫內高效方案,已被SIGMOD 2025接收

時間序列聚類是挖掘物聯網等場景下頻繁模式的關鍵技術,但現有SOTA方法(如K-Shape)面臨兩大瓶頸:1)傳統數據庫因LSM-Tree存儲導致時間戳無序,難以直接支持高效聚類;2)跨時間范圍查詢需…

【阿里云大模型高級工程師ACP學習筆記】2.8 部署模型

一、學習目標 特別說明:這一章節是2025年3月官方重點更新的部分,幾乎對內容重新翻新改造了一遍,重點突出了對于如何結合不同的阿里云產品來部署大模型進行了更加詳細的介紹和對比,這里整理給大家,方便大家參考。 在備考阿里云大模型高級工程師ACP認證的過程中,學習《2.8 …

第T10周:數據增強

🍨 本文為🔗365天深度學習訓練營 中的學習記錄博客🍖 原作者:K同學啊 從 tensorflow.keras 中導入 layers 模塊,包含了常用的神經網絡層,用來搭建模型結構。 檢查并列出系統中可用的物理 GPU 設備&#xff…

uniapp 支付寶小程序自定義 navbar 無效解決方案

如圖: uniapp編譯到支付寶小程序隱藏默認的導航欄失效了 解決方案: 在 pages.json 文件中找到 globalStyle 中加入以下代碼: "mp-alipay": {"transparentTitle": "always","titlePenetrate":…

vue2 el-element中el-select選中值,數據已經改變但選擇框中不顯示值,需要其他輸入框輸入值才顯示這個選擇框才會顯示剛才選中的值

項目場景&#xff1a; <el-table-column label"稅率" prop"TaxRate" width"180" align"center" show-overflow-tooltip><template slot-scope"{row, $index}"><el-form-item :prop"InquiryItemList. …

centos7 離線安裝python3 保留python2

一、事前準備&#xff1a; &#xff08;1&#xff09;查看centos具體版本 cat /etc/redhat-releaseCentOS Linux release 7.4.1708 (Core) &#xff08;2&#xff09;查看linux中當前python版本 centos7 默認安裝python2.7.5 &#xff08;3&#xff09;查看python3的依賴&#…