Я проксі-незалежні програми Node Express через Nginx.
Таким чином, нові програми можна легко монтувати, і я також можу запускати інші речі на одному сервері в різних місцях.
Розгортайте кілька додатків Node на одному веб-сервері в папках з Nginx
З Node все стає складніше, коли вам потрібно перенести свою програму з localhost в Інтернет.
Не існує загального підходу до розгортання вузла.
Google може знайти багато статей на цю тему, але я намагався знайти правильне рішення для потрібних налаштувань.
В основному, у мене є веб-сервер, і я хочу, щоб додатки Node монтувалися до папок (тобто http: // myhost / demo / pet-project / ), не вводячи будь-якої залежності конфігурації до коду програми.
У той же час я хочу, щоб інші речі, такі як блог, працювали на тому ж веб-сервері.
Звучить просто так? Мабуть, ні.
У багатьох прикладах у веб-додатках Node або запускаються через порт 80, або передаються Nginx до кореня.
Хоча обидва підходи справедливі для певних випадків використання, вони не відповідають моїм простим, але трохи екзотичним критеріям.
Ось чому я створив власну конфігурацію Nginx і ось витяг:
upstream pet_project {
server localhost:3000;
}
server {
listen 80;
listen [::]:80;
server_name frontend;
location /demo/pet-project {
alias /opt/demo/pet-project/public/;
try_files $uri $uri/ @pet-project;
}
location @pet-project {
rewrite /demo/pet-project(.*) $1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $proxy_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://pet_project;
proxy_redirect http://pet_project/ /demo/pet-project/;
}
}
З цього прикладу ви можете помітити, що я монтую свою програму Pet Project Node, що працює на порту 3000 до http: // myhost / demo / pet-project .
Спочатку Nginx перевіряє, чи запитуваний ресурс є статичним файлом, доступним в / opt / demo / pet-project / public /, і якщо він так обслуговує його, що є високоефективним, тому нам не потрібно мати надлишковий шар, як Connect статичне проміжне програмне забезпечення.
Тоді всі інші запити перезаписуються та передаються на додаток Pet Project Node , тому додатку Node не потрібно знати, де він фактично встановлений, і таким чином можна переміщувати будь-куди виключно за конфігурацією.
proxy_redirect - це обов'язковий спосіб, щоб правильно обробляти заголовок Location. Це надзвичайно важливо, якщо ви використовуєте res.redirect () у своїй програмі Node.
Ви можете легко повторити цю установку для декількох додатків Вузла, що працюють на різних портах, і додати більше обробників локації для інших цілей.