Розмістити VPN (наприклад, VLESS Reality) та веб-сайт на одному VPS, використовуючи зайнятий порт 443, можна ефективно за допомогою SNI-маршрутизації з Nginx або sing-box, де Nginx, прослуховуючи порт 443, перенаправляє трафік на основі SNI, відправляючи HTTPS-запити до сайту та інший TLS-трафік до VPN-сервера, що вимагає мінімум 2 vCPU та 4 GB RAM для стабільної роботи.
Багато користувачів VPS стикаються з дилемою: запустити власний VPN-сервер для безпечного та вільного доступу до інтернету або розмістити веб-сайт, доступний за протоколом HTTPS. Обидва сервіси за замовчуванням прагнуть зайняти один і той самий порт 443, створюючи конфлікт. Проте сучасні технології дозволяють вирішити цю проблему елегантно та ефективно, використовуючи механізми маршрутизації TLS-трафіку. У цій статті ми детально розглянемо, як налаштувати VPN та сайт на одному сервері, використовуючи Nginx або sing-box як інтелектуальний проксі, що розділятиме вхідний трафік та спрямовуватиме його за призначенням, роблячи вашу зв'язку стійкою до систем глибокої інспекції пакетів (DPI).
Чому порт 443 зайнятий і як SNI-маршрутизація вирішує цю проблему?
Порт 443 — це стандартний порт для захищеного протоколу передачі гіпертексту (HTTPS), який використовується для шифрованого обміну даними між веб-браузером і веб-сервером. Переважна більшість сайтів в інтернеті використовують HTTPS для забезпечення конфіденційності та цілісності даних. Одночасно з цим, сучасні VPN-протоколи, такі як VLESS Reality, також віддають перевагу використанню порту 443, маскуючи свій трафік під звичайний HTTPS, щоб обходити блокування та системи DPI.
Основи роботи порту 443 та TLS
Коли ви відкриваєте сайт з адресою, що починається на https://, ваш браузер встановлює з'єднання з сервером на порту 443. Першим етапом цього з'єднання є рукостискання TLS (Transport Layer Security), під час якого клієнт і сервер обмінюються сертифікатами, генерують сесійні ключі та встановлюють зашифрований канал. Якщо на одній IP-адресі та порту 443 одночасно намагаються працювати два різні сервіси (наприклад, веб-сервер і VPN), виникне конфлікт, оскільки лише одна програма може "слухати" трафік на конкретному порту.
Як SNI вирішує конфлікти на одному IP-адресі
Server Name Indication (SNI) — це розширення протоколу TLS, яке дозволяє клієнту (наприклад, браузеру або VPN-клієнту) вказувати ім'я хоста, до якого він намагається підключитися, ще до завершення TLS-рукостискання. Це критично важливо для серверів, які розміщують кілька доменів на одній IP-адресі, оскільки сервер може визначити, який сертифікат йому відправити та який веб-сайт обслуговувати, базуючись на імені хоста, вказаному в SNI.
Для нашого сценарію, коли порт 443 зайнятий VPN або веб-сервером, SNI-маршрутизація стає ключовим рішенням. Ми можемо налаштувати один фронтенд-проксі (наприклад, Nginx або sing-box) на порту 443. Цей проксі аналізуватиме SNI-заголовок у вхідному TLS-трафіку:
- Якщо SNI відповідає домену вашого веб-сайту (наприклад,
yourdomain.com), проксі перенаправить трафік на ваш веб-сервер (наприклад, Apache, Nginx, Node.js-додаток), який може прослуховувати інший внутрішній порт (наприклад, 8080). - Якщо SNI не відповідає відомим доменам веб-сайтів або має специфічне значення, що використовується вашим VPN (наприклад,
example.com, вказане у Reality-конфігурації), проксі перенаправить трафік на ваш VPN-сервер (Xray, sing-box), який також прослуховуватиме інший внутрішній порт.
Такий підхід дозволяє хостингу сайту та VPN на одному VPS співіснувати, ефективно використовуючи одну публічну IP-адресу та порт 443, при цьому маскуючи VPN-трафік під звичайний веб-трафік, що значно підвищує стійкість VPN в умовах блокувань. Для глибшого розуміння принципів роботи VPN на власному сервері, рекомендуємо ознайомитися з VPN на своєму VPS: повний посібник 2026.
Nginx як універсальний фронтенд для сайту та VPN
Nginx (Engine-X) — це високопродуктивний HTTP-сервер та зворотний проксі-сервер, відомий своєю ефективністю та гнучкістю. Він ідеально підходить для ролі фронтенда, який прийматиме весь вхідний трафік на порт 443 та маршрутизуватиме його на основі SNI. Використання Nginx дозволяє не тільки розмістити VPN та сайт на одному сервері, але й централізовано керувати SSL-сертифікатами та забезпечувати додатковий рівень безпеки.
Принципи роботи Nginx з TLS та SNI
Nginx здатний термінувати TLS-з'єднання, що означає, що він розшифровує вхідний зашифрований трафік, аналізує його (включаючи SNI-заголовок), а потім, за необхідності, перешифровує та перенаправляє на бекенд. Це дозволяє Nginx виступати в ролі SSL/TLS-шлюзу. Для SNI-маршрутизації Nginx використовує директиву ssl_preread_protocol on; та модуль ngx_stream_ssl_preread_module, який дозволяє витягти SNI з вхідного TLS-з'єднання до його повного встановлення.
Після вилучення SNI, Nginx може використовувати його для прийняття рішень щодо маршрутизації. Наприклад, якщо SNI відповідає домену вашого сайту, трафік направляється на ваш веб-сервер. Якщо SNI відповідає доменному імені, що використовується для Reality, трафік направляється на ваш Xray або sing-box сервер. У випадку, якщо SNI відсутній або не відповідає жодному з правил, можна налаштувати "fallback" на VPN, що робить його більш стійким.
Реалізація VLESS Reality за Nginx: загальна схема
Загальна схема роботи зв'язки reality та nginx разом виглядає так:
- Клієнт (браузер або VPN-клієнт) встановлює TLS-з'єднання з вашим VPS на порту 443.
- Nginx, що прослуховує порт 443, приймає це з'єднання.
- Nginx використовує модуль
ngx_stream_ssl_preread_moduleдля вилучення SNI із запиту. -
- Якщо SNI збігається з доменом вашого сайту, Nginx проксіює трафік на внутрішній порт, де працює ваш веб-сервер (наприклад,
localhost:8080). - Якщо SNI збігається з доменним ім'ям, вказаним у конфігурації Reality (наприклад,
microsoft.comабоapple.com), Nginx проксіює трафік на внутрішній порт, де працює ваш Xray або sing-box сервер (наприклад,localhost:10000). - Якщо SNI не збігається з жодним із налаштованих доменів, Nginx може бути налаштований на перенаправлення трафіку на VPN (fallback), що підвищує надійність VPN.
- Якщо SNI збігається з доменом вашого сайту, Nginx проксіює трафік на внутрішній порт, де працює ваш веб-сервер (наприклад,
- Веб-сервер або VPN-сервер обробляє трафік і повертає відповідь через Nginx клієнту.
Ця схема дозволяє ефективно розділити трафік, при цьому для зовнішнього спостерігача (включаючи DPI) весь трафік, що проходить через порт 443, виглядає як звичайний HTTPS-трафік до легітимного веб-сервера, що значно підвищує шанси на обхід блокувань.
Шукаєте надійний сервер для своїх проєктів?
VPS від $10/міс та виділені сервери від $9/міс з NVMe, DDoS-захистом та підтримкою 24/7.
Переглянути пропозиції →Підготовка VPS: вимоги до ресурсів та початкове налаштування
Перш ніж приступати до налаштування, важливо переконатися, що ваш VPS має достатньо ресурсів для одночасного хостингу сайту та VPN, а також виконати базове налаштування операційної системи та встановити необхідні компоненти.
Мінімальні специфікації VPS для хостингу сайту та VPN
Вибір VPS залежить від очікуваного навантаження як на сайт, так і на VPN. Для невеликого персонального сайту та VPN на кілька користувачів вимоги будуть мінімальні, але для більш навантажених проєктів потрібно більше ресурсів. Valebyte.com пропонує різні тарифи, які підійдуть для будь-яких завдань.
Для 50 одночасних користувачів достатньо 4 vCPU, 8 GB RAM та NVMe-диска на 80 GB.
| Одночасних користувачів | vCPU | RAM | Диск | Порт | Ціна (орієнтовно, $/міс) |
|---|---|---|---|---|---|
| 1-5 (персональний) | 1-2 | 1-2 GB | 20-40 GB NVMe/SSD | 1 Gbps | $5 - $10 |
| 5-20 (малий бізнес/блог) | 2 | 2-4 GB | 40-60 GB NVMe | 1 Gbps | $10 - $20 |
| 20-50 (середній проєкт/команда) | 4 | 8 GB | 80-120 GB NVMe | 1 Gbps | $20 - $40 |
| 50-100+ (великий проєкт) | 6-8+ | 16 GB+ | 160 GB+ NVMe | 1-10 Gbps | $40+ |
Для більшості сценаріїв хостингу сайту та VPN на одному VPS, особливо з використанням VLESS Reality, VPS з 2 vCPU та 4 GB RAM на NVMe-диску буде оптимальним вибором, забезпечуючи хорошу продуктивність та чуйність. Варто також враховувати, що для безперебійної роботи необхідно мати стабільний канал зв'язку, тому вибирайте провайдера з гігабітним портом.
Встановлення Nginx, Xray/sing-box та отримання SSL-сертифіката (Let's Encrypt)
Після вибору та налаштування VPS, необхідно встановити всі компоненти. Ми будемо використовувати Ubuntu 22.04 LTS як приклад.
1. Оновлення системи та встановлення Nginx:
sudo apt update && sudo apt upgrade -y
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx
2. Встановлення Certbot для Let's Encrypt:
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
3. Отримання SSL-сертифіката для вашого домену:
Переконайтеся, що ваш домен (наприклад, yourdomain.com) вказує на IP-адресу вашого VPS. Потім виконайте:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Дотримуйтесь інструкцій Certbot. Він автоматично налаштує Nginx для використання сертифіката. Якщо у вас вже є досвід роботи з Nginx та SSL, можете ознайомитися з нашим посібником з хостингу Node.js на VPS: PM2, Nginx та SSL за 15 хвилин, де детально описані кроки з налаштування Nginx з SSL.
4. Встановлення Xray або sing-box:
Для Xray-core можна використовувати офіційний інсталяційний скрипт:
bash -c "$(curl -L https://raw.githubusercontent.com/XTLS/Xray-install/main/install-release.sh)" @ install
Для sing-box, встановлення може бути виконано вручну або через скрипти, як описано в статті sing-box на VPS: універсальний сервер для VLESS, Reality та Hysteria.
# Пример установки sing-box (для Ubuntu/Debian)
wget https://github.com/SagerNet/sing-box/releases/download/v1.7.0/sing-box-1.7.0-linux-amd64.tar.gz
tar -xvf sing-box-1.7.0-linux-amd64.tar.gz
sudo mv sing-box-1.7.0-linux-amd64/sing-box /usr/local/bin/
sudo chmod +x /usr/local/bin/sing-box
# Создайте service-файл для systemd при необходимости
Після встановлення всіх компонентів можна переходити до їх конфігурації.
Шукаєте сервер, який просто працює?
Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.
Налаштування Nginx для SNI-маршрутизації: приклади конфігурацій
Ключовим елементом нашої схеми є Nginx, який виступатиме в ролі TLS-маршрутизатора. Ми налаштуємо його на прослуховування порту 443 та перенаправлення трафіку на основі SNI.
Проста конфігурація для сайту та VLESS Reality
Ця конфігурація Nginx прослуховуватиме порт 443 та маршрутизуватиме трафік або на ваш веб-сервер, або на Xray/sing-box з Reality. Припускаємо, що ваш веб-сервер прослуховує на localhost:8080, а Reality-сервер — на localhost:10000.
Створіть новий файл конфігурації Nginx, наприклад, /etc/nginx/conf.d/proxy.conf:
# Включаем модуль ssl_preread
stream {
map $ssl_preread_server_name $backend_name {
# Домен вашего сайта
yourdomain.com website_backend;
www.yourdomain.com website_backend;
# Домен для Reality (должен быть реальным, но не обязательно вашим)
# Например, microsoft.com, apple.com, google.com
microsoft.com vpn_backend;
apple.com vpn_backend;
# Fallback по умолчанию на VPN, если SNI не совпал
default vpn_backend;
}
upstream website_backend {
server 127.0.0.1:8080; # Ваш веб-сервер
}
upstream vpn_backend {
server 127.0.0.1:10000; # Ваш Xray/sing-box с Reality
}
server {
listen 443 ssl_preread;
proxy_pass $backend_name;
proxy_socket_keepalive on;
}
}
# HTTP-сервер для Certbot и перенаправления HTTP на HTTPS
http {
server {
listen 80;
listen [::]:80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_prefer_server_ciphers on;
# Настройка HTTP/2
http2 on; # Важно для производительности сайта
location / {
proxy_pass http://127.0.0.1:8080; # Перенаправляем на ваш веб-сервер
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;
}
}
}
Не забудьте замінити yourdomain.com на ваш реальний домен, а microsoft.com/apple.com на домени, які ви використовуєте для Reality. Домени для Reality повинні бути реальними та активними сайтами, щоб успішно обманути DPI. Збережіть файл, перевірте конфігурацію Nginx командою sudo nginx -t та перезавантажте Nginx: sudo systemctl reload nginx.
Розширена конфігурація з fallback для Xray/sing-box
У наведеній вище конфігурації ми вже реалізували fallback через default vpn_backend;. Це означає, що будь-який трафік на порту 443, SNI якого не збігся з вашим сайтом або доменами Reality, буде направлений на VPN. Це дуже корисно, оскільки деякі старі клієнти або специфічні запити можуть не відправляти SNI або відправляти невідомий SNI. Таке налаштування робить vless за nginx більш стійким.
Додатково, для підвищення безпеки та запобігання витокам, можна налаштувати блокування всіх портів, крім 80 та 443, за допомогою фаєрволу (наприклад, UFW):
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Це гарантує, що тільки Nginx буде доступний ззовні на стандартних веб-портах, а всі внутрішні сервіси (веб-сервер на 8080, VPN на 10000) будуть доступні лише локально.
Конфігурація VLESS Reality (Xray/sing-box) для роботи за Nginx
Після налаштування Nginx необхідно адаптувати конфігурацію вашого VPN-сервера (Xray або sing-box) для роботи за цим проксі. Вони повинні прослуховувати на внутрішньому порту (наприклад, 10000) та бути налаштовані на прийом трафіку, який Nginx їм перенаправить.
Налаштування Xray-core з inbound Reality та SNI
Для Xray-core конфігурація Reality з inbound-протоколом VLESS повинна бути налаштована так, щоб прослуховувати на внутрішньому порту та очікувати трафік, який вже пройшов через Nginx. У цьому випадку Xray не буде безпосередньо прослуховувати порт 443, а прийматиме трафік від Nginx.
Приклад файлу /usr/local/etc/xray/config.json:
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"port": 10000, # Внутренний порт, который слушает Xray
"protocol": "vless",
"settings": {
"clients": [
{
"id": "ВАШ_UUID", # Сгенерируйте уникальный UUID
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": false,
"dest": "microsoft.com:443", # Домен целевого сайта для Reality
"xver": 0,
"serverNames": [
"microsoft.com", # Домены, которые Nginx перенаправляет на VPN
"apple.com"
],
"privateKey": "ВАШ_ПРИВАТНЫЙ_КЛЮЧ", # Сгенерированный приватный ключ Reality
"minClientVer": "",
"maxClientVer": "",
"maxTimeDiff": 0,
"shortIds": [
"ВАШ_КОРОТКИЙ_ID" # Сгенерированный короткий ID
]
}
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
},
{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}
]
}
Замініть ВАШ_UUID, ВАШ_ПРИВАТНЫЙ_КЛЮЧ, ВАШ_КОРОТКИЙ_ID на згенеровані значення. Для генерації Reality-ключів та короткого ID можна використовувати команду xray x25519. Зверніть увагу, що dest у realitySettings повинен бути реальним доменом, який використовуватиметься для "відбитка" TLS. serverNames повинні збігатися з тими, що ви вказали в Nginx для маршрутизації на VPN. Більш детальну інформацію про швидке налаштування VLESS Reality можна знайти в статті Свій VPN на VPS: VLESS Reality + Xray-core за 10 хвилин.
Використання sing-box як універсального проксі з Reality
Sing-box є більш сучасним та універсальним рішенням, яке також чудово працює зі зв'язкою reality та nginx разом. Його конфігурація для VLESS Reality схожа з Xray, але має свої особливості. Sing-box також прослуховуватиме на внутрішньому порту.
Приклад файлу /etc/sing-box/config.json:
{
"log": {
"level": "info"
},
"inbounds": [
{
"type": "vless",
"listen": "127.0.0.1",
"listen_port": 10000, # Внутренний порт, который слушает sing-box
"users": [
{
"uuid": "ВАШ_UUID",
"flow": "xtls-rprx-vision"
}
],
"tls": {
"enabled": true,
"reality": {
"enabled": true,
"handshake_server": "microsoft.com:443", # Домен целевого сайта для Reality
"server_names": [
"microsoft.com", # Домены, которые Nginx перенаправляет на VPN
"apple.com"
],
"private_key": "ВАШ_ПРИВАТНЫЙ_КЛЮЧ",
"short_id": ["ВАШ_КОРОТКИЙ_ID"]
}
},
"sniff": {
"enabled": true,
"route_only": true,
"override_destination": true
}
}
],
"outbounds": [
{
"type": "direct"
},
{
"type": "block",
"tag": "block"
}
]
}
Аналогічно, замініть усі placeholder'и. Для генерації ключів та ID в sing-box можна використовувати команду sing-box generate reality-keypair. Після збереження конфігурації, перезапустіть Xray або sing-box сервіс. Наприклад, для Xray: sudo systemctl restart xray. Для sing-box, якщо ви створили systemd сервіс, команда буде схожа.
Переваги та стійкість: як зв'язка Nginx + Reality обходить DPI
Комбінація Nginx з Reality-протоколом в Xray або sing-box є одним з найбільш ефективних способів обходу систем глибокої інспекції пакетів (DPI) та цензури. Ця зв'язка забезпечує високий рівень маскування та стійкості.
Маскування VPN-трафіку під звичайний HTTPS
Ключова перевага reality та nginx разом полягає в тому, що весь трафік, що проходить через порт 443, виглядає як звичайне HTTPS-з'єднання до легітимного веб-сайту. Це досягається кількома способами:
- Використання порту 443: Стандартний порт для HTTPS, який рідко блокується повністю.
- SNI-маршрутизація: Nginx направляє трафік на основі SNI, який у випадку VPN вказує на реальний, популярний домен (наприклад,
microsoft.com). - TLS Fingerprint (Reality): Reality-протокол спеціально розроблений для імітації TLS-відбитків відомих веб-серверів (наприклад, Google, Apple, Microsoft), що робить його практично невідмінним від звичайного HTTPS-трафіку для DPI.
- Відсутність SSL-сертифіката на VPN: У Reality VPN-сервер не використовує свій власний SSL-сертифікат, що усуває одну з частих точок виявлення VPN.
Для DPI, яке аналізує заголовки пакетів, SNI та TLS-відбитки, з'єднання з вашим сервером виглядатиме як звичайний запит до microsoft.com або apple.com, що значно ускладнює його ідентифікацію як VPN-трафіку. Це дозволяє VPN та сайт на одному сервері залишатися непоміченими.
Порівняння з іншими методами обходу блокувань
Порівняно з іншими протоколами та методами, зв'язка Nginx + Reality має ряд переваг:
- OpenVPN/IPsec: Ці протоколи часто використовують специфічні порти та шаблони трафіку, які легко виявляються та блокуються DPI.
- Shadowsocks/V2Ray (без Reality): Хоча вони й можуть використовувати TLS, їхні TLS-відбитки можуть бути унікальними та видавати їх як VPN. Reality активно бореться з цією проблемою.
- Проксі на нестандартних портах: Проста зміна порту VPN на 80 або інший нестандартний порт часто призводить до швидкого блокування, оскільки ці порти рідко використовуються для легітимного TLS-трафіку.
- WireGuard: Відмінний протокол, але його UDP-трафік та специфічний хендшейк можуть бути виявлені та заблоковані в агресивних середовищах.
Завдяки своєму маскуванню, SNI routing VPS у зв'язці з Reality забезпечує високу стійкість, що робить його кращим вибором для користувачів у регіонах з активною інтернет-цензурою.
Шукаєте сервер, який просто працює?
Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.
Потенційні проблеми та поширені помилки
Незважаючи на всі переваги, налаштування VPN та сайту на одному сервері через SNI-маршрутизацію може зіткнутися з деякими складнощами. Знання цих потенційних проблем допоможе вам уникнути їх або швидко вирішити.
Проблеми з сертифікатами та HTTP/2
- Неправильні шляхи до сертифікатів: Переконайтеся, що шляхи до
fullchain.pemтаprivkey.pemу вашій конфігурації Nginx (для HTTP-частини) правильні та вказують на актуальні сертифікати Let's Encrypt. Certbot зазвичай розміщує їх у/etc/letsencrypt/live/yourdomain.com/. - Сертифікати, термін дії яких закінчився: Сертифікати Let's Encrypt діють 90 днів. Certbot зазвичай налаштовує автоматичне продовження, але іноді воно може не спрацювати. Регулярно перевіряйте статус командою
sudo certbot renew --dry-run. - Конфлікт HTTP/2: Nginx підтримує HTTP/2 (
http2 on;), що важливо для швидкого завантаження сайту. Переконайтеся, що ваш веб-сервер, якщо він проксіюється Nginx, також коректно працює з цим протоколом або що Nginx перетворює HTTP/2 на HTTP/1.1 при проксіюванні на бекенд. Проблеми можуть виникнути, якщо бекенд не підтримує HTTP/2, а Nginx налаштований на його жорстке використання для проксіювання. У нашому прикладі Nginx проксіює на HTTP/1.1 бекенд (proxy_pass http://127.0.0.1:8080;), тому проблем бути не повинно. - Невірний домен Reality: Домен, що використовується для Reality (у
destтаserverNames), повинен бути реальним та доступним з інтернету, щоб Reality міг успішно імітувати його TLS-відбиток. Використання неіснуючого або заблокованого домену може призвести до проблем з підключенням.
Коли простіше взяти другий VPS: аналіз витрат та ризиків
Хоча розміщення хостингу сайту та VPN на одному VPS економічно вигідно та технічно можливо, іноді простіше та надійніше використовувати два окремі VPS.
Рекомендації щодо вибору:
- Масштаб проєкту: Якщо у вас дуже навантажений сайт (тисячі відвідувачів на день) або VPN для великої кількості активних користувачів (сотні), розділення сервісів на два VPS (один для сайту, інший для VPN) забезпечить кращу продуктивність та стабільність кожного.
- Ризики блокування: В умовах дуже агресивної цензури, де блокування відбуваються часто та за різними ознаками, розділення сервісів може знизити ризик повної недоступності. Якщо VPN-IP буде заблоковано, ваш сайт залишиться доступним на іншому IP.
- Складність налаштування: Налаштування SNI-маршрутизації вимагає певних технічних знань. Якщо ви не впевнені у своїх силах або у вас немає часу на налагодження, два окремі VPS будуть простішими в управлінні.
- Бюджет: Різниця в ціні між одним потужним VPS та двома базовими VPS може бути незначною. Наприклад, два VPS по $5/міс можуть дати більше гнучкості, ніж один за $10/міс. Valebyte.com пропонує доступні тарифи, які дозволяють не обмежуватися одним сервером.
- Зручність управління: Використання панелей управління, таких як Hiddify (див. Hiddify на VPS: своя панель та підписки для VLESS Reality), спрощує управління VPN, але для сайту все одно потрібне окреме налаштування.
Зрештою, рішення про кількість VPS залежить від ваших потреб, бюджету та рівня технічної компетенції. Для більшості індивідуальних користувачів та малих проєктів один VPS з грамотним налаштуванням SNI-маршрутизації буде оптимальним рішенням.
Часті запитання
Тут ми відповідаємо на найпоширеніші запитання, що стосуються розміщення VPN та сайту на одному сервері.
Чи можна використовувати VLESS Reality без Nginx, якщо у мене немає сайту?
Так, VLESS Reality може працювати безпосередньо на порту 443 без Nginx, якщо вам не потрібно розміщувати веб-сайт. У цьому випадку Xray або sing-box буде безпосередньо прослуховувати порт 443, що спрощує конфігурацію, оскільки не потрібна SNI-маршрутизація. Однак для обходу DPI все одно критично використовувати реальний домен у налаштуваннях Reality, наприклад, microsoft.com, щоб трафік виглядав як звичайний HTTPS-запит.
Які домени краще використовувати для Reality як dest та serverNames?
Для Reality рекомендується використовувати домени великих, популярних та надійних сервісів, таких як microsoft.com, apple.com, google.com, amazon.com або інші великі хмарні провайдери. Ці домени мають стабільні TLS-відбитки, які добре відомі та рідко блокуються. Уникайте використання маловідомих або підозрілих доменів, оскільки це може викликати підозри у DPI. Для стабільної роботи Reality потрібно кілька таких доменів.
Чи буде сайт сповільнюватися через роботу VPN на тому ж VPS?
При правильному налаштуванні та достатній кількості ресурсів VPS, вплив VPN на продуктивність сайту буде мінімальним. Nginx ефективно маршрутизує трафік, а сучасні VPN-протоколи, такі як VLESS Reality, оптимізовані для низького споживання ресурсів. Якщо ваш VPS має 2 vCPU та 4 GB RAM, то для невеликого сайту та кількох користувачів VPN сповільнень не буде. Однак для високонавантажених проєктів рекомендується більш потужний VPS або розділення сервісів.
Чи потрібно відкривати додаткові порти, крім 80 та 443?
У більшості випадків ні. Схема з Nginx та SNI-маршрутизацією дозволяє розмістити всі сервіси на порту 443. Ваш веб-сервер та VPN-сервер прослуховуватимуть внутрішні порти (наприклад, 8080 та 10000), які не повинні бути доступні ззовні. Таким чином, для зовнішнього світу відкритими залишаються лише порти 80 (для перенаправлення на HTTPS) та 443, що підвищує безпеку та знижує "видимість" вашого сервера.
Чи можу я використовувати інший веб-сервер замість Nginx, наприклад Apache?
Технічно так, але Nginx є кращим вибором для цього завдання через його високу продуктивність та нативну підтримку модуля ngx_stream_ssl_preread_module для SNI-маршрутизації на рівні потоку (stream). Apache також може бути налаштований для проксіювання, але його конфігурація для SNI-маршрутизації на основі TLS-привітання може бути складнішою та менш ефективною, ніж у Nginx. Для більшості сценаріїв, особливо коли потрібна висока швидкість та гнучкість, Nginx — оптимальне рішення.
Висновки
Розміщення VPN (VLESS Reality) та веб-сайту на одному VPS з використанням порту 443 — це не тільки можливо, але й є високоефективним рішенням для обходу цензури, маскуючи VPN-трафік під звичайний HTTPS. Інтелектуальне маршрутизування на основі SNI через Nginx або sing-box дозволяє цим сервісам співіснувати, забезпечуючи при цьому високу стійкість VPN. Для більшості користувачів, особливо з невеликими та середніми проєктами, цей підхід пропонує оптимальний баланс між економією ресурсів та надійністю, вимагаючи лише базового VPS з 2 vCPU та 4 GB RAM.
Готові обрати сервер?
VPS та виділені сервери у 72+ країнах з миттєвою активацією та повним root-доступом.
Почати зараз →