Nodejs – бесплатная, открытая, легкая, масштабируемая и эффективная среда JavaScript, построенная на движке JavaScript V8 от Chrome, и использует управляемую событиями, неблокирующую модель ввода-вывода.
Nodejs теперь повсюду, и стал настолько популярен для разработки программного обеспечения для веб-сайтов, веб-приложений и сетевых приложений и т. д.
Nginx – это сервер с открытым исходным кодом, высокопроизводительный HTTP-сервер, балансировщик нагрузки и программное обеспечение обратного прокси.
Он имеет простой язык настройки, который упрощает работу.
В этой статье мы покажем, как настроить Nginx как обратный прокси для приложений Nodejs.
Примечание. Если ваша система уже запущена с Nodejs и NPM, и ваше приложение работает на определенном порту, перейдите к шагу 4.
- Шаг 1. Установка Nodejs и NPM в Linux.
- На Debian/Ubuntu
- НА CentOS/RHEL and Fedora
- Шаг 2: Создание приложения Nodejs
- Шаг 3: Установите обратный прокси Nginx в Linux
- На Debian/Ubuntu
- На CentOS/RHEL and Fedora
- Шаг 4: Настройте Nginx как обратный прокси для приложения Nodejs
- Шаг 5: Доступ к приложению Nodejs через веб-браузер
Шаг 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