यह जोड़ने के लिए @Andrew मॉस 'के उत्तर के रूप में कैसे सही ढंग VirtualHost
से socket.io 1.0 के साथ काम करने के लिए कॉन्फ़िगर करने के लिए है! CentOS के बारे में भाग को छोड़ने के लिए स्वतंत्र महसूस करें!
यदि आप CentOS 6 पर अटक गए हैं, तो यह कैसे करना है:
- यहां
mod_proxy_wstunnel
मॉड्यूल के लिए बैकपोर्टेड स्रोत डाउनलोड करें (या तो जियोस्ट क्लोन करें या व्यक्तिगत रूप से फाइलें डाउनलोड करें)
- बनाने के लिए आवश्यक सब कुछ स्थापित करें:
yum install make gcc httpd-devel
- सेटअप एक RPM बिल्ड पर्यावरण (मूल रूप से एक आम उपयोगकर्ता और कुछ निर्देशिका)
- कॉपी
.c
में -file SOURCES
पर्यावरण के सबफ़ोल्डर और .spec
में -file SPECS
सबफ़ोल्डर।
- रन
rpmbuild -ba mod_proxy_wstunnel.spec
- पैकेज अब
SRPMS
सबफ़ोल्डर में है
- पैकेज स्थापित करें:
rpm -i /path/to/package.rpm
- फायदा
यह स्वचालित रूप से अपाचे में मॉड्यूल को लोड करेगा, इसलिए आपको बस इसके साथ पुनरारंभ करना होगा service httpd restart
।
की स्थापना एक VirtualHost
वास्तव में सेवा करने के लिए Socket.io सर्वर और ग्राहक-स्क्रिप्ट (जो डिफ़ॉल्ट उपलब्ध के तहत कर रहा है http://your.server/socket.io/socket.io.js
) में थोड़ा और अधिक एक की वजह से, अपाचे 2.2 पर जटिल है में बग mod_proxy
मॉड्यूल :
निम्नलिखित लिखित नियम को देखते हुए:
RewriteRule ^/ws(.*)$ ws://localhost:9000/ws [P]
mod_rewrite
यह एक फ़ाइलपथ मानता है ताकि प्रवेश लॉग दिखाता है:
[26/Sep/2013:09:46:07 -0400] "GET /ws://localhost:9000/ws HTTP/1.1" 400 317
इसलिए, आप पुनःप्रयोग-नियम में -प्रोटोकॉल का उपयोग नहींws
कर सकते , क्योंकि यह आंतरिक रूप से HTTP GET अनुरोध में बदल जाएगा।
हालांकि एक समाधान है:
<VirtualHost *:80>
ServerName your.server
# Proxy socket.io Websocket
RewriteEngine On
# socket.io 1.0+ starts all connections with an HTTP polling request
RewriteCond %{QUERY_STRING} transport=polling [NC]
RewriteRule /(.*) http://localhost:8081/$1 [P]
ProxyRequests Off
# Explicitly send the request for the client-script to HTTP:
ProxyPass /socket.io/socket.io.js http://localhost:8081/socket.io/socket.io.js
ProxyPassReverse /socket.io/socket.io.js http://localhost:8081/socket.io/socket.io.js
# Anything else goes to the WebSocket protocol:
ProxyPass /socket.io/ ws://localhost:8081/socket.io/
ProxyPassReverse /socket.io/ ws://localhost:8081/socket.io/
# Any additional stuff (the actual site) comes here
ProxyPass / http://localhost:8081/
ProxyPassReverse / http://localhost:8081/
</VirtualHost>
यह सुनिश्चित करता है कि लंबे समय से मतदान के लिए अनुरोध (जो /socket.io
कि ws://
वेबस्कॉफ़्ट उपलब्ध नहीं होने पर एक फॉलबैक तंत्र है) और क्लाइंट-लाइब्रेरी के लिए अनुरोध को छोड़कर, सभी चीजें -protocol में जाती हैं।
./buildconfig
कॉन्फ़िगर फाइल बनाने के लिए दौड़ना पड़ा । और कुछ निर्भरताएं थीं जो मुझे स्थापित करने के लिए कहती थीं।