Маскировка VPN-трафика под обычный HTTPS через Apache reverse proxy.
Клиент → Apache (домен:443, SSL) → /test/ прокси → 3x-ui (IP_сервера_Б:порт, без SSL)
DPI видит обычный HTTPS-трафик к домену, реальный VPN-сервер скрыт за Apache.
a2enmod proxy proxy_http rewrite ssl
systemctl restart apache2
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>
a2ensite vpn
systemctl reload apache2
/testСсылка импорта:
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
https://твой-домен.com/ — должен показываться обычный сайт (маскировка)В корне сайта (обычно public_html/ или www/):
RewriteEngine On
RewriteRule ^test/(.*)$ http://IP_СЕРВЕРА_Б:ПОРТ/$1 [P,L]
Важно: не все хостинги разрешают mod_proxy (флаг [P]). Если хостинг шаред-дешёвый — может не работать. Спросить у поддержки или попробовать.
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);
}
};
твой-домен.com/test/*/testvless://UUID@твой-домен.com:443?encryption=none&security=tls&type=ws&host=твой-домен.com&path=%2Ftest&sni=твой-домен.com#VLESS-WS
[P] флагом.htaccess с [P]