दिलचस्प पोस्ट
मैं जावा में स्विंगवॉकर का उपयोग कैसे करूं? PHP का उपयोग करके सीएसआरएफ टोकन को ठीक से कैसे जोड़ सकते हैं पाठ क्षेत्र में नई पंक्ति यूडीपी ब्रॉडकास्ट भेजना, एकाधिक संदेश प्राप्त करना बीओएम बिना यूटीएफ -8 पायथन मल्टीप्रोसेसिंग ग्लोबल वेरिएबल अपडेट नहीं लौटे हैं रनटाइम पर कस्टम फ़ाइल में प्रवेश करने के लिए log4j कॉन्फ़िगर करें जावास्क्रिप्ट की आवश्यकता होती है () फ़ंक्शन को संदर्भ दें त्रुटि: आवश्यकता परिभाषित नहीं होती है जांच कैसे करें कि छवि दिए गए url के साथ मौजूद है? कंसोल में पाठ प्रगति पट्टी "ढीले युग्मन" क्या है? कृपया उदाहरण दें PHP में स्थैतिक तरीकों की जड़ें? एनिमेशन CSS3: प्रदर्शन + अस्पष्टता GUID / UUID डेटाबेस कुंजियों के फायदे और नुकसान सभी विशेषताओं को निकालें

WebSockets और अपाचे प्रॉक्सी: mod_proxy_wstunnel को कॉन्फ़िगर कैसे करें?

मेरे पास है :

  1. Www.domain1.com के लिए अपने सर्वर के पोर्ट 80 पर Apache (v2.4), mod_proxy और mod_proxy_wstunnel के साथ सक्षम

  2. node.js + socket.io उसी सर्वर के पोर्ट 3001 पर।

Www.domain2.com तक पहुंच (पोर्ट 80 के साथ) रीडायरेक्ट 2। यहां वर्णित विधि के लिए धन्यवाद। मैंने इसे अपाचे कॉन्फ़िगरेशन में सेट किया है:

 <VirtualHost *:80> ServerName www.domain2.com ProxyPass / http://localhost:3001/ ProxyPassReverse / http://localhost:3001/ ProxyPass / ws://localhost:3001/ ProxyPassReverse / ws://localhost:3001/ </VirtualHost> 

यह सबकुछ के लिए काम करता है, websocket भाग को छोड़कर: ws://... प्रॉक्सी द्वारा इसे संचरित नहीं करना चाहिए।

जब मैं www.domain2.com पर पृष्ठ का उपयोग करता हूं, तो मेरे पास:

 Impossible to connect ws://www.domain2.com/socket.io/?EIO=3&transport=websocket&sid=n30rqg9AEqZIk5c9AABN. 

प्रश्न: अपाचे प्रॉक्सी वेबसाकेट को भी कैसे बनाऊं?

वेब के समाधान से एकत्रित समाधान "WebSockets और अपाचे प्रॉक्सी: mod_proxy_wstunnel को कॉन्फ़िगर कैसे करें?"

आखिरकार मैं इसे करने में कामयाब रहा, इस विषय के लिए धन्यवाद

करने के लिए:

1) अपाचे 2.4 स्थापित है (2.2 के साथ काम नहीं करता है), और करें:

 a2enmod proxy a2enmod proxy_wstunnel 

2) पोर्ट 3001 पर चलने वाले nodejs

3) अपाचे कॉन्फ़िग में यह करें

 <VirtualHost *:80> ServerName www.domain2.com RewriteEngine On RewriteCond %{REQUEST_URI} ^/socket.io [NC] RewriteCond %{QUERY_STRING} transport=websocket [NC] RewriteRule /(.*) ws://localhost:3001/$1 [P,L] ProxyPass / http://localhost:3001/ ProxyPassReverse / http://localhost:3001/ </VirtualHost> 

URL द्वारा फ़िल्टर करने के बजाय, आप HTTP शीर्षलेख द्वारा फ़िल्टर भी कर सकते हैं। यह कॉन्फ़िगरेशन किसी भी वेब अनुप्रयोगों के लिए काम करेगा जो वेबसाईट का उपयोग करते हैं, भले ही वे socket.io का उपयोग न करें:

 <VirtualHost *:80> ServerName www.domain2.com RewriteEngine On RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteRule /(.*) ws://localhost:3001/$1 [P,L] RewriteCond %{HTTP:Upgrade} !=websocket [NC] RewriteRule /(.*) http://localhost:3001/$1 [P,L] ProxyPassReverse / http://localhost:3001/ </VirtualHost> 

मई उपयोगी हो सकता है बस सभी प्रश्नों को नोड के माध्यम से भेजते हैं

 <VirtualHost *:80> ServerName www.domain2.com <Location "/"> ProxyPass "ws://localhost:3001/" </Location> </VirtualHost> 

मेरा सेटअप:

अपाचे 2.4.10 (डेबियन बंद हो रहा है) नोडजेएस (संस्करण 4.1.1) पोर्ट 3000 पर चल रहा है जो पथ / एपीआई / वाईएस पर वेबसाकेट स्वीकार करता है

जैसा कि @ बासज द्वारा ऊपर वर्णित है, सुनिश्चित करें कि a2enmod प्रॉक्सी और ws_tunnel सक्षम हैं

यह अपाचे कॉन्फ़ फ़ाइल का एक screengrab है जो मेरी समस्या का समाधान करता है:

