Как настроить Nginx как обратный прокси для приложения Nodejs |

Как настроить Nginx как обратный прокси для приложения Nodejs

Мануал

Nodejs – бесплатная, открытая, легкая, масштабируемая и эффективная среда JavaScript, построенная на движке JavaScript V8 от Chrome, и использует управляемую событиями, неблокирующую модель ввода-вывода.

Nodejs теперь повсюду, и стал настолько популярен для разработки программного обеспечения для веб-сайтов, веб-приложений и сетевых приложений и т. д.

Nginx – это сервер с открытым исходным кодом, высокопроизводительный HTTP-сервер, балансировщик нагрузки и программное обеспечение обратного прокси.

Он имеет простой язык настройки, который упрощает работу.

В этой статье мы покажем, как настроить Nginx как обратный прокси для приложений Nodejs.

Примечание. Если ваша система уже запущена с Nodejs и NPM, и ваше приложение работает на определенном порту, перейдите к шагу 4.

Шаг 1. Установка Nodejs и NPM в Linux.

Последняя версия Node.js и NPM доступна для установки из официального репозитория дистрибутивов NodeSource Enterprise Linux, Fedora, Debian и Ubuntu, который поддерживается веб-сайтом Nodejs, и вам нужно будет добавить его в свою систему, чтобы иметь возможность установить последние пакеты Nodejs и NPM, как показано на рисунке.

На Debian/Ubuntu

----------  Node.js v11.x ---------- 
$ curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
$ sudo apt-get install -y nodejs

---------- Node.js v10.x ----------
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install -y nodejs

НА CentOS/RHEL and Fedora

---------- Node.js v11.x ---------- 
$ curl -sL https://rpm.nodesource.com/setup_11.x | bash -

---------- Node.js v10.x ----------
$ curl -sL https://rpm.nodesource.com/setup_10.x | bash -

Шаг 2: Создание приложения Nodejs

Для демонстрационной цели мы создадим образец приложения под названием «sysmon», который будет работать на порту 5000

$ sudo mkdir -p /var/www/html/sysmon
$ sudo vim /var/www/html/sysmon/server.js

Скопируйте и вставьте следующий код в файл server.js (замените 192.168.43.31 на ваш IP-адрес сервера).

const http = require('http');

const hostname = '192.168.43.31';
const port = 5000;

const server = http.createServer((req, res) => {
	res.statusCode = 200;
  	res.setHeader('Content-Type', 'text/plain');
  	res.end('Sysmon App is Up and Running!\n');
});

server.listen(port, hostname, () => {
  	console.log(`Server running at http://${hostname}:${port}/`);
});

Сохраните файл и выйдите.

Теперь запустите приложение, используя следующую команду (нажмите Ctrl + x, чтобы завершить его).

$ sudo node /var/www/html/sysmon/server.js
или
$ sudo node /var/www/html/sysmon/server.js &   #start it in the background to free up your terminal

Теперь откройте браузер и получите доступ к вашему приложению по адресу http://198.168.43.31:5000.

Шаг 3: Установите обратный прокси Nginx в Linux

Мы установим последнюю версию Nginx из официального репозитория, как показано ниже.

На Debian/Ubuntu

Создайте файл с именем /etc/apt/sources.list.d/nginx.list и добавьте в него следующие строки.

deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/  bionic nginx

Затем добавьте ключ подписи репозитория, обновите индекс системного пакета и установите пакет nginx следующим образом.

$ wget --quiet http://nginx.org/keys/nginx_signing.key && sudo apt-key add nginx_signing.key
$ sudo apt update
$ sudo apt install nginx

На CentOS/RHEL and Fedora

Создайте файл с именем /etc/yum.repos.d/nginx.repo и вставьте одну из приведенных ниже конфигураций.

CentOS
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
RHEL
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/ gpgcheck=0 enabled=1

Примечание. Из-за различий между CentOS и RHEL необходимо заменить $ releasever с 6 (для 6.x) или 7 (для 7.x), в зависимости от вашей версии ОС.

Затем добавьте ключ подписи репозитория и установите пакет nginx, как показано далее.

# wget --quiet http://nginx.org/keys/nginx_signing.key && rpm --import nginx_signing.key
# yum install nginx

После успешной установки Nginx запустите его, включите его автоматический запуск при загрузке системы и проверьте, запущен ли он.

---------- На Debian/Ubuntu ---------- 
$ sudo systemctl status nginx
$ sudo systemctl enable nginx
$ sudo systemctl status nginx

---------- На CentOS/RHEL ---------- 
# systemctl status nginx
# systemctl enable nginx
# systemctl status nginx

Если вы используете системный брандмауэр, вам необходимо открыть порт 80 (HTTP), 443 (HTTPS) и 5000 (приложение Node), которые веб-сервер прослушивает для запросов на подключение клиентов.

---------- На Debian/Ubuntu ---------- 
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw allow 5000/tcp
$ sudo ufw reload

---------- На CentOS/RHEL ---------- 
# firewall-cmd --permanent --add-port=80/tcp
# firewall-cmd --permanent --add-port=443/tcp
# firewall-cmd --permanent --add-port=5000/tcp
# firewall-cmd --reload

Шаг 4: Настройте Nginx как обратный прокси для приложения Nodejs

Теперь создайте файл конфигурации сервера для вашего приложения Node в /etc/nginx/conf.d/, как показано ниже

$ sudo vim /etc/nginx/conf.d/sysmon.conf 

Скопируйте и вставьте следующую конфигурацию (измените 192.168.43.31 с вашим IP-адресом сервера и с вашим доменным именем).

server {
    listen 80;
    server_name sysmon.tecmint.lan;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         http://192.168.43.31:5000;
    }
}
}

Сохраните изменения и выйдите из файла.

Наконец, перезапустите службу Nginx

$ sudo systemctl restart nginx
или
# systemctl restart nginx

Шаг 5: Доступ к приложению Nodejs через веб-браузер

Теперь вы должны иметь доступ к своему Node-приложению, не предоставляя порт, который он прослушивает, в URL-адресе: это удобный способ для пользователей получить к нему доступ.

http://sysmon.tecmint.lan

Чтобы ваше тестовое доменное имя работало, вам нужно настроить локальный DNS с помощью файла /etc/hosts, открыть его и добавить в него строку ниже (не забудьте изменить 192.168.43.31 на ваш IP-адрес сервера и tecmint.lan  вашим именем domain по умолчанию).

192.168.43.31 sysmon.tecmint.lan

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий