Помогите сделать 3X-UI (VLESS + TLS + Fallback) + Ngnix + SmartDNS proxy на одном IP:Port (80, 443)

Всех приветствую! Я дам два описания (так будет проще меня понять):

  • что сделал;
  • что хочу сделать.

Что сделал:
Есть арендованный VPS сервер с Ubuntu 24.02, на нём стоит AdGuard Home на 53 порту.
Для ряда выбранных мною сайтов он перезаписывает DNS запросы на IP моего же VPS, отправляя тем самым их в Sing-box, который слушает 80 и 443 порт. То есть это аналог Smart DNS от comss, который позволяет обходить региональные ограничения (геоблокировку по IP).
В 3X-UI я создал VLESS + Realitty с маскировкой под чужой сайт на 8443 порту. Так никаких конфликтов не возникает.

Теперь опишу что хочу сделать:
Я взял в аренду на год свой домен. Установил Ngnix в Ubuntu, который слушает 127.0.0.1:8080 порт, заменил HTML на свой сайт-заглушку.
После чего в 3X-UI создал VLESS + TLS с Fallbacks на мой сайт-заглушку на 443 порту чтобы провайдер, РКН или любой другой видел что я обмениваюсь данными с этим сайтом-заглушкой, например какой-нибудь example.com - решит зайти на него по HTTPS и видит работающий сайт-заглушку.
Но тут возникает проблема - я не знаю как можно заменить Sing-box, который принимал запросы на 80 и 443 порту.
Куда теперь отправлять AdGuard Home перезаписанный DNS запрос?
Концептуально я пока в тупике, но может свежий взгляд даст подсказку куда копнуть.
Грубо говоря, я хочу за сайтом-заглушкой спрятать VLESS + TLS и свой DNS сервер.

исправил

p.s. мне кажется что сделать это без компромиссов невозможно, т.е. лучше купить второй ip

Вам нужно расположить всё это хозяйство за nginx, чтобы именно nginx слушал 443 порт, а внутри него разруливать можно как угодно.
Например: nginx слушает 443 порт, html заглушка на юникс сокете типа listen unix:/dev/shm/nginx.sock , vless-reality на 4443 порте, в настройках реалити “target”: “/dev/shm/nginx.sock”, а serverNames - ваш домен (а лучше субдомен). Sing-box слушает на 4444 порте. В конфиге nginx вы разруливаете, чтобы запросы на ваш (суб)домен example.com proxy_pass на 4443 в реалити, а всё остальное proxy_pass на 4444 в sing-box. Такой конфиг решает поставленную задачу. По сути это вариация схемы reality “steal oneself” Xray-examples/VLESS-Vision-REALITY/steal_oneself at main · chika0801/Xray-examples · GitHub

И еще, adguard в этой схеме вообще лишний, sing-box умеет из коробки перезаписывать dns запросы “на себя”. Изучайте fakeip функционал в нём FakeIP - sing-box

Почему лучше использовать субдомен в такой схеме? То есть основной домен будет для HTML заглушки, а субдомен пустить под VLESS?

Благодарю за наводку, изучу.
Предварительно перед началом ознакомления хочу спросить один вопрос.
Если я буду таки использовать AGH, то можно ли обойтись только VLESS на порту 4443, если Ngnix будет слушать 80 и 443 порт, и будет запрос сайта по HTTP? Для чего нужен будет Sing-box, если можно будет всегда отправлять на обработку DNS запрос во VLESS?

Ну не лучше, просто “гибче”. Вы примените под эту прокси-схему субдомен вида test.example.com, а сам example.com останется свободным для других задач. Вдруг вы решите потом на нём настоящий сайт захостить, добавить ещё инбаунды, или ещё что. Если не хотите, можно и сам верхний домен использовать, разницы никакой.

Не, надо выбрать что-то одно, и оно будет использоваться для маскировки реалити, и заглушка будет открываться в браузере при заходе на него.

Да, конечно можно. Я просто решил именно под исходные условия подогнать решение, тем более вдруг есть какая-то специфичная причина использовать именно sing-box. (Как вариант - fakeip)
И еще, я не пользовался 3x-ui, только голым xray-core, если там есть какие-то свои ограничения, они мне неизвестны. Но в теории это просто генератор конфиги для xray-core, так что должно быть всё норм.

Благодарю :handshake: