অ্যাপাচি অন্য বন্দরে পুনর্নির্দেশ


151

আমি কিছু সময়ের জন্য এটির সাথে লড়াই করেছি এবং অবশ্যই কিছু ভুল করছি।

আমার একই মেশিনে অ্যাপাচি সার্ভার এবং একটি জেবস সার্ভার রয়েছে। আমি মাইডোমাইন.কমের জন্য ট্র্যাফিক পুনঃনির্দেশ করতে চাই জেবস লোকালহোস্টে: 8080 / উদাহরণ। ডিএনএস বর্তমানে মাইডোমেন.কমের জন্য সেটআপ করা হয়েছে এবং ব্রাউজারে প্রবেশ করার সময় এটি সরাসরি পোর্ট 80 এ চলে যাবে।

আমার প্রশ্ন হ'ল যখন কোনও নির্দিষ্ট ডোমেন নাম অ্যাপাচি আসে (তখন এই ক্ষেত্রে "mydomain.com") আমি কীভাবে একটি আলাদা বন্দরে পুনর্নির্দেশ করব?

<VirtualHost ip.addr.is.here> 
  ProxyPreserveHost On
  ProxyRequests Off
  ServerName mydomain.com
  ProxyPass http://mydomain.com http://localhost:8080/example
  ProxyPassReverse http://mydomain.com http://localhost:8080/example
</VirtualHost> 

আপডেট করা ডাব্লু / পরামর্শ - এখনও 8080 পোর্টে ফরোয়ার্ড করা হচ্ছে না

<VirtualHost *:80> 
  ProxyPreserveHost On
  ProxyRequests Off
  ServerName mydomain.com
  ServerAlias www.mydomain.com
  ProxyPass http://mydomain.com http://localhost:8080/example
  ProxyPassReverse http://mydomain.com http://localhost:8080/example
</VirtualHost> 

দেখতে বেশ সুন্দর লাগছে। তোমার লক্ষণগুলো কি কি?
মার্টিন ভিলকান্স

সিম্পটমগুলি হ'ল আমি ব্রাউজারে www.mydomain.com রেখেছি এবং এটি অ্যাপাচে রুট ডিরে যায়। পরিবর্তে, আমি এটি একটি jboss উপ-ডিরেক্টরি স্থানীয়হোস্ট: 8080 / subdir এ পুনর্নির্দেশ করতে চাই। আমার বর্তমানে এটি সরাসরি বিভিন্ন পোর্ট ৮০ এ পুনঃনির্দেশের জন্য কাজ করছে, তবে এটি অন্য কোনও বন্দরে যাওয়ার পক্ষে যথেষ্ট নয়।
এজেন্টকারি

আমার ঠিক একই অনুরোধ আছে: আপনি কি কোনও সমাধান খুঁজে পেয়েছেন?
সাইস্ট্যাক

1
@ সাইস্ট্যাক - আমি এটিকে কাজে লাগাতে পারিনি। আমি কনফিগারেশনে এতগুলি ভিন্নতার চেষ্টা করেছি যা এটি আমাকে পাগল করেছিল। আমি এটি ছেড়ে দিয়েছি = / আপনি যদি কোনও সমাধান খুঁজে পান তবে দয়া করে এটি এখানে পোস্ট করুন, আমি কীভাবে এটি কাজ করতে পারি তা জানতে চাই। সৌভাগ্য আমার বন্ধু!
এজেন্টকারি

এটি আমার জন্য কাজ করেছে: serverfault.com/a/195831/111707
jjrv

উত্তর:


224

আপনার http://example.comপ্রক্সিপাস এবং প্রক্সিপাস রিভার্সের ডোমেনটি ছেড়ে দেওয়া উচিত /। অতিরিক্তভাবে, আপনাকে এটি পুনর্নির্দেশের /শেষে example/যেতে হবে। এছাড়াও, আমি সঙ্গে কিছু সমস্যা ছিল http://example.comবনাম http://www.example.com- শুধুমাত্র WWW কাজ যতক্ষণ না আমি servername www.example.com, এবং ServerAlias example.com প্রণীত। নিম্নলিখিত যান।

<VirtualHost *:80> 
  ProxyPreserveHost On
  ProxyRequests Off
  ServerName www.example.com
  ServerAlias example.com
  ProxyPass / http://localhost:8080/example/
  ProxyPassReverse / http://localhost:8080/example/
</VirtualHost> 

আপনি এই পরিবর্তনগুলি করার পরে, প্রয়োজনীয় মডিউলগুলি যুক্ত করুন এবং অ্যাপাচি পুনরায় চালু করুন

sudo a2enmod proxy && sudo a2enmod proxy_http && sudo service apache2 restart


1
এটি কি কোনও সেন্টোস সার্ভারের জন্য একই হবে? (আমি কেন তা দেখছি না, কেবল তা নিশ্চিত করে)। এবং, এটি কোন কনফিগারেশন ফাইল হবে? (কোথাও / etc / httpd / conf এ অনুমান করছি ...)
জেরেমি

1
এটি কাজ করেছে, কিন্তু আমি দেখেছি যে আমার আবেদনের স্বাগত পৃষ্ঠায়, সিএসএস লোড করা হয়নি (যা এর আগে উদাহরণ ডটকম: ৮০৮০ / উদাহরণে কাজ করেছিল)। এবং কিছু ব্যতিক্রম পেয়েছিলাম। কোন ধারণা আমি কি মিস করছি?
রাজর্ষি মিত্র

1
এটি না করা পর্যন্ত আমার httpd এ "পরিষেবা অনুপলব্ধ" ত্রুটির কারণ ঘটেছে/usr/sbin/setsebool -P httpd_can_network_connect 1
ভ্লাদক্রাস

@ ভ্লাদক্রাস এই টিপটির জন্য অনেক ধন্যবাদ, খুব সহায়ক!
mneute

28

আমি নিম্নলিখিত কোড সহ এই সমস্যাটি সমাধান করেছি:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName myhost.com
ServerAlias ww.myhost.com
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>

আমিও ব্যবহার করেছি:

a2enmod proxy_http

10

আমি ঠিক এটি করতে চেয়েছিলাম যাতে আমি রুট ডোমেন থেকে জেনকিন্স অ্যাক্সেস করতে পারি।

আমি দেখেছি এটি কাজ করতে আমাকে ডিফল্ট সাইটটি অক্ষম করতে হয়েছিল। এখানে আমি ঠিক কি করেছি।

$ sudo vi /etc/apache2/sites-available/jenkins

এবং এটি ফাইলের মধ্যে sertোকান:

<VirtualHost *:80>
  ProxyPreserveHost On
  ProxyRequests Off
  ServerName mydomain.com
  ServerAlias mydomain
  ProxyPass / http://localhost:8080/
  ProxyPassReverse / http://localhost:8080/
  <Proxy *>
        Order deny,allow
        Allow from all
  </Proxy>
</VirtualHost>

এরপরে আপনাকে উপযুক্ত সাইটগুলি সক্ষম / অক্ষম করতে হবে:

$ sudo a2ensite jenkins
$ sudo a2dissite default
$ sudo service apache2 reload

আশা করি এটি কাউকে সাহায্য করবে।


@ লাউথ অবদানের জন্য ধন্যবাদ আমি দীর্ঘ দিন এটি ছেড়ে দিয়েছি এবং সার্ভার আর নেই। তবুও আমাকে বিরক্ত করে যে আমি কখনই এটি কাজ করি নি, আবার পরীক্ষা করার জন্য আমি একটি নতুন সার্ভার শুরু করতে পারি। আবারও ধন্যবাদ, আমি / আবার চেষ্টা করার পরে আপডেট করার বিষয়ে নিশ্চিত হয়েছি।
এজেন্টকারি

জেনকিনস উইকি ব্যাখ্যা করেছেন কীভাবে আপাচের
mneute

6

এটি পরীক্ষা এবং ত্রুটির দ্বারা খুঁজে পেয়েছি। যদি আপনার কনফিগারেশনটিতে একটি সার্ভারনাম নির্দিষ্ট করা থাকে, তবে আপনার ভার্চুয়ালহোস্ট নির্দেশনাটি একই করা দরকার। নিম্নলিখিত উদাহরণে, awesome.example.com এবং আশ্চর্যজনক.অ্যাম্পেল.কম উভয়ই 4567 বন্দরে চলমান কিছু স্থানীয় পরিষেবাতে ফরোয়ার্ড করা হবে।

ServerName example.com:80

<VirtualHost example.com:80>
  ProxyPreserveHost On
  ProxyRequests Off
  ServerName awesome.example.com
  ServerAlias amazing.example.com
  ProxyPass / http://localhost:4567/
  ProxyPassReverse / http://localhost:4567/
</VirtualHost>

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


