@Energy2

Как правильно сделать поддомен на vps?

Добрый день.

Как мне сделать поддомен для сайта, если сейчас он устроен так:
В директории root/site.ru/ запускается нода по адресу 127.0.0.1:3001 и отдает фроненд через nginx.
sites-enabled/default

map $sent_http_content_type $expires {
"text/html" epoch;
"text/html; charset=utf-8" epoch;
default off;
}

server {
listen 80;
access_log /var/log/nginx/access.log;
return 301 https://$host$request_uri;
server_name site; # setup your domain here
root /root/site;

gzip on;
gzip_types text/plain application/xml text/css application/javascript;
gzip_min_length 1000;

location / {
expires $expires;

proxy_redirect off;
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_read_timeout 1m;
proxy_connect_timeout 1m;
proxy_pass http://127.0.0.1:3001; # set the adress of the Node.js instance here
}
}

server {
listen 443 ssl;
listen [::]:443 ssl;
access_log /var/log/nginx/access.log;
ssl_certificate /etc/ssl/site.crt;
ssl_certificate_key /etc/ssl/site.key; # the port nginx is listening on
server_name site; # setup your domain here
root /root/site;

gzip on;
gzip_types text/plain application/xml text/css application/javascript;
gzip_min_length 1000;

location / {
expires $expires;

proxy_redirect off;
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_read_timeout 1m;
proxy_connect_timeout 1m;
proxy_pass http://127.0.0.1:3001; # set the adress of the Node.js instance here
}
}


А в директории root/api/ запускается еще одна нода по адресу site.ru:3000 - это api
Сейчас обращения к api происходят по ссылке site.ru:3000/*, а я хочу по поддомену api.site.ru/*.
Как я понял нужно создать файл например api в sites-enabled и указать порт для node.js (api) 443, но как в таком случае сконфигурировать этот api в sites-enabled, чтобы не было противоречий с фронендом? И будет ли нода ругаться на уже открытый порт?

PS: знаю, что желательно держать frontend и backend на разных серверах, но у меня пока что так....
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
Andrew_Pinkerton
@Andrew_Pinkerton
Мой ответ помог - отметьте его решением.
1. Создаешь sites-enabled/api.site.ru.conf (не забудь настроить ДНС для api.site.ru)
2. Пишешь в нем примерно следующее:
spoiler
server {
listen 443 ssl;
listen [::]:443 ssl;
access_log /var/log/nginx/api.site.ru_access.log; 
ssl_certificate /etc/ssl/api.site.ru.crt; 
ssl_certificate_key /etc/ssl/api.site.ru.key;
server_name api.site.ru; 
root /root/api.site.ru;

gzip on;
gzip_types text/plain application/xml text/css application/javascript;
gzip_min_length 1000;

location / {
# тут заголовки и др.
proxy_pass http://127.0.0.1:3000; # Тут адрес ноды которая отдает API (уже запущенная)
}
}

3. Потом проверяешь что всё ок nginx -t (не забываем про сертификаты)

Если вкратце то на этом всё.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Spice IT Recruitment Москва
До 200 000 руб.
Взахлёб Ульяновск
от 90 000 до 120 000 руб.
IQ Oрtiоn Software Санкт-Петербург
от 140 000 до 170 000 руб.