惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

SecWiki News
SecWiki News
N
Netflix TechBlog - Medium
D
Docker
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
U
Unit 42
Recorded Future
Recorded Future
G
Google Developers Blog
T
Threatpost
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
The Blog of Author Tim Ferriss
C
Cyber Attacks, Cyber Crime and Cyber Security
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
V
Vulnerabilities – Threatpost
Project Zero
Project Zero
WordPress大学
WordPress大学
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
M
MIT News - Artificial intelligence
月光博客
月光博客
Spread Privacy
Spread Privacy
Know Your Adversary
Know Your Adversary
人人都是产品经理
人人都是产品经理
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Hacker News
The Hacker News
K
Kaspersky official blog
Simon Willison's Weblog
Simon Willison's Weblog
MongoDB | Blog
MongoDB | Blog
J
Java Code Geeks
I
Intezer
Y
Y Combinator Blog
P
Proofpoint News Feed
G
GRAHAM CLULEY
L
LINUX DO - 热门话题
Schneier on Security
Schneier on Security
B
Blog
Jina AI
Jina AI
V2EX - 技术
V2EX - 技术
雷峰网
雷峰网
Last Week in AI
Last Week in AI
V
V2EX
Martin Fowler
Martin Fowler
P
Palo Alto Networks Blog
Latest news
Latest news
Google DeepMind News
Google DeepMind News
L
Lohrmann on Cybersecurity
The Last Watchdog
The Last Watchdog

WAYJAM

告别 NPM Token:迁移到 Trusted Publishing 全记录 Sing-box:IPv6 优先出站与 Netflix 强制 IPv6 分流 [All In One] HomeLab 虚拟化 iKuai + Mihomo - IPv6 支持 [All In One] HomeLab 虚拟化 iKuai + Mihomo LiteLLM 多模型 API 中转 MacOS Bootstrp with Nix Fluency Support Full Rss [All In One] PVE 中 OpenWrt LXC 重启问题 Tabby 终端配置以及配置全平台同步 PVE 7 升级 8 笔记 PVE 安装 Android x86 & 安装 Magisk Fly.io 部署 Artalk 评论系统 [All In One] HomeLab 2023 搭建总结 [All In One] 轻量的文件 & 媒体服务器配置 [All In One] R71s 主机散热改造 [All In One] PVE LXC 安装 OpenWrt 软路由以及网络规划 [All In One] 安装 Proxmox VE 7.4 从零开始配置Rime - 2023 Self Hosted Bitwarden + Cloudfare HTTPS Debian NFS Server 以及 MacOS Client AdguardHome 和 Clash 透明代理配合使用 使用 Kind 部署 Prow 手记 BackBlaze B2 + Cloudfare Worker 图床 PicGo Amazon S3 插件 自动给模板生成 Inline-Svg Hugo Theme WeUI 发布! Hugo Theme Fluency 发布! Docker Clash 和 透明代理 有限状态机与分布式熔断器 「家庭娱乐」N1刷 EmuELEC 做游戏盒子 「家庭娱乐」N1刷 Armbian 做家庭服务器 分布式限流器之令牌桶实现 Kustomize 管理 Kubernetes 集群 Mixedpaper 主题发布到 Hugo 官方仓库 About 优化 Docker 构建时间 解决 etcd 与 grpc 不兼容问题 Kubernetes 部署 ElasticSearch7 集群 从零开始配置Rime - 2019 转移域名,更换评论系统,更换图床 搭建 NPM Proxy 之预编译包 搭建 NPM Proxy 美区Apple ID终于绑定PayPal成功 无可奈何的页面增强方案 LogStash的调试 GitLab Shell如何通过SSH工作 Python打开类 荒原 [Theme] Bitcron主题Mixedpaper发布! Ngrok端口转发 故事之五 - 柠檬茶 故事之四 - 我是天才 故事之一 Arch滚挂了怎么办? OpenWrt内网IPv6之二 某次更新后Primusrun不能启动Dota2 OpenWrt的DNS智能解析方案 替换Google CDN库 使用Privoxy将socks代理转化为http代理 ArchLinux之软件篇 再次安装ArchLinux手记 博客再次重生 搞了个Minecraft服务器 【LnV工作室荣誉出品】小苹果MV华农大版 雨梦 醉臥石中笑人間 路由器内网IPV6地址分配 OPENWRT安装软件的两个问题 路由器上进行锐捷认证 改了BIOS的LOGO Windows下搭建我的C/C++的开发环境 Linux下用Mentohust认证校园网 Archlinux+Windows 双系统安装手记(UEFI+GPT) Google-code-prettify代码高亮 《末世迷踪》 Hello Net World!
Cloudflare Tunnel + Nginx Proxy Manager:服务穿透
2024-03-10 · via WAYJAM

