@Lanctole

Как заставить одновременно работать сайт и Xray на 443 порту через Nginx?

Xray VLESS(через 3X-UI) и Nginx запущены на сервере. Сайт - в докере, порт - 5000:8080.
Сделал такие конфиги:
nginx.conf
load_module /usr/lib/nginx/modules/ngx_stream_module.so;
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
        # multi_accept on;
}

http {
        sendfile on;
        tcp_nopush on;
        types_hash_max_size 2048;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        gzip on;
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;

        server {
        listen 80;
        server_name media-random.ru;
        return 301 https://$server_name$request_uri;
        }
}

stream {
        include /etc/nginx/stream-enabled/*.conf;
}


proxy.conf
map $ssl_preread_server_name $sni_name {
    hostnames;
    www.ferzu.com      xray;
    media-random.ru           www;
    *.media-random.ru         www;
    default              xray;
}

upstream xray {
    server 127.0.0.1:50100;
}

upstream www {
    server 127.0.0.1:5000;
}

server {
    listen          443; 
    proxy_pass      $sni_name;
         ssl_certificate /etc/ssl/media-random.crt;
    ssl_certificate_key /etc/ssl/media-random.key;
    ssl_preread     on;
}

При таких настройках Xray работает и трафик через него ходит. Но попытка подключиться к https://media-random.ru/ приводит к ERR_SSL_PROTOCOL_ERROR.
Если добавить listen 443 ssl;, то сайт начнет отвечать
400 Bad Request
The plain HTTP request was sent to HTTPS port
, а перенаправление трафика вообще не будет работать.
Была идея что мне надо перекидывать запросы к сайту на какой-то порт upstream www { server 127.0.0.1:xxxxx;}, там включать ssl и уже оттуда перенаправлять на 127.0.0.1:5000, но осуществить правильно не удалось. Это Xray-examples смотрел, не разобрался как сделать.
  • Вопрос задан
  • 530 просмотров
Пригласить эксперта
Ответы на вопрос 2
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
Есть готовый образец конфигов
https://github.com/XTLS/Xray-examples/tree/main/VL...
Ответ написан
Комментировать
SagePtr
@SagePtr
Еда - это святое
Слушать внутренний nginx (который на 5000 порту) должен тоже по TLS, ему прилетит полная TLS-сессия
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы