অ্যাপাচি প্রক্সি: কোনও প্রোটোকল হ্যান্ডলার বৈধ ছিল না


192

আমি অন্য সার্ভারে একটি সাব-ডিরেক্টরিকে প্রক্সি করার চেষ্টা করছি। আমার httpd.conf:

RewriteEngine On
ProxyPreserveHost On
RewriteRule .*subdir/ https://anotherserver/subdir/ [P]

সমস্যাটি হ'ল আপাচি সর্বদা এটি লগ করে থাকে:

AH01144: No protocol handler was valid for the URL /subdir/. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule., referer: http://localhost/

ইন্টারনেট অনুসন্ধান করার পরে, আমি এই মডিউলগুলি সক্রিয় করেছি:

LoadModule headers_module modules/mod_headers.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_express_module modules/mod_proxy_express.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule rewrite_module modules/mod_rewrite.so

(আমি জানি যে এগুলির সকলের আমার দরকার নেই তবে আমি তাদের নিখোঁজ করছি না তা নিশ্চিত করার জন্য আমি কেবল তাদের সক্রিয় করেছি)

তবে এই ত্রুটিটি এখনও উপস্থিত হয় এবং ক্লায়েন্টরা একটি HTTP 500 পান get

আমি এটা কিভাবে ঠিক করবো?


প্রক্সি অনুরোধের জন্য এটির জন্য কিছু এইচটিটিপিএস হ্যান্ডলার প্রয়োজন। পরিবর্তে এইচটিটিপি চেষ্টা করুন ...
দেডোশকা

9
আমি মনে করি আপনার প্রয়োজন mod_sslএবং এর SSLProxyEngineসাথেProxyPass
ডায়ডুশকা

@ দেডুশকা হ্যাঁ, এটি কাজ করছে। আপনি যদি এটি উত্তর হিসাবে পোস্ট করেন তবে আমি এটি গ্রহণ করতে পারি
das_j

উত্তর:


420

আপনি mod_proxy_httpসক্ষম না করে থাকলে এটি ঘটতে পারে

sudo a2enmod proxy_http

আমার https ভিত্তিক লোড ব্যালেন্সারকে কাজ করার জন্য, আমাকে নিম্নলিখিতগুলি সক্ষম করতে হয়েছিল:

sudo a2enmod ssl
sudo a2enmod proxy
sudo a2enmod proxy_balancer
sudo a2enmod proxy_http

23
আমার ব্যবহারের ক্ষেত্রে আমাকে 'sudo a2enmod প্রক্সি_উস্টুনেল' করতে হয়েছিল।
জিমজেটি

8
আমার জন্য ছিল LoadModule ssl_module modules/mod_ssl.so। আমারও ব্যবহার করতে হয়েছিল SSLProxyEngine on
ক্লো

1
আমাকেও সক্ষম করতে হয়েছিলmod_slotmem_shm
সিগজিএফ

2
আমার জন্য ডাব্লুএএমপি-তে, আমি মেনুটির মাধ্যমে উপরের মডিউলগুলি ইনস্টল করেছিলাম LoadModule slotmem_shm_module modules/mod_slotmem_shm.soএবং httpd.conf-
ফ্লায়নে

1
আমার দরকার ছিল sudo a2enmod proxy_connect, যা সংযোগ ব্যবহার করে https টানেল করা
রাউল নোহিয়া গুডনেস

22

আমার অ্যাপাচি 2.4 + পিএইচপি 5-এফপিএম ইনস্টলেশন কাজ শুরু করার জন্য, আমাকে নিম্নলিখিত অ্যাপাচি মডিউলগুলি সক্রিয় করতে হবে:

sudo a2enmod proxy
sudo a2enmod proxy_fcgi

কোনও প্রয়োজন নেই proxy_httpএবং এটিই সমস্ত .phpফাইল সরাসরি পিএইচপি 5-এফএমপিতে প্রেরণ করে :

<FilesMatch \.php$>
    SetHandler "proxy:unix:/var/run/php5-fpm.sock|fcgi://localhost"
</FilesMatch>

হ্যাঁ, fcgi এর জন্য এটি সত্য, তবে আমার একটি HTTP প্রক্সি ছিল। :)
দাস_জ

10

আমার ক্ষেত্রে, আমার proxy_ajpমডিউল প্রয়োজন ।

a2enmod proxy proxy_http proxy_ajp 

8

আমার অ্যাপাচি / ২.৪.১৮ (উবুন্টু) সেটআপে এটি আমার জন্য ঘটছিল। আমার ক্ষেত্রে, আমি যে ত্রুটিটি দেখছিলাম তা হ'ল:

... AH01144: No protocol handler was valid for the URL /~socket.io/. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

এটি সম্পর্কিত কনফিগারেশনটি ছিল:

  ProxyPass /~socket.io/ ws://127.0.0.1:8090/~socket.io/
  ProxyPassReverse /~socket.io/ ws://127.0.0.1:8090/~socket.io/

