
単一のネットワークでネットワーク-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-data
Bだからそれはできなかった。
私はこのビジネスにまったく不慣れなので、どんな助けでも本当にありがたいです。これはそれほど複雑ではないと思うのですが、何を見逃しているのか全くわかりません。
ありがとう -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
) サーバーを配置すると、それらすべてにリモートでアクセスできるようになります。