รองรับ WebSocket สำหรับ Apache & NGINX
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
วัตถุประสงค์
บทความนี้อธิบายการใช้งาน รองรับ WebSocket สำหรับ Apache & NGINX บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง
ก่อนเริ่มดำเนินการ
- เข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์จัดการ Environment ที่เกี่ยวข้อง
- ตรวจสอบชื่อ Environment, Region และ Resource เป้าหมายก่อนบันทึกการเปลี่ยนแปลง
- สำรองข้อมูลหรือกำหนดแผนย้อนกลับก่อนแก้ไขระบบ Production
WebSocketเป็นเทคโนโลยี Client-Server ที่แพร่หลายซึ่งจะช่วยในการแลกเปลี่ยนข้อความและโต้ตอบแบบทันทีภายใน Application ของคุณโดยสร้างการเชื่อมต่อ TCP แบบ full-duplex อย่างต่อเนื่องระหว่าง Server และ Browser ของ Client การใช้ช่องทางการสื่อสารดังกล่าวส่งผลให้ latency ต่ำมากและเกิดการโต้ตอบที่รวดเร็ว ทำให้มั่นใจได้ว่า streaming ผ่าน proxies และ firewalls ทั้ง upstream และ downstream ในเวลาเดียวกัน
Ruk-Com Cloud จัดเตรียม WebSockets ขั้นสูงและเสริมด้วยการผสานรวมเทคโนโลยีนี้เข้ากับ Shared Load Balancer and NGINX-balancer คุณจึงสามารถใช้งานได้แม้ไม่มี IP address ภายนอกแนบกับ Server ของคุณโดยการรับ proxy Port ต่างๆที่แอป WebSockets ใช้ไปยัง Port เดียว - 80 สำหรับ HTTP และ 443 สำหรับ HTTPS
วิธีการใช้ WebSockets ที่ง่ายที่สุดสำหรับ Application คือวางBalancer NGINXไว้ข้างหน้า – สามารถดูรายละเอียดได้ที่นี่อย่างไรก็ตามวิธีการดังกล่าวอาจไม่สอดคล้องกับความต้องการของคุณในขณะที่ Application ยังคงต้องการใช้เทคโนโลยีนี้เพื่อนำไปปฏิบัติ ในกรณีนี้เรารองรับ WebSockets อย่างเต็มรูปแบบสำหรับ Application Server ที่มีอยู่ ซึ่งรวมถึงอาปาเช่(สำหรับให้บริการแอป PHP, Ruby และ Python) และNGINX(สำหรับแอป PHP และ Ruby)
กระบวนการรวม WebSockets อาจแตกต่างกันไปในแต่ละ Application แต่สำหรับการตั้งค่าฝั่ง Server Ruk-Com PaaS ได้จัดเตรียมตัวอย่างการกำหนดค่าสำหรับแต่ละ Node ที่กล่าวถึงข้างต้น ดังนั้นคุณสามารถ uncomment และแก้ไขเล็กน้อยตามข้อกำหนดของ Application คุณ (เช่น หมายเลข listening port)
การสร้าง Environment และการ Deploy Application
1. คลิกปุ่มEnvironment ใหม่ด้านบนซ้ายของ Dashboard

2. ภายในหน้าต่าง Environment Wizard ที่ปรากฏขึ้นให้สลับไปที่แท็บภาษาและเลือก Application Server ที่คุณต้องการ (ยกตัวอย่าง Application Apache PHP) จากนั้นเลื่อน cloudlets เพื่อกำหนดจำนวน Resource ตั้งชื่อ environment ของคุณแล้วคลิกสร้าง
3. ภายในไม่กี่นาที environment ของคุณจะปรากฏในหน้า Dashboard
4. อัปโหลดและ deploy Application ของคุณที่ Deployment Manager หรือผ่านที่จัดเก็บระยะไกล GIT/SVN (คุณสามารถดูคำแนะนำเพิ่มเติมได้ที่คู่มือ deployment)
โปรเจกต์ที่คุณ deploy แล้วจะแสดงรายการในส่วนด้านล่างของแผงควบคุม environment
การกำหนดค่า Server และ Application
WebSockets ภายใน Apache server รองรับโมดูลproxy_wstunnel_moduleซึ่งถูกเพิ่มโดยค่าเริ่มต้นเมื่อสร้าง Server สำหรับ NGINX server นั้นจะใช้ความสามารถของการฝัง proxy ซึ่งการเชื่อมต่อ WebSockets คล้ายกับวิธีที่ NGINX-balancer ทำ ดังนั้นมาเริ่มต้นกำหนดค่า Application ของคุณตามขั้นตอนนี้
1. คลิกปุ่มการกำหนดค่าถัดจาก Node แอป Server ของคุณ
2. ในแท็บเครื่องมือจัดการการกำหนดค่าทำตามขั้นตอนดังนี้:
- สำหรับServer แอป Apache
เข้าไปที่ Directoryการประชุมแล้วหาไฟล์httpd.confยกเลิกคอมเมนต์คำสั่งด้านล่างนี้ (ประมาณบรรทัดที่ 962)
<Location /ws>
ProxyPass ws://127.0.0.1:<PORT>
ProxyPassReverse ws://127.0.0.1:<PORT>
</Location>
จากนั้นเปลี่ยน Parameter ทั้งสองเป็นหมายเลข Port ที่ Application WebSockets ของคุณ listen (เช่น 9000)
ตรวจสอบให้แน่ใจว่าคุณได้กำหนดค่าเหมือนกับรูปภาพนี้
กดปุ่มบันทึกด้านบนเพื่อบันทึก
- สำหรับ NGINX app server
เข้าไปที่ Directoryการประชุมเลือกไฟล์NGINX.confแล้วค้นหา#WebSocketและยกเลิกคอมเมนต์คำสั่งต่อไปนี้:
upstream websocket {
server 127.0.0.1:<PORT>;
}
…
location /ws {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
จากนั้นแทนที่ค่า<Port>ด้วยหมายเลข Port ที่เกี่ยวข้องและกดปุ่มบันทึก
3. ทั้งหมดนี้คือการกำหนดค่า Server ที่คุณต้องทำ จากนั้นกำหนดค่า Application ที่คุณ deploy โดยเข้าไปที่ไฟล์การกำหนดค่าของ Application คุณเพื่อตั้งค่า WebSockets และปรับ ws path ที่มีอยู่ในไฟล์ตามรูปแบบถัดไป:
ws://{env_domain}{path_to_ws_file}
โดยที่
- {env_URL}แทนที่ด้วย Domain ของ environment คุณ (สามารถดูได้ที่ใต้ชื่อ environment ที่ Dashboard)
- {path_to_ws_file}จำเป็นต้องเปลี่ยนเส้นทางไปยังไฟล์ซึ่งควรเข้าถึงได้เมื่อสร้างการเชื่อมต่อ WebSockets
4.บันทึกและRestartApplication Server ของคุณ
5. หลังจาก Restart เสร็จแล้วคลิกปุ่มเปิดใน Browserเพื่อเรียกใช้ Application ของคุณในแท็บ Browser ใหม่
6. คุณจะเห็นว่า Application ทำงานได้แล้ว
คุณจะได้รับประโยชน์จากการถ่ายโอนข้อความที่รวดเร็วอย่างเห็นได้ชัดจากการใช้ WebSockets Protocol
