@kr_ilya

Как правильно сделать поддомен на 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 на разных серверах, но у меня пока что так....
  • Вопрос задан
  • 959 просмотров
Решения вопроса 1
deepblack
@deepblack
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 (не забываем про сертификаты)

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

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

Похожие вопросы