103 слова | 1 минута

Nginx

Для начала нужно обновить списки пакетов из репозиториев:

sudo apt update

После окончания процесса обновления пакетов можно установить Nginx на машину:

sudo apt install nginx

Дождемся окончания установки, а после добавим программу в автозагрузку

sudo systemctl enable nginx

Теперь нужно проверить, что веб-сервер успешно установлен и работает, а также добавлен в автозагрузку. Проверим статус работы веб-сервера

sudo service nginx status

Строка «Active: active (running)...» указывает на успешную работу сервера.

Теперь проверим его наличие в автозагрузке:

sudo systemctl is-enabled nginx

Конфиг лежит тут: /etc/nginx/nginx.conf

Настройки

Это nginx.conf, sites-available и sites-enabled соответственно. Все они лежат в директории /etc/nginx.

sudo nano /etc/nginx/nginx.conf

Настройка виртуальных хостов: https://timeweb.cloud/tutorials/ubuntu/kak-ustanovit-nginx-na-ubuntu

Сайты по умолчанию лежат тут: /var/www/

Обратный прокси

/etc/nginx/sites-enabled/example.conf

Смысл в том, что настраиваем nginx в качестве reverse-proxy для NodeJS

# List of application servers
upstream api {
  server localhost:3000;
}
upstream bot {
  server localhost:3010;
}

server {
  server_name 2dapp.ru;

  root /var/www/html;

  index index.html index.htm;

  error_page 404 /404.html;

  location / {
    #try_files $uri $uri/ @backend;
     try_files $uri $uri/ =404;
  }

  location /api {
    proxy_pass http://api;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }

  location /bot {
    proxy_pass http://bot;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }

  listen 443 ssl; # managed by Certbot
  ssl_certificate /etc/letsencrypt/live/2dapp.ru/fullchain.pem; # managed by Certbot
  ssl_certificate_key /etc/letsencrypt/live/2dapp.ru/privkey.pem; # managed by Certbot
  include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
  if ($host = 2dapp.ru) {
    return 301 https://$host$request_uri;
  } # managed by Certbot

  listen 80;
  server_name 2dapp.ru;
    return 404; # managed by Certbot
}