Skip to content
  • Структура Nginx в YunoHost 12

    Прикреплена Перенесена YunoHost
    8
    0 Голоса
    8 Сообщения
    6 Просмотры
    A
    Общая теория Nginx Разберём общую теорию Nginx, как он работает, чтобы потом проще понимать Yunohost и любую веб-инфраструктуру. Я постараюсь максимально подробно, с примерами и пояснениями. 1️⃣ Архитектура Nginx Nginx — это высокопроизводительный веб-сервер и reverse proxy, который может работать с HTTP, HTTPS, TCP и UDP потоками. Основные компоненты Master process (главный процесс) Запускается от root (для открытия портов <1024, например 80 и 443). Читает конфигурацию (nginx.conf) и запускает worker-процессы. Управляет перезапуском, логами и перезагрузкой конфигурации. PID хранится в /run/nginx.pid. Worker processes (рабочие процессы) Основная работа: обработка HTTP-запросов, proxy, отдача файлов. Запускаются от обычного пользователя (например www-data). Каждый worker может обрабатывать множество соединений одновременно через асинхронный event loop (epoll/kqueue). Event loop Внутри worker процессов. Асинхронно обрабатывает сокеты, читает/пишет данные без блокировки. Позволяет одному worker’у обрабатывать тысячи соединений. 2️⃣ Работа с доменами и виртуальными хостами Server blocks (виртуальные хосты) Один Nginx сервер может обслуживать несколько доменов на одном IP через server { ... } блоки. Пример: server { listen 80; server_name example.com www.example.com; root /var/www/example.com; index index.html; location / { try_files $uri $uri/ =404; } } Объяснение: listen 80; — порт, на котором сервер слушает HTTP-запросы. server_name — имена доменов, которые этот блок обслуживает. root — корневая папка для файлов сайта. location / — обработка запросов к URL. try_files $uri $uri/ =404; — ищет файл, если нет — 404. Yunohost делает примерно то же самое, но автоматически создаёт отдельные блоки для каждого домена и приложений. Server_name vs default_server default_server — блок, который обслуживает все запросы, если домен не совпал ни с одним server_name. В Yunohost главный домен admin обычно ставится в default_server. 3️⃣ Порты и протоколы Nginx может слушать любые порты. HTTP: 80 HTTPS: 443 TCP/UDP: любые, через stream {} блок Можно слушать локально (127.0.0.1:port) или публично (0.0.0.0:port). Пример proxy_pass: server { listen 443 ssl; server_name myapp.example.com; ssl_certificate /etc/letsencrypt/live/myapp/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/myapp/privkey.pem; location / { proxy_pass http://127.0.0.1:3025; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } Nginx слушает HTTPS на 443. Проксирует на backend (например, Node.js или Yunohost приложение) по 127.0.0.1:3025. 4️⃣ Взаимодействие с процессами и ресурсами Каждый worker: Обрабатывает много соединений одновременно. Работает асинхронно, не создавая отдельный поток на каждого клиента. worker_connections + worker_processes = максимальное количество соединений. Пример: auto worker_processes + worker_connections 768 → несколько тысяч одновременных клиентов. 5️⃣ Конфигурация include Nginx читает главный конфиг (nginx.conf), а затем подключает include файлы: include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; Это позволяет: Разделять конфиги на логические блоки Yunohost держит свои домены в conf.d/ Другие сайты или Jitsi в sites-enabled/ 6️⃣ SSL и HTTPS Настраивается в server block: listen 443 ssl; ssl_certificate /path/fullchain.pem; ssl_certificate_key /path/privkey.pem; Nginx может автоматически использовать LetsEncrypt через Yunohost или certbot. Можно указать протоколы (ssl_protocols TLSv1.2 TLSv1.3;) и предпочтительные шифры. 7️⃣ Proxy и backend Nginx может работать как reverse proxy: location / { proxy_pass http://127.0.0.1:3025; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } Прокси позволяет: Скрывать порт backend приложения Объединять несколько сайтов на одном IP Делать SSL-termination (TLS на Nginx, а backend по HTTP) 8️⃣ Логирование и gzip access_log и error_log — логируют запросы и ошибки. gzip on; — сжатие текста (HTML, CSS, JS), ускоряет отдачу клиентам. 9️⃣ Потоковые (stream) возможности Nginx умеет работать с TCP/UDP: stream { server { listen 5222; # XMPP proxy_pass 127.0.0.1:5222; } } Полезно для Mailcow (SMTP, IMAP, POP3) или Jitsi Videobridge. Ключевые выводы Master + worker — асинхронная, масштабируемая архитектура. Server blocks — виртуальные хосты для доменов, могут быть HTTP или HTTPS. Include — позволяет организовать конфиги по каталогам (conf.d/, sites-enabled/). Proxy_pass — объединяет внешние порты с внутренними сервисами. SSL/TLS — делается на уровне server block, может быть централизованно через Yunohost. Гибкость портов — Nginx может обслуживать HTTP, HTTPS, TCP, UDP. Асинхронность — один worker обрабатывает тысячи соединений без блокировки.
  • Установка PeerTube на Debian 12

    PeerTube
    5
    0 Голоса
    5 Сообщения
    7 Просмотры
    A
    3. Конфигурационный файл для Nginx Создаём файл, не забываем сделать симлинк. Вот сам конфиг: ## ВНИМАНИЕ !! Для LXC контейнера лучше из этого конфига убрать комментарии с кириллицей, иначе certbot будет ругаться на кодировку server { listen 80; listen [::]:80; server_name peertubevideo.nbics.net; # Замените на ваш домен access_log /var/log/nginx/peertube.access.log; error_log /var/log/nginx/peertube.error.log; # Проксирование всех запросов к PeerTube location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; client_max_body_size 24G; # Увеличиваем лимит до 24 ГБ для всех запросов proxy_pass http://10.0.3.171:3025; proxy_connect_timeout 10m; proxy_send_timeout 10m; proxy_read_timeout 10m; send_timeout 10m; } # WebSocket для PeerTube (socket.io и tracker) location /socket.io { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_pass http://10.0.3.171:3025; } location /tracker/socket { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_read_timeout 15m; # Для долгоживущих WebSocket-соединений proxy_pass http://10.0.3.171:3025; } } Меняем 10.0.3.171:3025 на нужные ip и порт. Меняем peertubevideo.nbics.net на свой домен Создаём сертификат