यहां छवि विवरण दर्ज करें

उम्मीद है की वो मदद करदे।

सॉकेट.आईओ 1.0 (मई 2014) के अनुसार, सभी कनेक्शन एक HTTP मतदान अनुरोध से शुरू होते हैं (अधिक जानकारी यहां )। इसका मतलब है कि वेबसॉकेट ट्रैफ़िक अग्रेषण के अलावा, आपको किसी भी transport=polling HTTP अनुरोधों को अग्रेषित करना होगा।

किसी भी अन्य ट्रैफ़िक को रीडायरेक्ट किए बिना नीचे दिए गए समाधान, सभी सॉकेट ट्रैफिक को ठीक से रीडायरेक्ट करना चाहिए।

  1. निम्न अपाचे 2 मोड सक्षम करें:

     sudo a2enmod proxy rewrite proxy_http proxy_wstunnel 
  2. अपनी सेटिंग्स * .conf फ़ाइल में (उदाहरण के लिए /etc/apache2/sites-available/mysite.com.conf ) का प्रयोग करें। मैंने प्रत्येक टुकड़े की व्याख्या करने के लिए टिप्पणियां शामिल की हैं:

     <VirtualHost *:80> ServerName www.mydomain.com # Enable the rewrite engine # Requires: sudo a2enmod proxy rewrite proxy_http proxy_wstunnel # In the rules/conds, [NC] means case-insensitve, [P] means proxy RewriteEngine On # socket.io 1.0+ starts all connections with an HTTP polling request RewriteCond %{QUERY_STRING} transport=polling [NC] RewriteRule /(.*) http://localhost:3001/$1 [P] # When socket.io wants to initiate a WebSocket connection, it sends an # "upgrade: websocket" request that should be transferred to ws:// RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteRule /(.*) ws://localhost:3001/$1 [P] # OPTIONAL: Route all HTTP traffic at /node to port 3001 ProxyRequests Off ProxyPass /node http://localhost:3001 ProxyPassReverse /node http://localhost:3001 </VirtualHost> 
  3. मैंने रूटिंग /node यातायात के लिए एक अतिरिक्त अनुभाग शामिल किया है जो मुझे आसान लगता है, यहां अधिक जानकारी के लिए देखें।

इन उत्तरों से मदद के साथ, मुझे आखिरकार नोड-रेड के लिए रिवर्स प्रॉक्सी मिल गया, जो कि अपाचे 2 साइट कॉन्फ़िग का उपयोग कर उबंटू मेट और अपाचे 2 के साथ रास्पबेरी पीआई पर चल रहा है:

 <VirtualHost *:80> ServerName nodered.domain.com RewriteEngine On RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteRule /(.*) ws://localhost:1880/$1 [P,L] RewriteCond %{HTTP:Upgrade} !=websocket [NC] RewriteRule /(.*) http://localhost:1880/$1 [P,L] </VirtualHost> 

मुझे इस तरह मॉड्यूल को सक्षम करना भी था:

 sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod proxy_wstunnel 

"पोलिंग" परिवहन के लिए

अपाचे पक्ष:

 <VirtualHost *:80> ServerName mysite.com DocumentRoot /my/path ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /my-connect-3001 http://127.0.0.1:3001/socket.io ProxyPassReverse /my-connect-3001 http://127.0.0.1:3001/socket.io </VirtualHost> 

ग्राहक की ओर:

 var my_socket = new io.Manager(null, { host: 'mysite.com', path: '/my-connect-3001' transports: ['polling'], }).socket('/'); 

प्रयोक्ता इस लिंक के लिए perfact समाधान के लिए https://httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html

आपको बस नीचे कदम करना होगा ..

/ Etc / apache2 / mods-available पर मिल गया

चरण 1

निम्न आदेश का उपयोग कर मोड proxy_wstunnel.load सक्षम करें

$ a2enmod proxy_wstunnel.load

चरण 2

गोटो / आदि / अपाचे 2 / साइटों-उपलब्ध

और वर्चुअल होस्ट के अंदर आपके .conf फ़ाइल में नीचे पंक्ति जोड़ें

प्रॉक्सीपैस "/ ws2 /" "ws: // स्थानीयहोस्ट: 8080 /"

प्रॉक्सीपैस "/ wss2 /" "wss: // स्थानीयहोस्ट: 8080 /"

नोट: 8080 का अर्थ है कि आपका टॉमकेट चलने वाला पोर्ट क्योंकि हम "ws" से जुड़ना चाहते हैं जहां "युद्ध" के लिए हमारे युद्ध फ़ाइल को टंक्रीट और टमाटर में डाल दिया गया है। धन्यवाद

मेरा कॉन्फ़िगरेशन

ws: //localhost/ws2/ALLCAD-Unifiedcommunication-1.0/chatserver? userid = 4 = कनेक्टेड

करने के लिए:

  1. अपाचे 2.4 स्थापित है (2.2 के साथ काम नहीं करता है), a2enmod proxy और a2enmod proxy_wstunnel.load

  2. यह अपाचे कॉन्फ़िग में करें
    बस अपनी फ़ाइल में दो पंक्ति जोड़ें जहां 8080 आपका टोमैट रनिंग पोर्ट है

     <VirtualHost *:80> ProxyPass "/ws2/" "ws://localhost:8080/" ProxyPass "/wss2/" "wss://localhost:8080/" </VirtualHost *:80>