এটিই আমার পক্ষে কাজ করেছে। *:80পরিবর্তে ব্যবহার করে example.com:80বোঝানো হচ্ছে যে বন্দরটি পুনঃনির্দেশিত করা হবে না।
Seb123

4

আপনাকে নিশ্চিত করতে হবে যে প্রক্সিটি সার্ভারে সক্ষম হয়েছে। আপনি নিম্নলিখিত আদেশগুলি ব্যবহার করে এটি করতে পারেন:

  a2enmod proxy
  a2enmod proxy_http

  service apache2 restart

3

এটি একটি পুরানো প্রশ্ন হতে পারে তবে আমি যা করেছি তা এখানে:

অ্যাপাচি দ্বারা লোড করা একটি .conf ফাইলে:

<VirtualHost *:80>
  ServerName something.com
  ProxyPass / http://localhost:8080/
</VirtualHost>

ব্যাখ্যা: স্থানীয় মেশিনের বন্দরে 80 তে সমস্ত অনুরোধ শুনুন I আমি যদি অনুরোধ করি " http://something.com/somethingorother", তবে অনুরোধটি " http://localhost:8080/somethingorother" এগিয়ে যান । এটি কোনও বাহ্যিক দর্শনার্থীর জন্য কাজ করা উচিত কারণ ডক্স অনুসারে, এটি স্থানীয় সার্ভারের স্পেসে দূরবর্তী অনুরোধের মানচিত্র করে।

আমি অ্যাপাচি ২.৪..6-২ বুবন্টু ২.২ চালাচ্ছি, সুতরাং আমি নিশ্চিত নই যে "-2ubuntu2.2" এই উত্তরের বিস্তৃত প্রয়োগকে কীভাবে প্রভাবিত করবে।

আপনি এই পরিবর্তনগুলি করার পরে, প্রয়োজনীয় মডিউলগুলি যুক্ত করুন এবং অ্যাপাচি পুনরায় চালু করুন

sudo a2enmod proxy && sudo a2enmod proxy_http && sudo service apache2 restart

2

আপনি যদি JBoss এবং mydomain.com:8080- তে কোনও প্রক্সি ব্যবহার না করে থাকেন তবে বিশ্বের কাছে "উন্মুক্ত" করা যেতে পারে, তবে আমি এটি করব।

<VirtualHost *:80>
  ServerName mydomain.com
  Redirect 301 / http://mydomain.com:8080/
</VirtualHost>

৮০ টি ব্যতীত অন্য কোনও বন্দর ব্যবহার করা কেবল কুৎসিত দেখায় না, তবে প্রক্সি সার্ভার বা আইএসপিগুলির ক্ষেত্রেও সমস্যা তৈরি করতে পারে। সেক্ষেত্রে কেবল অ্যাপাচি সরান এবং তার পরিবর্তে 80 পোর্টে JBoss চালান!
মার্টিন ভিলকান্স

জেবস এর অধীনে সমস্ত কিছুই চালানো একটি বিকল্প, আমি কেবল অ্যাপাচি সাইটগুলি জেবসগুলিতে স্থানান্তর করা এড়াতে চাইছিলাম, তবে এটি অত্যধিক সময় ব্যয় করা উচিত নয়। সাহায্য করার জন্য ধন্যবাদ.
এজেন্টকারি

1

আপনার অ্যাপাচি কনফিগারেশনে কেবল একটি বিপরীত প্রক্সি ব্যবহার করুন (সরাসরি):

ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar

মোডটি কীভাবে ব্যবহার করবেন তার অ্যাপাচি ডকুমেন্টেশনের জন্য এখানে দেখুন


1

আমার অ্যাপাচি 2 টি ভিন্ন বন্দর শোনায়,

Listen 8080
Listen 80  

আমি 80 ব্যবহার করি যখন আমি একটি স্বচ্ছ URL চাই এবং স্থানীয় ইউআরএলকে মঞ্জুরি দেয় না এমন গুগল পরিষেবাগুলির জন্য ইউআরএল দরকারী হওয়ার পরে পোর্টটি রাখি না?

তবে আমি অভ্যন্তরীণ বিকাশের জন্য 8080 ব্যবহার করি যেখানে আমি বন্দরে "দেব পরিবেশ" হিসাবে উল্লেখ হিসাবে ব্যবহার করি


0

