🖥️Настройка SNI сайта для Reality

В данной инструкции будет описана пошаговая настройка сайта для работы Reality, с использованием веб сервера Nginx и Certbot

1. Привязка IP адреса сервера к доменному имени

SNI сайт невозможно поднять без доменного имени, Вы можете быстро и легко приобрести домен у нас на сайте за несколько минут - https://my.aeza.net/order/domain

Нам требуется добавить А запись которая будет направлена на сервер Сделать это можно указав знак @ и IP сервера

Сохраняем информацию и подтверждаем добавление данной А записи Ожидаем от 5 минут до 24х часов глобального обновления после чего продолжаем настройку

2. Установка Nginx и Certbot

В данном случае будет описана настройка на сервере с операционной системой Ubuntu 22.04

Установим Nginx и Certbot следующими командами:

sudo apt install nginx certbot python3-certbot-nginx

3. Настройка Nginx и получение SSL сертификата через Certbot

После установки Nginx имеется файл default.conf который нам не требуется, удалим его:

rm /etc/nginx/sites-enabled/default

Создадим директорию в которой будут лежать файлы сайта командой:

mkdir /var/www/html/site

В данную директорию нужно загрузить файл(ы) сайта который будет открываться по доменному имени, назовите файл index.html

Далее мы создадим конфигурационный файл сайта:

nano /etc/nginx/sites-available/sni.conf

Добавим следующую информацию:

server {
    listen 80;
    server_name доменное имя;

    if ($host = доменное имя) {
        return 301 https://$host$request_uri;
    } 

    return 404;
}

Включим сайт командой

ln -s /etc/nginx/sites-available/sni.conf /etc/nginx/sites-enabled/

После чего получим бесплатный SSL сертификат с помощью Certbot

certbot --nginx -d доменное имя

После введения данной команды, certbot попросит ввести вашу почту, после чего нужно согласиться с условиями и сертификат будет успешно выдан.

Нужно оставить открытым 80 порт либо внести его в исключения фаервола для автоматического продления SSL сертификата.

Приведем конфигурационный файл sni.conf к правильному виду исходя из требований Reality

server {
    listen 127.0.0.1:8443 ssl http2 proxy_protocol;
    server_name доменное имя;

    ssl_certificate /etc/letsencrypt/live/доменное имя/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/доменное имя/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    # Настройки Proxy Protocol
    real_ip_header proxy_protocol;
    set_real_ip_from 127.0.0.1;
    set_real_ip_from ::1;

    root /var/www/html/site;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Протестируем конфигурацию файла sni.conf командой nginx -t, должны увидеть следующее сообщение:

Перезагрузим Nginx командой:

systemctl restart nginx

Ваш SNI сайт готов для использования, он доступен локально по порту 8443 В DEST(Target) нужно указать 127.0.0.1:8443, в SNI (Server name) доменное имя без порта, параметр xver должен быть со значением 1

Пример установленого SNI на панели 3x-ui:

Пример установленого SNI на панели Marzban:

Last updated