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

2. ภายในหน้าต่าง Environment Wizard ที่ปรากฏขึ้นให้สลับไปที่แท็บภาษาและเลือกแอปพลิเคชันเซิร์ฟเวอร์ที่คุณต้องการ (ยกตัวอย่างแอปพลิเคชัน Apache PHP) จากนั้นเลื่อน cloudlets เพื่อกำหนดจำนวนทรัพยากร ตั้งชื่อ environment ของคุณแล้วคลิกสร้าง
3. ภายในไม่กี่นาที environment ของคุณจะปรากฏในหน้าแดชบอร์ด
4. อัปโหลดและ deploy แอปพลิเคชันของคุณที่ Deployment Manager หรือผ่านที่จัดเก็บระยะไกล GIT/SVN (คุณสามารถดูคำแนะนำเพิ่มเติมได้ที่คู่มือ deployment)
โปรเจกต์ที่คุณ deploy แล้วจะแสดงรายการในส่วนด้านล่างของแผงควบคุม environment
การกำหนดค่าเซิร์ฟเวอร์และแอปพลิเคชัน
WebSockets ภายใน Apache server รองรับโมดูลproxy_wstunnel_moduleซึ่งถูกเพิ่มโดยค่าเริ่มต้นเมื่อสร้างเซิร์ฟเวอร์ สำหรับ NGINX server นั้นจะใช้ความสามารถของการฝัง proxy ซึ่งการเชื่อมต่อ WebSockets คล้ายกับวิธีที่ NGINX-balancer ทำ ดังนั้นมาเริ่มต้นกำหนดค่าแอปพลิเคชันของคุณตามขั้นตอนนี้
1. คลิกปุ่มการกำหนดค่าถัดจากโหนดแอปเซิร์ฟเวอร์ของคุณ
2. ในแท็บเครื่องมือจัดการการกำหนดค่าทำตามขั้นตอนดังนี้:
- สำหรับเซิร์ฟเวอร์แอป Apache
เข้าไปที่ไดเร็กทอรีการประชุมแล้วหาไฟล์httpd.confยกเลิกคอมเมนต์คำสั่งด้านล่างนี้ (ประมาณบรรทัดที่ 962)
<Location /ws>
ProxyPass ws://127.0.0.1:<PORT>
ProxyPassReverse ws://127.0.0.1:<PORT>
</Location>
จากนั้นเปลี่ยนพารามิเตอร์ทั้งสองเป็นหมายเลขพอร์ตที่แอปพลิเคชัน WebSockets ของคุณ listen (เช่น 9000)
ตรวจสอบให้แน่ใจว่าคุณได้กำหนดค่าเหมือนกับรูปภาพนี้
กดปุ่มบันทึกด้านบนเพื่อบันทึก
- สำหรับ NGINX app server
เข้าไปที่ไดเร็กทอรีการประชุมเลือกไฟล์NGINX.confแล้วค้นหา#เว็บซ็อคเก็ตและยกเลิกคอมเมนต์คำสั่งต่อไปนี้:
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";
}
จากนั้นแทนที่ค่า<พอร์ต>ด้วยหมายเลขพอร์ตที่เกี่ยวข้องและกดปุ่มบันทึก
3. ทั้งหมดนี้คือการกำหนดค่าเซิร์ฟเวอร์ที่คุณต้องทำ จากนั้นกำหนดค่าแอปพลิเคชันที่คุณ deploy โดยเข้าไปที่ไฟล์การกำหนดค่าของแอปพลิเคชันคุณเพื่อตั้งค่า WebSockets และปรับ ws path ที่มีอยู่ในไฟล์ตามรูปแบบถัดไป:
ws://{env_domain}{path_to_ws_file}
โดยที่
- {env_URL}แทนที่ด้วยโดเมนของ environment คุณ (สามารถดูได้ที่ใต้ชื่อ environment ที่แดชบอร์ด)
- {path_to_ws_file}จำเป็นต้องเปลี่ยนเส้นทางไปยังไฟล์ซึ่งควรเข้าถึงได้เมื่อสร้างการเชื่อมต่อ WebSockets
4.บันทึกและรีสตาร์ทแอปพลิเคชันเซิร์ฟเวอร์ของคุณ
5. หลังจากรีสตาร์ทเสร็จแล้วคลิกปุ่มเปิดในเบราว์เซอร์เพื่อเรียกใช้แอปพลิเคชันของคุณในแท็บเบราว์เซอร์ใหม่
6. คุณจะเห็นว่าแอปพลิเคชันทำงานได้แล้ว
คุณจะได้รับประโยชน์จากการถ่ายโอนข้อความที่รวดเร็วอย่างเห็นได้ชัดจากการใช้ WebSockets Protocol