2 核 2GVPS同时部署Reality代理+ 网站/博客

之前只对照着油管部署过基于VMESS+域名的VPS搭建,因为缺乏网络知识,只能一步一步来,不敢有任何创新,通了之后也不敢再多做多余的操作,VPS就基本单一功能搁置了,真的挺浪费。一直想做个又能有基本功能又能写东西的网站,对照着网上的文章走却经常遇到问题而无法及时解决,就卡住了,现在有了CHATGPT,跟着走,有问题及时反馈,居然就配合成了,记录一下要点。

一、从 0 到可用:我做了什么(过程要点版)

你可以把这一段当成正文主体


1️⃣ 购买服务器之后,我先做了什么?

目标很清晰:

  • 一台海外 VPS
  • 同时跑:
    • 个人博客(WordPress)
    • 自用代理(Reality)
  • 只用 一个 443 端口
  • 不影响网站正常访问

关键选择:

  • 系统:Ubuntu 24.04
  • 博客:WordPress(Docker)
  • 代理:Xray + Reality(xtls-rprx-vision)
  • Web:Nginx(Docker)

2️⃣ SSH 与基础安全(第一个坑)

做了什么

  • 使用 SSH Key 登录
  • 关闭 root 密码登录
  • 新建普通用户

遇到的坑

  • cloud-init 会覆盖 sshd 配置
  • /etc/ssh/sshd_config.d/50-cloud-init.conf 优先级很高
  • 正确做法是:
    • 新建 99-local.conf
    • 不直接改 cloud-init 文件

👉 教训

云厂商环境 ≠ 裸机,配置优先级一定要看清楚。


3️⃣ Docker + WordPress(看似简单,其实坑不少)

做了什么

  • Docker Compose 管理:
    • nginx
    • wordpress (php-fpm)
    • mariadb
  • WordPress 只跑 PHP
  • Nginx 负责 HTTPS 和反代

关键结构

/opt/docker/web
├── docker-compose.yml
├── nginx/
│   └── conf.d/default.conf
├── wordpress/
│   └── html/
├── php/
│   └── php.ini

4️⃣ HTTPS 与证书(第二个坑)

做了什么

  • 使用 certbot 申请 Let’s Encrypt
  • 证书在宿主机
  • 挂载进 Docker nginx

遇到的坑

  • certbot 默认用 nginx 插件
  • Docker nginx 占用 80 / 443 时:
    • certbot 会失败

正确思路

  • 使用 webroot 模式
  • 明确 .well-known/acme-challenge 路径
  • 证书续期 ≠ 重启 Docker

👉 教训

HTTPS 是“宿主机级别”的事,不要和容器混在一起。


5️⃣ Reality + 博客共存(最核心的一步)

最终架构(这是精华)

公网 443
  ↓
Xray(Reality)
  ├─ Reality 客户端 → 代理流量
  └─ 普通 HTTPS → 转发到 127.0.0.1:8443
                          ↓
                       Docker Nginx
                          ↓
                       WordPress

关键点

  • Nginx 不再监听公网 443
  • Nginx 只监听:
    • 80
    • 127.0.0.1:8443
  • Xray 独占 443

👉 Reality 的“伪装”不是流量大小,而是协议外观


6️⃣ Reality 身份材料(一个容易想错的地方)

用到的三样东西

  • PrivateKey(服务器)
  • UUID(用户)
  • shortId(Reality 指纹)

正确认知

  • 生成 一次
  • 固定使用
  • 不是每次连接都重新生成

👉 生成多次没问题,用错才有问题。


7️⃣ WordPress 上传 413 / PHP 限制(经典三连坑)

遇到的报错

  1. 413 Request Entity Too Large(nginx)
  2. upload_max_filesize 太小(PHP)
  3. Elementor / 主题解压超时

正确解决方式

  • nginx:
client_max_body_size 128M;
  • PHP(挂载 php.ini):
upload_max_filesize = 128M
post_max_size = 128M
memory_limit = 256M
max_execution_time = 300

👉 关键坑

改 php.ini 后,必须 docker compose up -d --force-recreate


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注