Node-RED ทำไมต้องใช้พอร์ต 1880 มาทดลองวาง Reverse Proxy ด้วย NGINX เพื่อใช้พอร์ต 80 กัน

Kritsada Arjchariyaphat
Deaware
Published in
3 min readJul 31, 2018

Node-RED

คือ Flow-based programming ที่ได้รับความนิยมอย่างสูงมาก โดยเฉพาะงานทางด้าน Internet of Things

ความเจ๋งของ Node-RED คือ อยากคุยกับ IoT Protocol อะไร อยากเชื่อมต่อระบบ Line, Blynk หรือ Cloud Service ของเจ้าอื่นๆ เช่น Firebase, AWS
ก็สามารถลากวางๆ ได้เลย และที่สำคัญลง Plugin เพิ่มได้ด้วยนะ

แต่ทีนี้ใครที่เคยทดลองใช้ Node-RED จะสังเกตว่า default Port ที่ใช้ในการเข้าเว็บจะต้องมี :1880 ทุกครั้งเนื่องจากNode-RED ถูกตั้งค่าให้ทำงานที่ default 1880 นั่นเอง ตัวอย่างเช่น mynoderedserver.com:1880 เป็นต้น รวมทั้ง API อื่นๆ ของ HTTP อีกด้วย

ตัวอย่างหน้า dashboard plugin ของ node-red แบบง่ายๆ ต้องเข้าผ่าน <ip-address>:1880/ui

ถ้าเราอยากเข้า mynoderedserver.com เฉยๆ ปกติเราสามารถแก้ได้โดยการตั้ง configuration uiPort ได้ https://nodered.org/docs/configuration

Node-RED ยังสามารถลงบนบอร์ดเช่น Nano-Pi, Raspberry PI หรือ Window, Ubuntu ได้ด้วยนะ แต่บทความนี้ไม่ได้เริ่มต้นใช้ Node-RED พื้นฐานเราจะมาแก้ตรง 1880 นี่ด้วย NGINX กัน

แต่บทความนี้เราจะมาทดลองใช้ NGINX ทำ Reverse Proxy เพื่อแก้พอร์ตอย่างง่ายๆ
และอนาคตเรายังใช้ประโยชน์จาก NGINX เช่นในการทำ Load balance หรือทำ security เรื่องของ cache หรือ compression เว็บไซต์ Node-RED ของเราได้อีกด้วย

NGINX หรืออ่านว่า เอนจิ้นเอ็ก ( Engin-X ) เป็น Web server ที่หลายๆคนรู้จักกันดีเรียกว่าเป็นคู่แข่งกับ Apache นั่นเอง

แต่นอกจากจะนำ NGINX มาทำ Web server ใช้งานโดยตรงแล้ว เรายังสามารถเอามาประยุกต์ใช้งานอย่างในบทความนี้ ที่มี Application ทำงานอยู่ที่พอร์ตอื่นๆ และเราใช้ NGINX ในการรับผ่านพอร์ต 80 เพื่อส่งต่อไปพอร์ตของ Application นั่นเอง
เราเรียกว่า Reverse Proxy

เริ่มต้นติดตั้ง NGINX กัน ในบทความนี้ใช้ Ubuntu 16.04 LTS Server ในการทดสอบ

ติดตั้งด้วยคำสั่ง

sudo apt-get install nginx -y

สั่ง enable เพื่อให้ NGINX ทำงานทุกครั้งที่ Restart Server

sudo systemctl enable nginx

ทดลองสร้างไฟล์ *.conf สำหรับ node-red โดยการใช้ editor เช่น nano หรือ vi

sudo nano /etc/nginx/conf.d/nodeapp.conf

ให้ใส่ information พื้นฐานดังภาพนี้ลงใน nodeapp.conf ที่สร้างขึ้น
โดยจุดที่สำคัญๆ เช่น

server_name เป็น domain name ของ server เรา
location / เป็น path ที่ nginx จะรับเข้ามาและทำ proxy_pass ไปที่ URL ใหม่ที่สร้างขึ้น

หลังจากนั้นให้ทดลอง reload nginx configuration ด้วยคำสั่ง

sudo nginx -s reload

หลังจากนั้นให้ทดลองเข้า URL ของ Node-RED ใหม่ จะพบว่าไม่ต้องมาใส่ 1880 ทุกครั้งแล้ว

อะ แต่พอเข้าได้ซักพัก Node-RED จะขึ้น Lost Connection เราจะต้องเพิ่ม configuration อีกนิดนึงเนื่องจากส่วนจอง Websocket ยังไม่ตั้ง proxy ไม่ถูกต้อง

แล้วให้ reload อีกครั้งจะสามารถใช้ Node-RED ได้ปกติแล้ว

สำหรับเทคนิคนี้ ก็เป็นวิธีที่น่าสนใจในการนำไปใช้สร้าง server ของตนเองโดยการใช้ Node-RED นอกจากนั้น NGINX ยังสามารถเอามาประยุกต์ใช้ได้อีกหลายแบบมาก รวมทั้งการออกแบบระบบขนาดใหญ่ขึ้น ในบทความหน้าเราจะมายกตัวอย่างการทำ authentication บน node-red และใช้ nginx ในการเข้ารหัส SSL กันครับ

[ช่วงประชาสัมพันธ์]

สำหรับผู้ที่สนใจเริ่ม Node-RED และประยุกต์ใช้ตั้งแต่ต้นทาง Deaware มีหลักสูตร IoT ที่เนื้อหาครบถ้วน จนสามารถประยุกต์ใช้ได้กำลังประชาสัมพันธ์อยู่ในขณะนี้

https://drive.google.com/file/d/0B-IbzRNLM9hPSzNKSFRmSHRNZFU/view?usp=sharing

สามารถติดต่อได้ทางลิงค์ด้านล่างนี้ครับ

www.facebook.com/deaware
หรือทาง EMAIL : connect@deaware.com

--

--