সকেট.আইও 1.0 এর জন্য অ্যাপাচি 2.4 মোড_প্রক্সি_ওয়াস্টুনেল কনফিগার করছে


15

আমি mod_proxy_wstunnel ব্যবহার করে একটি নোড.জেএস ওয়েবসকেট সার্ভারে সকেট.ইওয়ের জন্য ওয়েবসকেট সংযোগটি প্রক্সি করার জন্য অ্যাপাচি ২.৪ কনফিগার করার চেষ্টা করছি। আমাদের সকেট.ইও 0.9 দিয়ে এই কাজটি দুর্দান্ত ছিল, তবে 1.0 টি মুক্তির সাথে সাথে তারা সকেটের শেষ অবস্থানটিকে একটি ক্যোয়ারি প্যারামিটারে পরিবর্তন করেছে এবং এখন সঠিক প্রক্সি নির্দেশাবলীর সাথে অ্যাপাচি কনফিগার করতে আমার সমস্যা হচ্ছে।

সমস্ত অনুরোধে /socket.io/?EIO=N&transport=websocket(যেখানে এন কোনও সংখ্যার, সাধারণত ২) এ ফরোয়ার্ড করা দরকার ws://localhost:8082/socket.io/, তবে অন্য সমস্ত অনুরোধগুলিতে ফরোয়ার্ড করা দরকার http://localhost:8082/socket.io/

আমি নিম্নলিখিত দুটি কনফিগারেশনের বিভিন্নতার চেষ্টা করেছি:

ProxyPass /socket.io/?EIO=2&transport=websocket http://localhost:8082/socket.io/?EIO=2&transport=websocket
ProxyPassReverse /socket.io/?EIO=2&transport=websocket http://localhost:8082/socket.io/?EIO=2&transport=websocket

ProxyPass /socket.io/ http://localhost:8082/socket.io/
ProxyPassReverse /socket.io/ http://localhost:8082/socket.io/

RewriteRule /socket.io/?EIO=([0-9]+)&transport=websocket ws://localhost:8082/socket.io/ [QSA,P]

ProxyPass /socket.io/ http://localhost:8082/socket.io/
ProxyPassReverse /socket.io/ http://localhost:8082/socket.io/

আমি আমার গুগলিং থেকে সংগ্রহ করেছি যে প্রক্সিপাস এবং অবস্থানগুলি কোয়েরি স্ট্রিংগুলিকে লক্ষ্য করতে পারে না, তাই এখানে অন্য কোনও বিকল্প আছে কি? পাথগুলি সকেট.ওয়েতে কঠোরভাবে কোডড করা হয়েছে, তাই পুরো লাইব্রেরিটি কাঁটাচামচ করার কারণে আমি সেগুলি পরিবর্তন করতে পারি না।

উত্তর:


39

এই বিশেষ ক্ষেত্রেটির সাথে মেলে পুনরায় লেখার শর্তগুলি ব্যবহার করুন:

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/socket.io            [NC]
RewriteCond %{QUERY_STRING} transport=websocket    [NC]
RewriteRule /(.*)           ws://localhost:8082/$1 [P,L]

ProxyPass        /socket.io http://localhost:8082/socket.io
ProxyPassReverse /socket.io http://localhost:8082/socket.io

নোট হিসাবে মার্ক ডাব্লু নীচে উল্লিখিত। এগুলি অবশ্যই ভোস্ট স্তরে প্রবেশ করতে হবে এবং সার্ভার বা .htaccess স্তরে নয়।

আপনি একজন ভারসাম্যকারীকেও উল্লেখ করতে পারেন:

<Proxy balancer://http-localhost/>
    BalancerMember http://localhost:8082 keepalive=On smax=1 connectiontimeout=10 retry=600 timeout=900 ttl=900
    BalancerMember http://localhost:8083 keepalive=On smax=1 connectiontimeout=10 retry=600 timeout=900 ttl=900
    ProxySet lbmethod=bytraffic
</Proxy>

<Proxy balancer://ws-localhost/>
    BalancerMember ws://localhost:8082 keepalive=On smax=1 connectiontimeout=10 retry=600 timeout=900 ttl=900
    BalancerMember ws://localhost:8083 keepalive=On smax=1 connectiontimeout=10 retry=600 timeout=900 ttl=900
    ProxySet lbmethod=bytraffic
</Proxy>

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/socket.io                [NC]
RewriteCond %{QUERY_STRING} transport=websocket        [NC]
RewriteRule /(.*)           balancer://ws-localhost/$1 [P,L]

ProxyPass        /socket.io balancer://http-localhost/socket.io
ProxyPassReverse /socket.io balancer://http-localhost/socket.io

+100000 আপনি আমার দিন তৈরি করেছেন। এই জন্য কয়েক ঘন্টা ছিল। আমি প্রথম কোড স্নিপেট ব্যবহার করেছি। এই মুহুর্তে আমার ব্যালান্সারের দরকার নেই।
ইওমর

আমি এটি কাজ করতে সক্ষম নই। অ্যাপাচি 404 কোড দিয়ে সাড়া দেয়। এটি অ্যাক্সেস লগটিতে দেখা যাচ্ছে যেন এটি কোনও সাধারণ ফাইল লোড করার চেষ্টা করছে এবং সকেট নোড প্রক্রিয়াটি অনুরোধটি পাওয়ার কোনও চিহ্ন দেখায় না (এটি সকেট.আইও.জেএস ফাইলের জন্য কল দেখায়)
চিপারসফট

1
এটি প্রদর্শিত হয় যে মোড_উইরাইট ws: // প্রোটোকলটি জানেন না know আমি এটি আমার পুনর্লিখনের লগে দেখতে পাচ্ছি: forcing proxy-throughput with http://[REDACTED].dev/ws://localhost:8082/socket.io/(ডোমেন.দেব
চিপারসফট

সম্ভবত এ কারণেই: ইস্যু.এপাচি.অর্গ / বুগজিলা / শো_বগ.সি ??id=55598 মনে হচ্ছে প্রোটোকলের জন্য সমর্থন অ্যাপাচি 2.5 তে যুক্ত করা হয়েছিল
চিপারসফট

5
দ্রষ্টব্য : আপনি যদি নথির মূল ব্যবহার করে নাও (যেমন, ) <VirtualHost>বর্ণিত সঠিক ক্রমে এই ব্লকগুলি অবশ্যই ব্লকের মধ্যে স্থাপন করা উচিত । এই পরিবর্তনগুলি কেন সঠিকভাবে কাজ করছে না তা জানার জন্য আমি প্রায় 2 ঘন্টা সময় ব্যয় করেছি, কেবল এটি অনুসন্ধান করতে যে এর মূল স্তরে কাজ করছে না (যদিও এটি কাজ করছিল)। নির্দেশনা কাজ করে না ব্লক বা ফাইল (যদিও তাই যৌক্তিক জায়গা গ্রুপ এই পরিবর্তনগুলি মধ্যে জন্য 'গুলি না), । /var/www/htmlRewriteRulehttpd.confProxyPassProxyPass<Directory>.htaccessRewriteRule<VirtualHost>
মার্ক ডব্লিউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.