Гайд: Поддомен, сайт и проксирование локального адреса

1. Настройка DNS для поддомена

Чтобы поддомен subdomain.example.com указывал на ваш сервер, создаем A-запись:

Type Name Value TTL
A subdomain <IP сервера> 3600
  • Type: Тип записи — A.
  • Name: Имя поддомена, например subdomain.
  • Value: IP вашего сервера.
  • TTL: Время жизни DNS-записи (3600 секунд = 1 час).

После добавления записи может пройти некоторое время до обновления (обычно до 5–15 минут).


2. Создание сайта в директории поддомена

2.1 Без PHP (статический сайт)

  1. На сервере создайте папку для поддомена:
mkdir -p /var/www/subdomain.example.com
  1. Создайте файл index.html:
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Subdomain Example</title>
</head>
<body>
    <h1>Сайт на поддомене работает!</h1>
</body>
</html>
  1. Настройка веб-сервера (например, Nginx):
server {
    listen 80;
    server_name subdomain.example.com;

    root /var/www/subdomain.example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
  1. Перезагрузите Nginx:
sudo systemctl reload nginx

2.2 С PHP

  1. Установите PHP и необходимые модули (для Ubuntu/Debian):
sudo apt update
sudo apt install php-fpm php-mysql
  1. Создайте директорию и файл index.php:
mkdir -p /var/www/subdomain.example.com
nano /var/www/subdomain.example.com/index.php

Пример содержимого index.php:

<?php
echo "<h1>Сайт на PHP поддомене работает!</h1>";
phpinfo();
?>
  1. Настройка Nginx для PHP:
server {
    listen 80;
    server_name subdomain.example.com;

    root /var/www/subdomain.example.com;
    index index.php index.html;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }
}
  1. Перезагрузите Nginx:
sudo systemctl reload nginx

3. Проксирование локального порта на поддомен

Если у вас есть локальный сервис на сервере (например, localhost:3000), можно проксировать его на поддомен с помощью Nginx:

server {
    listen 80;
    server_name subdomain.example.com;

    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;
    }
}
  • proxy_pass — адрес локального сервиса.
  • Заголовки нужны для корректной работы веб-приложений.

После добавления конфигурации перезагрузите Nginx:

sudo systemctl reload nginx

Теперь ваш сервис доступен по адресу http://subdomain.example.com.