map $ssl_preread_server_name $sni_name {
hostnames;
exemple.com www;
*.exemple.com www;
default xray;
}
upstream xray {
server x-ray:8443;
}
upstream www {
server 127.0.0.1:7443;
}
server {
listen 443;
proxy_pass $sni_name;
ssl_preread on;
proxy_protocol on;
}{
"log": {
# смотри файл error.log (tail -f 'error.log') - если есть попытки соединения, то надо настраивать конфиг XRAY, если нету и лог не обновляется,
# то пакеты просто не приходят, нужно оценивать или соединение на уровне докер контейнеров или корректность работы # NGINX
"access":"${LOGS_PATH}/access.log",
"error":"${LOGS_PATH}/error.log",
"loglevel": "debug"
},
"routing": {
"rules": [],
"domainStrategy": "AsIs"
},
"inbounds": [
{
# Оставь 0.0.0.0 или "listen":"bridge" Имя будет зависеть от того к какому мосту подключен XRAY контейнер
# 127.0.0.1 - это локалхост контейнера. В сети bridge его не увидит ни один контейнер.
"listen": "0.0.0.0",
# открой порт в контейнере и пробуй на прямую закоyнектиться, тогда сможешь отладить настройки XRAY.
"port": 8443,
"protocol": "vless",
"tag": "vless_tls",
"settings": {
"clients": [
{
"id": "zzz",
"email": "test@test.ru",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": false,
# теперь вместо dest =>target https://xtls.github.io/ru/config/transport.html#realityobject
# сам из за этого много времени потратил
"target": "www.google.com:443",
"xver": 0,
"serverNames": ["www.google.com"],
"privateKey": "xxx",
"minClientVer": "",
"maxClientVer": "",
"maxTimeDiff": 0,
#shortIds должен быть четное количество символов - openssl rand -hex 8
"shortIds": ["yyy"]
}
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "blackhole",
"tag": "block"
}
]http {
server {
listen 80;
server_name ${FAKE_DOMAIN};
return 301 https://$http_host$request_uri;
}
server {
listen 127.0.0.1:10443 ssl;
server_name ${FAKE_DOMAIN};
ssl_certificate ${SSL_DOMAIN_DIR}/fullchain_public.crt;
ssl_certificate_key ${SSL_DOMAIN_DIR}/private.key;
add_header Strict-Transport-Security "max-age=63072000" always;
error_page 403 /403.html;
location = /403.html {
root /usr/share/nginx/html;
allow all;
}
location / {
return 403;
}
}
server {
#listen 127.0.0.1:9443 ssl;
#Только для дебага - чтобы иметь доступ к панели управления по порту.
listen 9443 ssl;
server_name ${PANEL_DOMAIN};
ssl_certificate ${SSL_PANEL_DOMAIN_DIR}/fullchain_public.crt;
ssl_certificate_key ${SSL_PANEL_DOMAIN_DIR}/private.key;
add_header Strict-Transport-Security "max-age=63072000" always;
root /usr/share/nginx/www;
index index.html index.htm;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
send_timeout 300;
#auth_basic "Restricted";
#auth_basic_user_file /etc/nginx/.htpasswd;
location / {
return 503;
}
location /dashboard/ {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8000/dashboard/;
}
location /api/ {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8000/api/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /statics/ {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8000/statics/;
}
location /sub/ {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8000/sub/;
}
}
stream {
map $ssl_preread_server_name $sni_name {
hostnames;
${PANEL_DOMAIN} panel;
default xray;
}
upstream xray {
server 127.0.0.1:8443;
}
upstream panel {
server 127.0.0.1:9443;
}
# for debugging
#log_format stream_routing '$remote_addr [$time_local] '
# 'with SNI name "$ssl_preread_server_name" '
# 'proxying to "$sni_name" '
# '$protocol $status $bytes_sent $bytes_received '
# '$session_time';
server {
listen 443;
listen [::]:443;
proxy_pass $sni_name;
ssl_preread on;
#access_log /var/log/nginx/stream_443.log stream_routing;
}
}"log": {
"access":"/var/lib/marzban/logs/access.log",
"error":"/var/lib/marzban/logs/error.log",
"loglevel": "debug"
},
"inbounds": [
{
"tag": "VLESS_TCP_REALITY",
# для дебага. Проверить сначала успешное соединение на 8443 (на прямую), а уже потом через 443 (через nginx)
# "listen": "0.0.0.0",
"listen": "127.0.0.1",
"port": 8443,
"protocol": "vless",
"settings": {
"clients": [],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"tcpSettings": {},
"security": "reality",
"realitySettings": {
"show": true,
"serverName": "${FAKE_DOMAIN}",
"target": "10433",
"xver": 0,
"serverNames": [
${FAKE_SNI_DOMAINS}
],
"privateKey": "${PRIVATE_KEY}",
"shortIds": [
"${SHORT_IDS}"
]
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls",
"quic"
]
}
}
]
Но пока жаба давит эксперименты ставить!