高隐蔽 VLESS 代理:真站伪装 + 端口分离架构

架构总览

用户浏览器
   │
   └── https://mydomain.com (443) → Nginx → 返回自定义网页 /var/www/proxy/index.html

VLESS 客户端
   │
   └── mydomain.com:8443 → Nginx → 转发到 127.0.0.1:10086 (Xray)

✅ 1. 前提条件

Ubuntu 20.04/22.04 云服务器(1核1G+)

域名 mydomain.com 已解析到服务器 IP

开放防火墙端口:80,443,8443

(ubuntu等主流):
sudo ufw status verbose
sudo ufw allow 443/tcp
sudo ufw enable

(部分linux):
sudo firewall-cmd --list-ports
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --reload

产看端口占用情况

sudo ss -tulnp | grep -E ':80|:443|:8443'

✅ 2. 安装必要软件

更新系统

sudo apt update && sudo apt upgrade -y

安装 Nginx + Certbot

sudo apt install nginx certbot python3-certbot-nginx -y

安装 Xray(官方一键脚本)

sudo bash -c “$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)” @ install

✅ 3. 部署伪装网站

sudo mkdir -p /var/www/proxy
echo '<h1>Hello, world! Study hard.</h1>' | sudo tee /var/www/proxy/index.html > /dev/null

确保 nginx 用户(通常是 www-data)有读权限

sudo chmod -R 755 /var/www/proxy
sudo chown -R www-data:www-data /var/www/proxy

✅ 4. 申请 SSL 证书(Let’s Encrypt)
sudo certbot --nginx -d mydomain.com --register-unsafely-without-email --agree-tos

查看证书

ls -l /etc/letsencrypt/live/proxy.mydomain.com/

✅ 5. 配置 Nginx(/etc/nginx/sites-available/default)

cat << 'EOF' | sudo tee /etc/nginx/sites-available/default > /dev/null
# =============== 主站:443 端口(给浏览器访问)===============
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name mydomain.com;

    # SSL 证书
    ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;

    # 安全优化(可与 8443 共用)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE+AESGCM:DHE+AESGCM;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # 伪装网站根目录
    root /var/www/proxy;
    index index.html;

    # 所有请求返回静态页面(不暴露 /proxy 路径)
    location / {
        try_files $uri $uri/ =404;
    }

    # 可选:隐藏代理路径,禁止直接访问
    location /proxy {
        return 404;
    }

    # 安全头
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options DENY;
    add_header Referrer-Policy no-referrer;

    access_log /var/log/nginx/main_access.log;
    error_log /var/log/nginx/main_error.log;
}

# =============== 代理专用:8443 端口(给 Xray 客户端)===============
server {
    listen 8443 ssl http2;
    listen [::]:8443 ssl http2;
    server_name mydomain.com;

    ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE+AESGCM:DHE+AESGCM;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # 只允许 /proxy 路径,其他返回 404
    location / {
        return 404;
    }

    location /proxy {
        proxy_pass http://127.0.0.1:10086;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
    }

    access_log /var/log/nginx/proxy_access.log;
    error_log /var/log/nginx/proxy_error.log;
}

# =============== HTTP 强制跳转 HTTPS(到 443)===============
server {
    listen 80;
    listen [::]:80;
    server_name mydomain.com;
    return 301 https://$host$request_uri;  # 默认跳转到 443
}
EOF

重载 Nginx

sudo nginx -t && sudo systemctl reload nginx

✅ 6. 配置 Xray(/usr/local/etc/xray/config.json)

*kill xray 相关的进程 (如果之前装了xray-agent或者x-ui的话)

sudo pkill -f xray

*查看 xray 相关的进程

ps aux | grep xray | grep -v grep

创建配置文件

cat << 'EOF' | sudo tee /usr/local/etc/xray/config.json > /dev/null
{
  "inbounds": [
    {
      "port": 10086,
      "listen": "127.0.0.1",
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "你的UUID"
          }
        ],
        "decryption": "none",
        "fallbacks": []
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
          "path": "/proxy"
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom"
    }
  ]
}
EOF

🔑 替换 “你的UUID” 为真实 UUID(可用 xray uuid 生成)/usr/local/bin/xray uuid

systemd 配置优化 cat /etc/systemd/system/xray.service

[Unit]
Description=Xray Service
Documentation=https://github.com/xtls
After=network.target nss-lookup.target

[Service]
User=nobody
Group=nogroup
ExecStart=/usr/local/bin/xray run -config /usr/local/etc/xray/config.json
Restart=on-failure
RestartSec=5s
LimitNOFILE=65536
LimitNPROC=4096
NoNewPrivileges=true
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target

systemd 重载

sudo systemctl daemon-reload

测试并重启

/usr/local/bin/xray -test -config /usr/local/etc/xray/config.json
sudo systemctl restart xray

查看实时运行日志

sudo journalctl -u xray -f --no-pager

启用开机自启

sudo systemctl enable --now xray nginx

✅ 7. 客户端配置(VLESS)

字段
类型VLESS
地址mydomain.com
端口443
UUID你的UUID
加密none
传输协议WebSocket
路径/proxy
TLS✅ 开启
SNImydomain.com

✅ 8. 验证

浏览器访问:https://mydomain.com → 显示正常网页 ✅

客户端连接:成功代理上网 ✅

🔄 9. 日常维护

服务状态:

systemctl status xray nginx

更新 Xray:

sudo bash -c “$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)” @ install

证书自动续期(Certbot 默认已配置 cron):

sudo certbot renew –dry-run # 测试续期

一条评论

留下评论

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