Konstantin GARSHENIN
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
stream {
# Бэкенды
upstream site_backend {
server srv2_ip1:443;
}
upstream vless_backend {
server srv2_ip1:443;
}
upstream mtproto_backend {
server srv2_ip1:443;
}
# Маршрутизация по SNI
map $ssl_preread_server_name $backend {
mydomain.site site_backend;
media.mydomain.site vless_backend;
photo.mydomain.site mtproto_backend;
default site_backend; # Все остальные запросы идут на сайт
}
# Основной сервер на порту 443
server {
listen 443;
proxy_pass $backend;
ssl_preread on;
# Опциональные настройки
proxy_timeout 30s;
proxy_connect_timeout 10s;
}
}
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 1024;
use epoll;
multi_accept on;
}
stream {
# Бэкенды — все указывают на SRV2:443, где происходит финальная маршрутизация по SNI
upstream site_backend {
server srv2_ip1:443;
}
upstream vless_backend {
server srv2_ip1:443;
}
upstream mtproto_backend {
server srv2_ip1:443;
}
# Маршрутизация по SNI (Server Name Indication)
map $ssl_preread_server_name $backend {
mydomain.site site_backend; # Веб‑сайт
media.mydomain.site vless_backend; # VLESS/Reality
photo.mydomain.site mtproto_backend; # MTProto Proxy
default site_backend; # Все остальные запросы → сайт
}
# Основной сервер на порту 443
server {
listen 443;
proxy_pass $backend;
ssl_preread on;
# Таймауты для долгоживущих соединений (VPN/MTProto)
proxy_connect_timeout 300s; # Время ожидания установки соединения
proxy_timeout 600s; # Таймаут для всего соединения (10 минут)
# Дополнительные оптимизации
proxy_buffer_size 16k;
}
}
для srv2 давай проверим.
server {
listen 443 ssl http2;
server_name core.mydomain.site;
ssl_certificate /etc/letsencrypt/live/core.mydomain.site/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/core.mydomain.site/privkey.pem;
# Основные SSL‑настройки
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
root /var/www/core.mydomain.site;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 443 ssl http2;
server_name media.mydomain.site;
ssl_certificate /etc/letsencrypt/live/media.mydomain.site/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/media.mydomain.site/privkey.pem;
# Отключаем обработку HTTP — это VLESS‑трафик
return 444; # Закрываем соединение без ответа (Nginx не будет пытаться обработать HTTP)
}
server {
listen 443 ssl http2;
server_name photo.mydomain.site;
ssl_certificate /etc/letsencrypt/live/photo.mydomain.site/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/photo.mydomain.site/privkey.pem;
# Отключаем обработку HTTP для MTProto
return 444;
}
вариант 2
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 1024;
use epoll;
multi_accept on;
}
http {
# Веб‑сайт на внутреннем порту 8443
server {
listen 8443 ssl http2;
server_name core.mydomain.site;
ssl_certificate /etc/letsencrypt/live/core.mydomain.site/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/core.mydomain.site/privkey.pem;
# Основные SSL‑настройки
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
root /var/www/core.mydomain.site;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
}
}
stream {
# Бэкенды на локальных портах
upstream site_backend {
server 127.0.0.1:8443; # локальный nginx‑сайт
}
upstream vless_backend {
server 127.0.0.1:10000; # Xray/3x‑ui (Reality)
}
upstream mtproto_backend {
server 127.0.0.1:10001; # MTProto proxy
}
# Маршрутизация по SNI
map $ssl_preread_server_name $backend {
core.mydomain.site site_backend; # веб‑сайт
media.mydomain.site vless_backend; # VLESS/Reality
photo.mydomain.site mtproto_backend; # MTProto
default site_backend; # всё остальное → сайт
}
# Основной сервер на порту 443
server {
listen 443;
proxy_pass $backend;
ssl_preread on;
# Таймауты для долгоживущих соединений
proxy_connect_timeout 300s;
proxy_timeout 600s;
# Дополнительные оптимизации
proxy_buffer_size 16k;
}
}
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 1024;
use epoll;
multi_accept on;
}
http {
# Веб‑сайт на внутреннем порту 8443
server {
listen 8443 ssl http2;
server_name mydomain.site core.mydomain.site;
ssl_certificate /etc/letsencrypt/live/mydomain.site/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.site/privkey.pem;
# Основные SSL‑настройки
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
root /var/www/core.mydomain.site;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
}
}
stream {
upstream site_backend {
server 127.0.0.1:8443; # локальный nginx‑сайт
}
upstream vless_backend {
server 127.0.0.1:10000; # Xray/3x‑ui (Reality)
}
upstream mtproto_backend {
server 127.0.0.1:10001; # MTProto proxy
}
# Маршрутизация по SNI
map $ssl_preread_server_name $backend {
mydomain.site site_backend; # веб‑сайт (основной домен)
core.mydomain.site site_backend; # веб‑сайт (алиас)
media.mydomain.site vless_backend; # VLESS/Reality
photo.mydomain.site mtproto_backend; # MTProto
default site_backend; # всё остальное → сайт
}
# Основной сервер на порту 443
server {
listen 443;
proxy_pass $backend;
ssl_preread on;
# Таймауты для долгоживущих соединений
proxy_connect_timeout 300s;
proxy_timeout 600s;
# Дополнительные оптимизации
proxy_buffer_size 16k;
}
}
можешь дать конфигуряцию telemt mtproto под эту ситуацию
может лучше telemt rush
ну и до кучи инбаунд и правила для 3x-ui
не будем заморачиваться с xhttp ? может его и с путями что бы не с корня
так что логичнее, чище и правильнее ..
как думаешь реально все это в скрипт занести. ТОЛЬКО не нужно его писать ответом.
вот именно про панель я и думал.. после установки панели добавить в существующий изменения
хорошо бы потом весь этот ззопарк вобще в докер
что-то я давно не монтировал ничего. Подзабыл.. куда смотреть для начала
я так понимаю что если заморочится то докером то рельно разворачивать прям с локального места без терминала
похоже на "нафиг .. слишком заморочено"
уже.. поднялось и работает. ТОлько не пойму как теперь варп привязать
вообще в идеале через варп только ютуб ))
вот именно куча доменов ютуба пока останавливает. есть еще вариант
второй ip на srv2 мне кажется решит проблему
и с чего начать. что-то потерялся
я правильно понимаю что заход на второй ip с варпом для ютуба будет осуществляться дома с помощью маршрутизации по домена в кинетике.. или как ?
ты забыл про srv1. У меня же каскад
в общем сейчас добавляем еще один поддомен. Правим конфиг на srv1 и уходим по sni на IP2 SRV2
скажи на srv2 и такого зоопарка будет достаточно promo конфигурации на adminvps
Имеет ли смысл прикрутить для vless (не тот который для ютуба) балансер с еще одним оутбаундом
логично. лучше потратить мозги на это.. пока на SRV2 просто заглушка сайта. Типа underconstruction... хочется статический index.html но внутри которого динамическое наполнение. Не важно что.. погода..курс валют, новости.. думаю в направлении вывода в нем данных о погоде, валют по бесплатному api. или заморочиться с конструкцией node.js + express и генерация index по крону..
а может редирект на свой сайт (не чужой. свой домен на другом сервере)
А может просто iframe внутри своего index
не прокатило на сайте X-Frame-Options deny
какие еще варианты есть динамического сайта ? Может тогда уж раз такой зоопарк развели прикрутить sql и RSS агрегатор
3 вариант самое то.. что посоветуешь из бесплатных api
ту еще и парсинг сюда предлагаешь. достаточно погоды и курсов валют.. а глянь может из фотостека бесплатного подтягивать 10 фоток
супер. Можешь быстренько накатать шаблон Погода, курсы случайные фото
можешь собрать в кучу все настройки srv1 srv2 шаблоны и решения которые мы с тобой утвердили чтобы не потерялось в ветке.