প্রকী ওয়েবস্কটে অ্যাপাচি 2 কনফিগার করছেন?


40

ওয়েবস্কট প্রোটোকলটি এইচটিটিপি প্রোটোকলের একটি এক্সটেনশন। যাইহোক, অ্যাপাচি 2 এর প্রক্সি মডিউলটি এটি সম্পর্কে জানতে পারে বলে মনে হয় না এবং কলটিকে একটি স্ট্যান্ডার্ড এইচটিটিপি কলটিতে রূপান্তর করে, গুরুত্বপূর্ণ শিরোনামকে ছুঁড়ে ফেলে।

অ্যাপাচি 2 কে কীভাবে একটি উপায় আছে (1) ওয়েবস্কট বোঝে বা (2) যা কিছু পায় তা অন্ধভাবেই পেরিয়ে যায়?

উত্তর:


23

অ্যাপাচি ট্রাঙ্কে এখন Mod_proxy_wstunnel নামে একটি মডিউল রয়েছে যা Mod_proxy (প্রক্সিপাশ / প্রক্সিপাস রিভার্স) কে ওয়েবস্কট ট্র্যাফিকের মধ্য দিয়ে যেতে দেয়। কেউ অ্যাপাচি ২.৪ / ২.২-তে মোড_প্রক্সি_উস্টুনেল ব্যাক-পোর্টিং সম্পর্কে একটি ব্লগ পোস্ট লিখেছিল এবং এটি করার জন্য একটি প্যাচ সরবরাহ করেছে।

আমি উবুন্টুতে Mod_proxy_wstunnel সেট আপ করার জন্য কংক্রিট নির্দেশাবলী খুঁজে পেয়েছি (উবুন্টু সার্ভার ১১.১০ এবং অ্যাপাচি ২.২.২০ দিয়ে পরীক্ষিত) এবং সেগুলি আমার ব্লগে পোস্ট করেছি। আমি তাদের নীচে অনুলিপি করেছি:

# Check apache version (should be 2.2.20 as of writing, if not adjust the next step)
dpkg -s apache2

# Checkout apache source
svn checkout http://svn.apache.org/repos/asf/httpd/httpd/tags/2.2.20/ httpd-2.2.20

# Get patch and apply it
wget http://cafarelli.fr/gentoo/apache-2.2.24-wstunnel.patch
cd httpd-2.2.20
patch -p1 < ../apache-2.2.24-wstunnel.patch

# Build Apache 
svn co http://svn.apache.org/repos/asf/apr/apr/branches/1.4.x srclib/apr
svn co http://svn.apache.org/repos/asf/apr/apr-util/branches/1.3.x srclib/apr-util
./buildconf
./configure --enable-proxy=shared --enable-proxy_wstunnel=shared
make

# Copy the module and recompiled mod_proxy (for new symbols) to the ubuntu apache installation and update the permissions to match the other modules
sudo cp modules/proxy/.libs/mod_proxy{_wstunnel,}.so /usr/lib/apache2/modules/
sudo chmod 644 /usr/lib/apache2/modules/mod_proxy{_wstunnel,}.so
echo -e "# Depends: proxy\nLoadModule proxy_wstunnel_module /usr/lib/apache2/modules/mod_proxy_wstunnel.so" | sudo tee -a /etc/apache2/mods-available/proxy_wstunnel.load

# Enable the module (also make any configuration changes you need)
sudo a2enmod proxy_wstunnel
sudo service apache2 restart

2
আমি যখন আপনার গাইড অনুসরণ করেছি, তখন একটি পদক্ষেপ ছিল যা আপনার ছিল না। এপ্রি চেকআউটগুলি ./buildconfigকরার পরে কনফিগার ফাইল তৈরি করতে আমাকে দৌড়াতে হয়েছিল। এবং একটি দম্পতি নির্ভরতা ছিল যা এটি আমাকে ইনস্টল করতে বলেছিল।
notbad.jpeg

এটি কি গ্লাসফিশ 4 এর ওপরে ডাব্লুএসএস এর সাথে জড়িত: (এসএসএল)
আর্কিমিডিস ট্রাজানো

1
@ notbad.jpeg: আপনি সম্ভবত গড় ./buildconf (./buildconfig নয়) :-)
এরিক Forsberg

