Как поставить веб-сервер и VLESS на одном VPS?

С Reality и со своим веб сервером настройка куда проще и конфиг Xray короче выходит. Не нужны никакие фоллбэки и дополнительные параметры с путями сертификатов. Всё что нужно сделать, это перенести Nginx или Apache с 443 допустим на 8443 порт (80 оставить как есть), а конфиге Xray просто в dest указать вместо условного yahoo.com:443, под который маскировались ранее, свой локалхост 127.0.0.1:8443. И всё. Больше вообще ничего трогать не нужно, всё отлично работает. Единственный момент, если ваши подключения не опознаны, по понятным причинам в логах xray будет писать

Спойлер

[Info] transport/internet/tcp: REALITY: processed invalid connection

Но лично меня это не парит.
Кстати, такая схема очень удобна, когда сервак уже находится в эксплуатации с настоящим коммерческим сайтом, и когда не хочется лишний раз ничего мудрить, чтобы не поломать.

Понял, что не отписался как победил 400 ошибку веб-сервера.

Сайт стал открываться после того, как я свел конфиг nginx к минимуму - тупо return 301, listen http2, путь к папке с содержимым и путь к сертификатам (хотя, вероятно, и они не нужны). Все остальные ssl строчки надо было просто грохнуть.

Но steal from oneself с reality почему-то так и не заводится. Учитывая, что отличие от reality с сторонним сайтом, по сути, только в локальном порте (веб-сервера) в поле dest - проблема, видимо, в конфиге nginx’а.

Да всё намного проще. Ошибка 400 в связке Xray/веб-сервер в 95% случаев говорит о том, что пришёл не тот тип трафика, который ожидается. Проще говоря, вы уже расшифровали трафик, который пришёл например на Xray, и пытаетесь ещё раз его расшифровать стоящим за ним веб сервером.
Вы определитесь, что у вас стоит снаружи на 443 порту, а что внутри на 8443 например. Возможны оба варианта, и не всегда нужно использовать прокси протокол.
Вы бы лучше сперва просто настроили отдельно веб сервер на 443 порту, чтобы у вас сайт заработал, а уже потом настраивали бы всё остальное.

Вот например мой xray конфиг. Кто хоть раз в жизни реалити настраивал не средствами панели, тот сразу увидит что это банальная элементарщина. По-сути изменён только target, вместо фейк сайта указан локалхост, всё остальное обычный реалити.
Ещё как видите, в моём случае Xray слушает на 443 а веб-сервер стоит за ним на 8443. В этом случае прокси протокол не используется. XVER должен быть 0!

Спойлер
    {
      "listen": "IP",
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "ID",
            "email": "admin",
            "flow": "xtls-rprx-vision"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "raw",
        "security": "reality",
        "realitySettings": {
          "target": "127.0.0.1:8443",
          "serverNames": ["domain.name"],
          "privateKey": "PRIVATE_KEY",
          "shortIds": ["SHORT_ID"],
          "show": false,
          "xver": 0
        }
      },
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      },
      "tag": "reality"
    }
1 Like

Не все клиенты понимают новый параметр raw. На текущий момент raw синоним tcp

К чему это? Это изменение появилось не позавчера если что.

Начиная с версии v24.9.30, для более точного отражения фактического поведения, тип передачи tcp был переименован в raw. Для обеспечения совместимости "network": "raw" и "network": "tcp", rawSettings и tcpSettings являются синонимами.

Начиная с версии 24.9.30! То есть с версии, которая вышла 30 сентября 24 года. Если мне не изменяет память, сегодня у нас 24 марта 25 года. Так что у тех, кто обновляет свои клиенты хотя бы раз в полгода, проблем не возникнет.

К тому, что не все обновленные клиент-приложения понимают этот параметр и возможно использовать в конфигурации более совместимый параметр tcp.