" No protocol handler was valid for the URL /~socket.io/" এর অর্থ হ'ল আপাচি অনুরোধটি " ws://127.0.0.1:8090/~socket.io/" প্রেরিত হ্যান্ডেল করতে পারছে না

আমি proxy_httpবোঝা ছিল , কিন্তু প্রয়োজন proxy_wstunnel। একবার এটি সক্ষম হয়ে গেলে সমস্ত ভাল ছিল।


6

ভবিষ্যতের রেফারেন্সের জন্য স্পষ্ট করার জন্য, a2enmod, উপরের কয়েকটি উত্তরে যেমন পরামর্শ করা হয়েছে, তা দেবিয়ান / উবুন্টুর জন্য। রেড হ্যাট এটি অ্যাপাচি মডিউলগুলি সক্ষম করতে ব্যবহার করে না - পরিবর্তে এটি httpd.conf এ লোডমডুল স্টেটমেন্ট ব্যবহার করে।

আরও এখানে: https://serverfault.com

রেজোলিউশন / সঠিক উত্তরটি ওপিতে দেওয়া মন্তব্যে রয়েছে:

আমি মনে করি আপনার প্রক্সিপাশের সাথে মোড_এসএল এবং এসএসএলপ্রক্সি ইঞ্জিন দরকার - দেডুশকা মে 29 '14 এ 11:35 এ

@ দেডুশকা হ্যাঁ, এটি কাজ করছে। আপনি যদি এটি উত্তর হিসাবে পোস্ট করেন তবে আমি এটি গ্রহণ করতে পারি - das_j 29 মে '14 এ 12:04 এ


4

আমি এখানে একটি উত্তর পোস্ট করছি, যেহেতু অন্য কারণে আমার একই ত্রুটি বার্তা ছিল।

এই ত্রুটি বার্তাটি ঘটতে পারে, উদাহরণস্বরূপ, যদি আপনি প্রোটোকল বিতে টার্গেট করার জন্য প্রোটোকল এ এর ​​উত্স থেকে প্রক্সি অনুরোধগুলিতে অ্যাপাচি httpd ব্যবহার করেন if

এখানে আমার পরিস্থিতির উদাহরণ:

AH01144: কোনও প্রোটোকল হ্যান্ডলার URL / sockjs-node / তথ্য (স্কিম 'ws') এর জন্য বৈধ ছিল না।

উপরের ক্ষেত্রে, যা ঘটছিল তা কেবল নিম্নলিখিতটি ছিল। আমি পথ / সোকজেস-নোডের ভিত্তিতে নোডেজগুলিতে প্রক্সি ওয়েবসকেট অনুরোধগুলিতে মোড প্রক্সি সক্ষম করেছিলাম।

সমস্যাটি হ'ল নোড কেবলমাত্র ওয়েবসকেট অনুরোধের জন্য পাথ / সোকজেস নোড ব্যবহার করে না। এটি ওয়েলসকেট সম্পর্কিত তথ্য সরবরাহকারী আরআরটি এন্ট্রি পয়েন্টগুলি হোস্ট করার জন্যও এই পথটি ব্যবহার করে।

এই পদ্ধতিতে, যখন অ্যাপ্লিকেশনটি http: // লোকালহোস্ট: 7001 / সোকজস-নোড / তথ্য খোলার চেষ্টা করবে, অ্যাপাচি httpd এইচটিটিপি প্রোটোকল থেকে বাক্স কলটি একটি ওয়েবসকেট এন্ডপয়েন্ট কলটিতে যাওয়ার চেষ্টা করবে। নোড এটি মানেনি।

এটি উপরের ব্যতিক্রম হতে পারে।

তাই আপনি সচেতন হন যে আপনি সঠিক মডিউলগুলি সক্ষম করেও যদি আপনি ভুল ফরোয়ার্ডিং করার চেষ্টা করেন, তবে এটি অ্যাপাচি httpd দিয়ে শেষ হবে যে আপনি টার্গেট সার্ভারে যে প্রোটোকলটি ব্যবহার করার চেষ্টা করেছেন তা বৈধ নয়।


এটি সম্ভবত প্রক্সি_উস্টুনেল ছিল। গৃহীত উত্তরের উপর প্রথম মন্তব্য দেখুন।
লার্ক

0

আমি একটি uwsgi://কাজ করার চেষ্টা করেছি , তবে কোনওভাবেই ম্যানুয়ালটি মনে করেছিল যে এটি আমার কাছে পরিষ্কার ছিল যে আমার আসলে প্রয়োজন mod_proxy_uwsgi। এটা ছিল না. আপনি এখানে এটি কীভাবে করছেন: মোড_প্রক্সি_উউসগি বা মোড_উউসগি কীভাবে সংকলন করবেন?


0

আমার জন্য উপরে উল্লিখিত সমস্ত উত্তরগুলি এক্সএএমপ্পে সক্ষম হয়েছে এখনও কাজ করছে না। মডিউলটির নীচে সক্ষম করা আবার ভার্চুয়াল হোস্টকে কাজ করে

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