リモートコンピュータ C から Apache サーバー A を介して Apache サーバー B にアクセスする

リモートコンピュータ C から Apache サーバー A を介して Apache サーバー B にアクセスする

単一のネットワークでネットワーク-1私には2台のコンピュータがあります:そしてB。 両方持っていますアパッチ稼働中のサーバー(両方デビアン7)。私はサーバーの所有者です、私のホームページは だとしましょうhttp://computerA/index.html。私は他の人にもアクセスできます(B) のページもB:8080/bspage.php同じネットワークにあります。実際、私のページには、その人のページへのリンクが次index.htmlのようにあります。

<a href="http://B:8080/bspage.php">B-Guy's Link</a>

私が外出中、別のネットワーク、次の方法を使用してゲートウェイ経由でサーバーのポート転送を行うことができます。

ssh -L 8888:A:80 gate@somegateway

したがって、サーバーページを再び開くことができます。

localhost:8888/index.html

しかし、そのリンクはB-Guy's Linkもう機能しません(明らかな理由だと思います)!

私が必要としているのは、地図 Bhttp://B:8080/bspage.php私のサーバーへのリンクB-Guy's Link、このリンクにリモートでアクセスすると、アパッチポート80と追加のポート転送はありませんB必須であるはずです。そのローカルネットワーク(ネットワーク-1)、私は(私のコンピュータから)やってみました):

ssh -L 9999:localhost:8080 root@B

(ちなみに私はルートアクセスを持っておりB、www-data以外のユーザーはルートのみです)しかし、localhost:9999/bspage.php私のブラウザでは開きません!! その後、ユーザーを から に変更する必要があるかもしれないと思いましたrootが、のwww-dataパスワードがわかりませんwww-dataBだからそれはできなかった。

私はこのビジネスにまったく不慣れなので、どんな助けでも本当にありがたいです。これはそれほど複雑ではないと思うのですが、何を見逃しているのか全くわかりません。

ありがとう -NL


アップデートと解決策

ダビドゴ答え非常に役立ちました。いくつかのチュートリアルをこなすことができました。これですここで、次の 4 つのモジュールを有効にしました。

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests

lbmethod_byrequests最後のものは見つからないか何かのエラーが表示されましたが、結局は問題になりませんでした。

その後、サーバーを再起動しました

service apache2 restart

その後、簡単に達成できそうなのに、達成できなかったことを達成できなかったのです!しかしこの記事ようやく役に立ちましたが、とにかく詳しく説明します。

ファイルを変更する必要がありました:

/etc/apache2/sites-available/default またはシンボリックリンク:/etc/apache2/sites-enabled/000-default

ブロック内:

<VirtualHost *:80>
   # blah blah some code...
</VirtualHost>

以下を挿入しました:

<Location /sometag >
        ProxyPass http://B:8080/
        ProxyPassReverse http://B:8080/
</Location>

は任意somethingの文字列を使用できますが、意味のある文字列を使用することをお勧めします。たとえば、ここでは のようなタグを使用するのが最適です。bserverしたがって、私の構成ファイルは次のようになります。

<VirtualHost *:80>
       # blah blah some code...
       <Location /bserver >
        ProxyPass http://B:8080/
        ProxyPassReverse http://B:8080/
       </Location>
</VirtualHost>

サーバーを再起動します

service apache2 restart

もう一つの小さな変更が必要です。あなたのページ(多分、index.htmlまたは何でも)でサーバーAリンクを変更するBのページから

<a href="http://B:8080/bspage.php">B-Guy's Link</a>

<a href="bserver/bspage.php">B-Guy's Link</a>

タグに注目サーバーこれで完了です。ポートを転送する80外部コンピュータに

ssh -L 8888:A:80 gate@somegateway

メインを開くとのページは通常通り:

localhost:8888/index.html

しかし、それをクリックするとBのリンクをクリックすると、次の URL にリダイレクトされます。

localhost:8888/bserver/bspage.php

終わり!

この方法に従えば、コンピュータをメインの ( frontend) サーバーとして使用し、その背後に多数の内部 ( backend) サーバーを配置すると、それらすべてにリモートでアクセスできるようになります。

答え1

この問題には複数の解決策があります。

私は、サーバー A で B にプロキシされているパスまたは仮想ホストをサーバー A に設定したいと考えています。これを行うには、Apache で ProxyPass ルールを使用します。(proxypass と mod_proxy については Google で検索してください)

あるいは、SSH ポート転送を廃止して OpenVPN に置き換えたいと考えています (理想的にはルーター上で実行します)。正しく設定されていれば、ネットワーク全体への安全なアクセスを透過的に許可します。

3 番目の選択肢としては、SSH 転送を SSH ベースの SOX プロキシに置き換えることです。(この機能は SSH に組み込まれていますが、ブラウザでこれを使用するように設定する必要があります)

答え2

最初は解決策を添えて質問を更新しただけだったのですが、ジャーニーマンオタク、それを答えに変えてみます。それでは始めましょう:

ダビドゴ答え非常に役立ちました。いくつかのチュートリアルをこなすことができました。これですここで、次の 4 つのモジュールを有効にしました。

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests

lbmethod_byrequests最後のものは見つからないか何かのエラーが表示されましたが、結局は問題になりませんでした。

その後、サーバーを再起動しました

service apache2 restart

その後、簡単に達成できそうなのに、達成できなかったことを達成できなかったのです!しかしこの記事ようやく役に立ちましたが、とにかく詳しく説明します。

ファイルを変更する必要がありました:

/etc/apache2/sites-available/default またはシンボリックリンク:/etc/apache2/sites-enabled/000-default

ブロック内:

<VirtualHost *:80>
   # blah blah some code...
</VirtualHost>

以下を挿入しました:

<Location /sometag >
        ProxyPass http://B:8080/
        ProxyPassReverse http://B:8080/
</Location>

は任意somethingの文字列を使用できますが、意味のある文字列を使用することをお勧めします。たとえば、ここでは のようなタグを使用するのが最適です。bserverしたがって、私の構成ファイルは次のようになります。

<VirtualHost *:80>
       # blah blah some code...
       <Location /bserver >
        ProxyPass http://B:8080/
        ProxyPassReverse http://B:8080/
       </Location>
</VirtualHost>

サーバーを再起動します

service apache2 restart

もう一つの小さな変更が必要です。あなたのページ(多分、index.htmlまたは何でも)でサーバーAリンクを変更するBのページから

<a href="http://B:8080/bspage.php">B-Guy's Link</a>

<a href="bserver/bspage.php">B-Guy's Link</a>

タグに注目サーバーこれで完了です。ポートを転送する80外部コンピュータに

ssh -L 8888:A:80 gate@somegateway

メインを開くとのページは通常通り:

localhost:8888/index.html

しかし、それをクリックするとBのリンクをクリックすると、次の URL にリダイレクトされます。

localhost:8888/bserver/bspage.php

終わり!

この方法に従えば、コンピュータをメインの ( frontend) サーバーとして使用し、その背後に多数の内部 ( backend) サーバーを配置すると、それらすべてにリモートでアクセスできるようになります。

関連情報