2015-12-23 19 views
7

im अपाचे के साथ proxyng स्थापित करने के लिए कोशिश कर रहा है मेरी NodeJS आवेदन में socket.io उपयोग करने के लिए सक्षम होने के लिए। लेकिन मैं ग्राहक पक्ष पर यह त्रुटि संदेश प्राप्त:Socket.io अपाचे प्रॉक्सी के साथ

WebSocket connection to 'wss://example.com/tools/socket.io/?EIO=3&transport=websocket&sid=eOGwJSC14TTWhHRMAAAR' failed: Error during WebSocket handshake: Unexpected response code: 400 

यहाँ मेरा अपाचे विन्यास:

socket = io.connect("https://example.com",{path:'/tools/socket.io'}); 
socket.on("connect", function() { 
    console.log("socketio Connected to server!"); 
}); 

और क्या मैं जोड़ने की जरूरत:

 <VirtualHost *:443> 
      ServerName example.com 
      ServerAlias example.com 
      #SSLRequireSSL 
      SSLProtocol all -SSLv2 -SSLv3 
      SSLCompression off 
      SSLHonorCipherOrder on 
      SSLEngine on 
      SSLCertificateFile /etc/ssl/main.pem 
      SSLCertificateKeyFile /etc/ssl/dec_ssl.key 
      SSLCertificateChainFile /etc/ssl/sub.class1.server.ca.pem 
      SSLCACertificateFile /etc/ssl/main.pem 
      SSLProxyEngine On 

      ProxyPreserveHost On 
      ProxyRequests off 
    </VirtualHost> 

    <Location /tools/> 
      ProxyPass http://localhost:8181/ 
      ProxyPassReverse http://localhost:8181/ 
    </Location> 

और यहाँ क्लाइंट साइड कोड है इस त्रुटि से छुटकारा पाने के लिए विन्यास कॉन्फ़िगर करने के लिए?

संपादित करें: मेरी अपाचे संस्करण: सर्वर संस्करण: अपाचे/2.4.6 (CentOS)

+0

आप सुनिश्चित करें कि आपके socket.io सर्वर 8181 पर सुन रहा है कर रहे हैं? क्या आप इसे सीधे मार सकते हैं? –

+0

क्या आपने अपना अपाचे त्रुटि लॉग देखा है? – jcaron

+0

@ M.Babcock, हाँ, सर्वर 8181. इम पर चल रहा है यूआरएल से socket.io.js प्राप्त करने में सक्षम: https://example.com/tools/socket.io/socket.io.js – hs2d

उत्तर

4

मैं इस सफलतापूर्वक अपाचे 2.4.16 के साथ इस्तेमाल किया है, पुराने संस्करणों ठीक से काम नहीं कर सकते हैं।

<VirtualHost *:443> 
     ServerName example.com 
     ServerAlias example.com 
     #SSLRequireSSL 
     SSLProtocol all -SSLv2 -SSLv3 
     SSLCompression off 
     SSLHonorCipherOrder on 
     SSLEngine on 
     SSLCertificateFile /etc/ssl/main.pem 
     SSLCertificateKeyFile /etc/ssl/dec_ssl.key 
     SSLCertificateChainFile /etc/ssl/sub.class1.server.ca.pem 
     SSLCACertificateFile /etc/ssl/main.pem 
     SSLProxyEngine On 

     ProxyPreserveHost On 
     ProxyRequests off 
</VirtualHost> 

<Location /tools/> 
     RewriteEngine On 
     RewriteCond %{REQUEST_URI} ^/tools/socket.io   [NC] 
     RewriteCond %{QUERY_STRING} transport=websocket [NC] 
     RewriteRule "^/tools/socket.io"   "ws://localhost:8181/socket.io/" [P,L] 

     ProxyPass http://localhost:8181/ 
     ProxyPassReverse http://localhost:8181/ 
</Location> 

प्रॉक्सीपास वेबस्केट अपग्रेड को संभाल नहीं पाएगा। तो, क्या आप क्या करना चाहते ws को उन अनुरोधों पुनर्निर्देशित है: //

मैं सामान्य रूप में लगता है कि आप इस संभाल करने के लिए स्थान का उपयोग नहीं किया जाना चाहिए, लेकिन इस config आप के लिए काम करना चाहिए।

+0

क्या आप यह इंगित कर सकते हैं कि मुझे इन लाइनों को मेरी अपाचे कॉन्फ़िगरेशन में कहां रखा जाना चाहिए और यदि मैं आपके कॉन्फ़िगरेशन के साथ अपडेट किया गया है तो '/' – hs2d

+0

के बजाय '/ tools /' का उपयोग कर रहा हूं। पढ़ें स्थान पर अपाचे डॉक्स, कि आपके config के लिए सबसे अच्छा तरीका नहीं हो सकता है, लेकिन अधिक जानने के बिना, मुझे यकीन है के लिए नहीं कह सकता। – Gary

+0

इसने मेरे लिए कुछ भी नहीं बदला। अभी भी मूल पोस्ट में एक ही त्रुटि हो रही है। – hs2d

संबंधित मुद्दे