Nginx Proxy Manager

Nginx Proxy Manager 是一个 Nginx 的可视化代理管理器,自带面板,操作极其简单,非常适合配合 Docker 搭建的应用使用。

version: '3.8'
name: proxy
services:
  nginx:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    container_name: nginx
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - /data/docker/nginx:/data
      - /data/docker/letsencrypt:/etc/letsencrypt
networks:
  appnet:
    external: true

其他需要被 Nginx 反代的服务理论上不需要配置 ports 暴露端口,只需要都加入同一个 docker 网络,在 Nginx 配置的使用域名指向即可。

另外 Nginx Proxy Manager 可以一键申请 SSL 证书,并且会自动续期。注意,申请证书时,Let’s Encrypt 会访问域名进行校验,所以先通过 Cloudflare 配置可外部访问之后,再进行配置证书。

Cloudflare Tunnel

创建 Tunnel

首先进入Cloudflare 管理面板的 Zero Trust - Network - Tunnels:

  1. 点击 Create a tunnel,创建一个 Cloudflared 类型的 Tunnel,点击下一步
  2. 输入 Tunnel 名称,点击下一步
  3. 页面将会显示各个平台的安装方式,在这里可以找到 Tunnel 的 token

安装 cloudflared

根据指引的安装方式启动连接成功后,页面 Connectors 将会显示连接的实例。

更多安装指南:https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/

Docker 启动

以下为 Docker 启动案例:

  • 网络模式设置成 host
  • Transport协议设置成 http2:默认 cloudflared 以 quic 协议建立链接,如果当前网络环境 UDP 链接使用有问题则设置成 http2
  • 增加 DNS 配置:如果当前环境的 DNS 无法解析 cloudflare 相关域名(如 clash 的 fake-ip 模式影响),则可以指定 DNS。
version: '3.0'
name: cloudflare
services:
  cloudflared_tunnel:
    restart: always
    container_name: cloudflare_tunnel
    hostname: cloudflare_tunnel
    image: cloudflare/cloudflared:latest
    command: tunnel --no-autoupdate --metrics=127.0.0.1:3333 run --token xxx
    network_mode: host
    user: "0:0"
    environment:
      PUID: 0
      PGID: 0
      TUNNEL_TRANSPORT_PROTOCOL: http2
    dns:
    - 1.2.4.8
networks:
  appnet:
    external: true

配置路由

Step 1 【Nginx Proxy Manager】:新增一个 Proxy Host

  • 配置 Publicly Accessible
  • 不配置 SSL

Step 2【Cloudflare】进入Tunnel 配置页面,找到对应 Tunnel 点击 Configure 进入 Tunnel 配置,这里我们要配置 Public hostnames

  • 分别填写域名(需已经使用 Cloudflare 解析)
  • 转发目标 Service 的 URL(注意,此时必须先选择 HTTP 协议,因为还未申请成功 SSL)

Step 3 【Nginx Proxy Manager】找到对应的 Proxy 配置

  • 切换到 SSL 选择 Request a new SSL Certification
  • 选择 Force HTTPS(根据实际情况)
  • 稍等片刻,证书就申请和配置好了

Step 4 【Cloudflare】进入 Tunnel 配置页面,找到对应 Public hostname,点击 Configure

  • 将 Service 的 Type 切换成 HTTPS(如果不切换且 Nginx 配置了 Force HTTPS,就会无限重定向)
  • 展开 AddAdditional application settings - TLS - 在 Origin Server Name 中填入对应反代的域名,否则 Nginx 不能正确转发。(部分域名敏感的应用还需配置 HTTP Settings 的 HTTP Host Header 才能正确识别,根据实际情况配置)

大功告成,到此内网的服务就可以通过 Cloudflare 和 Nginx Proxy Manager 映射到外网。

内网访问速度优化

在内网访问已经配置好映射的域名的时候,也会被解析至 Cloudflare 然后通过 Tunnel 转发,这影响了访问速度,如果内网是使用类似 Adguard 的解析服务,可以通过重写 DNS,将域名直接指向 Nginx Proxy Manager,减少链路长度,提升访问体验。

其他解析服务如 Clash、dnsmasq,甚至于在路由或者PC上配置 hosts 也能达到同样效果