Nginx proxy for nodejs simple cfg.
nano /etc/nginx/conf.d/node.conf
server { # порта на котором будет слушать listen 80; location / { # IP и порт, на которых висит запущенный сервис node.js proxy_pass https://127.0.0.1:8888; proxy_set_header Host $host; } location ^~ /files/ { # Путь к корневому каталогу со статическими файлами root /var/hosting/files } }
Автоматический запуск проекта на nodejs
Задачи:
1. Node start
2. Log ошибок
3. Авто поднятие сайта при его падении
Ставим ноду(ну мало ли)
curl -sL https://deb.nodesource.com/setup_6.x | bash - apt-ge install nodejs npm node-express-generator-y
Симлинким для совместимости
ln -s /usr/bin/nodejs /usr/bin/node
Ставим upstart и monit
apt-get install upstart monit -y
Далее. Создаем файл для автозапуска
nano /init/site.conf
Допустим что наш сайт находится в директории
/var/www/nodejs/site/
Содержимое файла
#site.conf description "node.js bin/www" author "username" start on startup stop on shutdown script export HOME="/root" echo $$ > /var/run/site.pid exec sudo -u username /usr/local/bin/node /var/www/nodejs/site/bin/www >> /var/log/site.sys.log 2>&1 end script pre-start script # Date format same as (new Date()).toISOString() for consistency echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/log/site.sys.log end script pre-stop script rm /var/run/site.pid echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/log/site.sys.log end script
Редактируем файл monita
nano /ect/monit/monitrc
check process site with pidfile "/var/run/site.pid" start program = "/sbin/start site" stop program = "/sbin/stop site" if failed port 3000 protocol HTTP request / with timeout 10 seconds then restart
Где порт 3000, впишите свой, по умолчанию нода запускается с портом 3000.
Далее редактим конфиг nginx
nano /etc/nginx/conf.d/node.conf
Конфиг nginx
server { server_name site.ru www.site.ru; listen 80; charset UTF-8; set $root_path /var/www/nodejs/site; location / { proxy_read_timeout 120s; proxy_pass https://127.0.0.1:3000; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } location ~* ^/(webstat|awstats|webmail|myadmin|pgadmin)/ { proxy_pass https://37.143.15.183:81; proxy_redirect https://37.143.15.183:81/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } location @fallback { proxy_pass https://37.143.15.183:81; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; }
Проверяем конфиг
nginx -t
Запускаем проект
start site monit -d 60 -c /etc/monit/monitrc
Прописываем сайте себе в хосты и профит.