← Назад

vless-apache-proxy

🔐 Войти для редактирования

VLESS + WebSocket через Apache (обратный прокси)

Маскировка VPN-трафика под обычный HTTPS через Apache reverse proxy.

Схема

Клиент → Apache (домен:443, SSL) → /test/ прокси → 3x-ui (IP_сервера_Б:порт, без SSL)

DPI видит обычный HTTPS-трафик к домену, реальный VPN-сервер скрыт за Apache.

Вариант 1: Apache на VPS (сервер A)

Шаг 1. Подготовка серверов

Шаг 2. На сервере A — включить модули Apache

a2enmod proxy proxy_http rewrite ssl
systemctl restart apache2

Шаг 3. На сервере A — создать конфиг сайта

nano /etc/apache2/sites-available/vpn.conf

Вставить:

<VirtualHost *:443>
    ServerName твой-домен.com

    SSLEngine on
    SSLCertificateFile /path/to/cert.pem
    SSLCertificateKeyFile /path/to/key.pem

    RewriteEngine On
    RewriteRule ^test/(.*)$ http://IP_СЕРВЕРА_Б:ПОРТ/$1 [P,L]

    # Обычный сайт-маскировка на корне
    DocumentRoot /var/www/html
</VirtualHost>

Шаг 4. Включить сайт и перезапустить

a2ensite vpn
systemctl reload apache2

Шаг 5. На сервере Б — в 3x-ui создать inbound

Шаг 6. В 3x-ui добавить клиента

Шаг 7. Настроить клиент (V2RayTun/Hiddify)

Ссылка импорта:

vless://UUID@твой-домен.com:443?encryption=none&security=tls&type=ws&host=твой-домен.com&path=%2Ftest&sni=твой-домен.com#VLESS-WS

Заменить:
- UUID — из шага 6
- твой-домен.com — домен сервера A
- path=/test — должен совпадать с RewriteRule

Шаг 8. Проверить


Вариант 2: Хостинг (shared hosting) через .htaccess

Шаг 1. На хостинге — создать .htaccess

В корне сайта (обычно public_html/ или www/):

RewriteEngine On
RewriteRule ^test/(.*)$ http://IP_СЕРВЕРА_Б:ПОРТ/$1 [P,L]

Важно: не все хостинги разрешают mod_proxy (флаг [P]). Если хостинг шаред-дешёвый — может не работать. Спросить у поддержки или попробовать.

Шаг 2. Если [P] не работает — альтернатива через Cloudflare Workers

  1. Домен на Cloudflare
  2. Создать Worker:
export default {
  async fetch(request) {
    const url = new URL(request.url);
    if (url.pathname.startsWith('/test/')) {
      url.hostname = 'IP_СЕРВЕРА_Б';
      url.port = 'ПОРТ';
      url.protocol = 'http:';
      return fetch(url, request);
    }
    return fetch(request);
  }
};
  1. Привязать Worker к домену через Routes: твой-домен.com/test/*

Шаг 3. На сервере Б — 3x-ui

Шаг 4. Клиент

vless://UUID@твой-домен.com:443?encryption=none&security=tls&type=ws&host=твой-домен.com&path=%2Ftest&sni=твой-домен.com#VLESS-WS

Итого