dayeah

反代网站最简单的方法中转机落地机隐藏源站

时间:2022-10-17   阅读:564

先把架构再明确一下(你现在最稳、最通用的方案):

  • B = 公网入口、SSL 终端、反向代理

    • 域名 3.com 解析到 B

    • B 上给 3.com 申请 Let’s Encrypt 证书,强制 HTTPS

    • B 反向代理到 A(内网 / 本机 HTTP)

  • A = 后端源站,只听 HTTP(80),不需要公网 SSL

    • A 也绑定 3.com

    • A 不开 443、不配置公网证书

下面分两块: 1)宝塔 A + B 点哪里(最简版) 2)1Panel B(公网反代 + SSL)+ A(HTTP 源站)教程


一、宝塔:B(公网)+ A(后端)极简操作

🟦 B 服务器(公网,有域名 3.com

  1. 添加站点

    • 网站 → 添加站点 → 域名:3.com → 提交(随便 PHP 版本)

  2. 申请 SSL(Let’s Encrypt) image

    • 网站 → 3.com → 设置 → SSL

    • Let’s Encrypt → 勾选 3.com → 验证方式:文件验证(80 端口) → 申请image

    • 申请成功后,打开 强制 HTTPS(右上角)1Panel

  3. 配置反向代理(关键)

    • 回到站点设置 → 反向代理 → 添加反向代理

    • 名称:随便(比如 to-A

    • 目标 URL:http://A的IP (A 只开 80)

    • 发送域名(Host):3.com

    • 保存 → 重启 Nginx

🟩 A 服务器(后端,不需要公网 SSL)

  1. 添加站点

    • 网站 → 添加站点 → 域名:3.com

    • 端口:80(HTTP),不要开 443

  2. SSL 设为 “不启用”

    • 站点设置 → SSL → 选择 不启用

  3. 放行防火墙 80 端口

  4. A 不要把 3.com 解析到自己!只在 B 解析。

这样: 用户 → HTTPS://3.com(B,有证书)→ HTTP://AIP(A,无证书)→ 正常访问

二、1Panel 教程(B 用 1Panel 做 SSL + 反代;A 可以是宝塔 / 1Panel)

🟦 B 服务器(1Panel,公网,3.com

0)准备

  • 已安装 1Panel + OpenResty(应用商店一键装)

  • 域名 3.com A 记录指向 B 公网 IP

  • 防火墙放行 80、443

1)申请 SSL 证书(Let’s Encrypt)

  1. 登录 1Panel → 左侧 网站SSL 证书image

  2. 添加证书 → 选 Let’s Encryptimage image

    • 域名:3.com(可加 www.3.com

    • 验证方式:HTTP 验证(推荐)

    • 邮箱:填一个(用于续期通知)

    • 勾选 自动续签 → 确定,等待 1–2 分钟

2)创建网站并启用 HTTPS

  1. 网站 → 创建网站

    • 域名:3.com

    • 运行目录:随便(如 /www/3com

    • 服务器:选 OpenResty → 提交

  2. 网站列表 → 3.com配置HTTPS1Panelimage

    • 启用 HTTPS:开启

    • 证书:选刚才申请的 3.com 证书

    • 强制跳转:HTTP → HTTPS

    • 保存

3)配置反向代理到 A

  1. 同一配置页 → 反向代理添加反向代理image

    • Host: $host

    • X-Real-IP: $remote_addr

    • X-Forwarded-For: $proxy_add_x_forwarded_for

    • X-Forwarded-Proto: $scheme

    • 代理名称:proxy-to-A

    • 前端路径:/

    • 后端地址:http://A的IP (A 只开 80)

    • 下面 Header 勾选:

  2. 保存 → 重启 OpenResty

4)1Panel 里 Nginx 配置(核对用)

3.com 配置文件里,核心段会长这样(不用手改,面板生成):nginx

server {     listen 80;     server_name 3.com;     return 301 https://$host$request_uri; } server {     listen 443 ssl;     server_name 3.com;     ssl_certificate /xxx/3.com.fullchain.pem;     ssl_certificate_key /xxx/3.com.privkey.pem;     location / {         proxy_pass http://A的IP;         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;     } }

🟩 A 服务器(后端,HTTP 即可)

无论 A 是宝塔还是 1Panel:

  • 站点绑定:3.com

  • 监听端口:80(HTTP)

  • 不配置 SSL、不开 443

  • 防火墙放行 80

  • DNS 不要把 3.com 指向 A


三、你最关心的那句总结

域名指向 B = B 才能给这个域名申请公网 SSL;A 不能也不需要用这个域名再做公网 SSL。
  • 对外:只有 B 一个 HTTPS/SSL 入口

  • 对内:B→A 用 HTTP 最简单、最稳、最普遍



如果源站也要用SSL可以建个二级域名然后3.com 反代到A源站的a.3.com 



源服A   代理B


源服上有1  2   3  4绑多个域名站


B要代理其中的3站


以上前提,没理解错的话


B上创建以3域名的站  绑定3域名  设置3域名的ssl...就是跟你平时搭建3域名站的步骤一样   只不过这个3站可以是空的   然后3域名解析到B服


宝塔反向代理目标URL   这里2种选择   1:A服ip+A服3站上的端口(不推荐因为A服多站公用一个80  443端,可能出现代理到1 2  4...其他站上,当然也可以通过把3站设置成默认站解决  或者改3站的端口 但会影响其他站)


2.A服3站帮3的一个2级域名比如:yuan.3.com   B服上的代理目标url填这个 


发送域名  3的主域


以上设置没问题的话  再访问不了  那就看你AB之间互通有没有出问题    A被强?  B被强?


上一篇:银行和支付宝每天能转出多少钱限额

下一篇:抖音视频下载到手机相册方法

网友评论