Node.js: รันแอปผ่าน Nginx Unit
เซิร์ฟเวอร์ web4 มี Node.js 24 และ npm 11 พร้อมใช้งาน แอป Node.js จะรันและรับ request ผ่าน Nginx Unit ซึ่งจัดการผ่านเมนู Advanced Features › Nginx Unit

หน้านี้มี 2 แท็บ
- Applications — รายการแอปที่สร้างไว้ (ชื่อ, ประเภท, โฟลเดอร์ที่ผูกไว้)
- Routes — กำหนดว่าโดเมน/พาธใดจะส่ง request ไปยังแอปใด
⚠️ แนะนำ: ใช้ Subdomain สำหรับแอป
ถ้าสร้าง Route ที่พาธ / ของโดเมนหลัก แอปจะ รับ request ทั้งเว็บไซต์แทน รวมถึงหน้าเว็บ PHP / WordPress เดิมด้วย จึงแนะนำให้สร้าง subdomain แยก เช่น api.DOMAIN หรือ app.DOMAIN (วิธีสร้าง Subdomain) แล้วผูกแอปกับ subdomain นั้น
เตรียมไฟล์แอป
- วางโค้ดในโฟลเดอร์ใต้
domains/เช่น~/domains/api.DOMAIN/node-app/(อัปโหลดผ่าน File Manager หรือgit cloneตามคู่มือ Git) - ติดตั้ง dependency ในโฟลเดอร์โปรเจกต์
cd ~/domains/api.DOMAIN/node-app
npm install
ตัวอย่างแอปอย่างง่าย (app.js)
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('สวัสดีจาก web4!'));
// แอปรับ request ผ่าน Nginx Unit (unit-http) ไม่ต้องเปิดพอร์ตเอง
app.listen(process.env.PORT || 3000);
💡 แอปทำงานผ่าน Nginx Unit (แพ็กเกจ unit-http) — แนะนำให้เลือก Template ของ Node.js ในหน้าสร้างแอป (ช่อง Apply Template) ระบบจะตั้งค่าส่วนนี้ให้ ไม่ต้องรัน node app.js ค้างไว้เองใน Terminal
สร้าง Application
- ที่หน้า Nginx Unit กด CREATE APPLICATION
- กรอกข้อมูล
- Name — ชื่อแอป เช่น
node - Type — เลือก
Node.jsและที่ Apply Template เลือกเทมเพลต Node - Version — เลือกเวอร์ชัน Node.js
- Working directory — เลือกโฟลเดอร์แอป เช่น
/domains/api.DOMAIN/node-app/(คลิกเลือกจากรายการโฟลเดอร์ได้) - ระบุไฟล์เริ่มต้นของแอป (เช่น
app.js) ตามช่องที่แบบฟอร์มแสดง
- Name — ชื่อแอป เช่น
- กด CREATE

ภาพตัวอย่างเป็นฟอร์มเมื่อเลือก Type อื่น — ช่องในส่วน Application Options จะเปลี่ยนไปตามชนิดแอปที่เลือก
สร้าง Route และรีสตาร์ตแอป
- กด CREATE ROUTE แล้วผูก subdomain (เช่น
api.DOMAIN) กับแอปที่สร้างไว้ - ทดสอบเปิด
https://api.DOMAIN/ - เมื่อแก้โค้ดหรือ
git pullแล้ว ให้ รีสตาร์ตแอป — คลิกชื่อแอปเพื่อเปิดหน้า Modify App (หรือเมนู ⋯ ท้ายแถว) แล้วกด MODIFY เพื่อบันทึกและโหลดแอปใหม่

หน้า Modify App มีแท็บ Application / Configuration / Advanced สำหรับแก้ไขค่าต่าง ๆ ภายหลัง
ปัญหาที่พบบ่อย
- เปิดเว็บแล้วกลายเป็นหน้าแอปแทนเว็บเดิม — น่าจะสร้าง Route ที่
/ของโดเมนหลัก ให้ลบ Route นั้นในแท็บ Routes แล้วย้ายแอปไปใช้ subdomain - แก้โค้ดแล้วเว็บไม่เปลี่ยน — ต้องรีสตาร์ตแอปทุกครั้งหลังแก้โค้ดหรือ
git pull - Module not found — ตรวจว่ารัน
npm installในโฟลเดอร์โปรเจกต์แล้ว