অ্যাপাচি নাম ভিত্তিক এবং আইপি ভিত্তিক ভার্চুয়াল হোস্টগুলিকে সমর্থন করে। দেখে মনে হচ্ছে আপনি উভয়ই ব্যবহার করছেন যা সম্ভবত আপনার প্রয়োজনটি নয়।

আমি মনে করি আপনি আসলে নাম ভিত্তিক ভার্চুয়াল হোস্টিং সেট আপ করার চেষ্টা করছেন এবং এর জন্য আপনার আইপি ঠিকানা নির্দিষ্ট করার দরকার নেই।

আপনি যদি আইপি ভিত্তিক ভার্চুয়াল হোস্টিং না চান তবে সমস্ত আইপি ঠিকানার সাথে আবদ্ধ থাকার জন্য <ভার্চুয়ালহস্ট *: 80> ব্যবহার করে দেখুন । সার্ভারের বেশ কয়েকটি আইপি অ্যাড্রেস থাকলে এবং আপনি বিভিন্ন ঠিকানায় বিভিন্ন সাইট পরিবেশন করতে চান এমন ক্ষেত্রে এটি হতে পারে। সর্বাধিক সাধারণ সেটআপ হ'ল নাম ভিত্তিক ভার্চুয়াল হোস্ট।


এটি বোধগম্য, নাম ভিত্তিক আমার যা প্রয়োজন তা হল। আমি এটি পরিবর্তন করেছি তবে এটি এখনও অন্য বন্দরটিতে
যাত্রা করছে না

0

আপনার 2 টি জিনিস প্রয়োজন:

  1. ServerAlias www.mydomain.comআপনার কনফিগারেশনে একটি যুক্ত করুন
  2. আপনার প্রক্সিপাসকে এতে পরিবর্তন করুন ProxyPassMatch ^(.*)$ http://localhost:8080/example$1, সম্ভবত মোড_ডির এবং ট্রেলিং স্ল্যাশগুলি হস্তক্ষেপ থেকে বিরত রাখতে।

আমি সার্ভারএলিয়াস যুক্ত করেছি তবে এখনও ভাগ্য নেই।
এজেন্টকুরি

0

ভার্চুয়াল সার্ভারে ডোমেন নামের মাধ্যমে পোর্টগুলি অ্যাক্সেস করার জন্য সমস্ত দুর্দান্ত অন্তর্দৃষ্টি। ভার্চুয়াল সার্ভারগুলি সক্ষম করতে তবে ভুলবেন না; এটি মন্তব্য করা হতে পারে:

NameVirtualHost *:80
<Directory "/home/dawba/www/">
 allow from all
</Directory>

আমরা ডাব্লুএসজিআই ডোমেন এসএক্সএক্সএক্সএক্সএক্স.কম এবং go 68০০ বন্দরে চলমান একটি গোলাং সার্ভারের সাথে একটি অ্যাপাচি সার্ভার দিয়ে চালিত করি এটি ছিল আমাদের সমাধান:

<VirtualHost *:80>
 ProxyPreserveHost On
 ProxyRequests Off
 ServerName wsgi.sxxxx.com
 DocumentRoot "/home/dxxxx/www"
  <Directory "/home/dxxx/www">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  </Directory>
 ScriptAlias /py/ "/home/dxxxx/www/py/"
 WSGIScriptAlias /wsgiprog /home/dxxxx/www/wsgiprog/Form/Start.wsgi
</VirtualHost>

<VirtualHost *:80>
 ProxyPreserveHost On
 ProxyRequests Off
 ServerName sxxxx.com 
 ServerAlias www.sxxxx.com
 ProxyPass / http://localhost:6800/
 ProxyPassReverse / http://localhost:6800/
</VirtualHost>

0

এটি আইএসপি কনফিগ-এও কাজ করছে। ওয়েবসাইটের তালিকায় কোনও ডোমেনের ভিতরে যেতে, বিকল্প ট্যাবে ক্লিক করুন, এই লাইনগুলি যুক্ত করুন:;

ProxyPass / http://localhost:8181/
ProxyPassReverse / http://localhost:8181/

তারপরে ওয়েবসাইটে যান এবং ওয়ালা :) এটি এইচটিটিপিএস প্রোটোকলটিও কাজ করছে।


0

আর একবার চেষ্টা কর-

<VirtualHost *:80> 
  ProxyPreserveHost On
  ProxyRequests Off
  ServerName www.adminbackend.example.com
  ServerAlias adminbackend.example.com
  ProxyPass / http://localhost:6000/
  ProxyPassReverse / http://localhost:6000/
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost> 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.