Skip to content

Nginx

Конфигурация

1. Конфигурации поддоменов

  • /etc/nginx/sites-available/api.a-ceramica.ru — конфигурация для бэкенда на FastAPI
  • /etc/nginx/sites-available/admin.a-ceramica.ru — конфигурация для админки на Nuxt 3
  • /etc/nginx/sites-available/auth.a-ceramica.ru — конфигурация для Keycloak

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

bash
/etc/nginx/sites-enabled/api.a-ceramica.ru -> ../sites-available/api.a-ceramica.ru
/etc/nginx/sites-enabled/admin.a-ceramica.ru -> ../sites-available/admin.a-ceramica.ru
/etc/nginx/sites-enabled/auth.a-ceramica.ru -> ../sites-available/auth.a-ceramica.ru

Пример типовой конфигурации сайта

nginx
server {
    server_name subdomain.a-ceramica.ru;

    location / {
        proxy_pass http://127.0.0.1:3000; # адрес и порт для проксирования
        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;

        # Если необходимо закрыть под логин с паролем
        auth_basic "Restricted Area";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }

    error_log /var/www/logs/frontend/subdomain.a-ceramica.error.log warn; # путь к логам для ошибок и предупреждений, указанный путь должен существовать
    access_log /var/www/logs/frontend/subdomain.a-ceramica.access.log; # путь к логам доступа, указанный путь должен существовать

    # Указание сертификатов и ключей для SSL, указывается сразу, позже сами сертификаты создаются через certbot
    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/subdomain.a-ceramica.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/subdomain.a-ceramica.ru/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

server {
    if ($host = subdomain.a-ceramica.ru) {
        return 301 https://$host$request_uri;
    }

    server_name subdomain.a-ceramica.ru;
    listen 80;
    return 404;
}

Обслуживание и перезагрузка

Проверка конфигурации:

bash
sudo nginx -t

Перезагрузка nginx:

bash
sudo systemctl reload nginx

или, если нужно жёстко перезапустить:

bash
sudo systemctl restart nginx

Создание нового поддомена

  1. Добавить запись поддомена в DNS у хостера
  2. Создать файл в /etc/nginx/sites-available/new-subdomain.example.com
  3. Вставить и настроить конфигурацию (можно взять за основу существующий шаблон)
  4. Проверить конфигурацию:
bash
sudo nginx -t
  1. Создать символическую ссылку:
bash
sudo ln -s /etc/nginx/sites-available/new-subdomain.example.com /etc/nginx/sites-enabled/
  1. Перезагрузить Nginx:
bash
sudo systemctl reload nginx

SSL и получение сертификатов

  • SSL-сертификаты выдаются через certbot
  • Сертификаты лежат в /etc/letsencrypt/live/

Для получения сертификатов используется следующая команда:

bash
certbot --nginx

Связанные секции

Внутренний ресурс компании