1
কেবল আমার প্রতিক্রিয়া ... এটি উবুন্টু 12.04 থেকে অ্যাপাচে 2.2.22-1ubuntu1.10 এ ইনস্টল এবং লোড হয়েছে, তবে শেষ পর্যন্ত এটি আমার পক্ষে কার্যকর হয়নি। প্রক্সিটি "আপগ্রেড" শিরোলেখ অপসারণ করছে (উত্স কোডটি "আরএফসি 2616 13.5.1 বলছে আমাদের এই শিরোলেখগুলি ছাঁটাই করা উচিত"), যা সার্ভারটি কেবল একটি হপ নয়, এটি প্রত্যাশা করে, তাই এটি আমার পক্ষে কার্যকর হয়নি, এবং আমি এর পরিবর্তে এটি একটি iptables DNAT নিয়মের সাথে প্রতিস্থাপন করেছি।
পিটার

11

নেই ইঙ্গিত কিছুই এ্যাপাচি httpd 'র যে কোন সময় শীঘ্রই তাদের সমর্থন করবে।

আপনার যদি অবশ্যই অ্যাপাচের মাধ্যমে ওয়েবসকেট চালাতে চান তবে mod_pywebsket ব্যবহার করে দেখুন । আমি এটি চেষ্টা করেছি, এবং এটি কাজ করে।

আমি পছন্দ করি এমন কয়েকটি বিকল্প এখানে রয়েছে:



3

দয়া করে http://github.com/disconnect/apache-websket এ একবার দেখুন

অ্যাপাচি-ওয়েবসকেট মডিউলটি অ্যাপাচি ২ এক্স সার্ভার মডিউল যা অ্যাপাচি ২ এক্স সার্ভার দ্বারা ওয়েবসকেট প্রোটোকল ব্যবহার করে অনুরোধগুলি প্রক্রিয়া করতে ব্যবহৃত হতে পারে।


আমি উপরের গিথুব প্রকল্পের দিকে তাকালাম। এটি প্রক্সি হিসাবে কাজ করে না। উদ্ধৃতিThe module consists of a plugin architecture ...
গেটলি

1

এই অ্যাড এর @Andrew মস কিভাবে সঠিকভাবে কনফিগার করতে হিসাবে 'উত্তর VirtualHostsocket.io 1.0 এর সাথে কাজ করা! CentOS সম্পর্কে অংশ বাম নির্দ্বিধায়!


আপনি CentOS 6 এ আটকে থাকলে এটি কীভাবে করবেন তা এখানে:

  1. mod_proxy_wstunnelমডিউলটির জন্য ব্যাকপোর্টেড উত্সটি এখানে ডাউনলোড করুন (হয় জিস্ট ক্লোন করুন বা পৃথকভাবে ফাইলগুলি ডাউনলোড করুন)
  2. নির্মাণের জন্য প্রয়োজনীয় সমস্ত কিছু ইনস্টল করুন: yum install make gcc httpd-devel
  3. একটি আরপিএম বিল্ড এনভায়রনমেন্ট সেটআপ করুন (মূলত একটি অনিবদ্ধ ব্যবহারকারী এবং কিছু ডিরেক্টরি)
  4. অনুলিপি .cমধ্যে -file SOURCESপরিবেশের subfolder এবং .specমধ্যে -file SPECSsubfolder।
  5. চালান rpmbuild -ba mod_proxy_wstunnel.spec
  6. প্যাকেজটি এখন SRPMSসাবফোল্ডারে রয়েছে
  7. প্যাকেজ ইনস্টল করুন: rpm -i /path/to/package.rpm
  8. মুনাফা

এটি অ্যাপাচে মডিউলটি স্বয়ংক্রিয়ভাবে লোড করবে, সুতরাং আপনাকে এটির সাথে পুনরায় আরম্ভ করতে হবে service httpd restart


সেট আপ হচ্ছে একটি VirtualHostআসলে সেবা করার Socket.io সার্ভার এবং ক্লায়েন্ট-স্ক্রিপ্ট (যা ডিফল্ট প্রাপ্তিসাধ্য অধীনে হয় http://your.server/socket.io/socket.io.js) একটি বিট আরো একটি কারণে এ্যাপাচি 2.2 উপর জটিল মধ্যে Bug 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 দীর্ঘ পোলিং জন্য অনুরোধ এবং ক্লায়েন্ট-লাইব্রেরির জন্য অনুরোধ (যা একটি ফলব্যাক প্রক্রিয়া যখন ওয়েবসকেট পাওয়া যায় না হয়) ব্যতীত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.