ローカルコンピュータでホストされているApacheサイトを外部からアクセスできるようにする

ローカルコンピュータでホストされているApacheサイトを外部からアクセスできるようにする

私は、 経由でアクセスできる LAN 上で Moodle サイトをホストしている稼働中の apache2 サーバーを持っていますhttp://192.x.x.x/moodle。また、インターネットと LAN の間に、ライブ IP アドレスを持つ Linux サーバーがあります124.x.x.x。インターネットから Moodle サイトにアクセスできるようにしたいのですが、可能ですか?

ローカルの apache2 サーバーには、 を提供するための動作構成がありますmoodle.domain.com。ライブ Linux サーバーにも、 をホストする apache2 サーバーがありますdomain.com。どちらも Debian Linux を実行しています。

ライブ Linux サーバーのファイルからリダイレクトしよmoodle.domain.comうとしましたが、それでも、外部からアクセスすると、次のメッセージが表示されます。192.x.x.x/etc/hostsdomain.commoodle.domain.com

外部からアクセスする場合は、まず Windows ラップトップのホスト ファイルを設定して、moodle.domain.comLinux サーバーのライブ IP アドレスにリダイレクトします。

ここで何が欠けているのでしょうか?

答え1

ライブ Linux Apache サーバーに Apache リバース プロキシを実装することで動作させることができました。

同じ解決策を探している人のために、私のスニペットを以下に示します/etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>
        ServerName moodle.domain.com
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyPass / http://10.5.1.100:8080/
        ProxyPassReverse / http://10.5.1.100:8080/
</VirtualHost>

実際の Moodle サイトをホストしているローカル Apache サーバーは、ポートでリッスンする必要があります8080:

<VirtualHost *:8080>
    ServerAdmin webmaster@local
    DocumentRoot /srv/www/moodle
    ServerName moodle.domain.com
    ServerAlias moodle.domain.com
    <Directory /srv/www/moodle>
           #Allowoverride all    ###Uncomment if required
    </Directory>
</VirtualHost>

調整する必要があったもう 1 つの Moodle 固有の設定は、Moodle 構成ファイルです/srv/www/moodle/config.php

$CFG->wwwroot = 'http://moodle.domain.com';

Moodleはインストール時に最初に設定されています$CFG->wwwroot = 'http://10.5.1.100/moodle';。Moodleがインストールされていない場合は、この部分を無視してください。

答え2

始める前に、この方法が最も安全なオプションではないことをご理解ください。特にルーターのポートを開くことによって、ファイアウォールについて理解してください。

動的 IP をお持ちの場合 (推測ですが)、それを単純にドメインにバインドすることはできません。IP は数時間ごとに変更されてしまうからです。

この回答は、利用可能な最も一般的なルーター オプションに基づいています。

  1. ルーター接続で Apache サーバーを見つけて、ポート転送 (80) を有効にする必要があります。または、何をしているのかを理解していて、適切なファイアウォールが初期化されている場合は、すべてのルーター ポートを開くだけで済みます (ファイアウォールがない限り、これを行わないことを強くお勧めします)。
  2. Dyn DNS などの無料 DNS サービスを使用します (最新のルーターはこれをすぐにサポートしているので、設定を確認してアカウントを設定するだけです)。
  3. 無料の DNS サブドメインを作成します。
  4. メイン ドメインから DNS ルール (CNAME) を作成し、dyndns で作成したサブドメインを指定します。たとえば、moodle.example.com -> trex-moodle.exampledyndns.com です。
  5. Apache を設定し、dyndns サブドメインを追加します。

ルーターで無料の DNS を使用するのが最善のオプションです。ルーターは数時間ごとに IP をローテーションするため、このようなサービスを使用している場合、dyn DNS ドメインは常に自宅の IP アドレスを指すことになります。

編集

domain.com最初のコメントに関しては、メインの Linux サーバーで nginx プロキシを実行する必要があります。nginx は、同じネットワーク内の別のサーバーでホストされているWeb サイトと moodle.domain.com をホストするために使用できます。

Linux サーバーから Moodle Web サイトにアクセスできることを確認してください。(ping IP を使用)

ここで、nginx で次の設定を行う必要があります。

server {
    listen       80;
    server_name domain.com;

        root /your/domain.com/path/goes/here ;
}

server {
    listen       80;
    server_name  moodle.trex.com;

    location / {
        proxy_pass http://192.X.X.X:80; #Your apache2 server local IP address
    }
}

これを機能させるには、Linux サーバーと apache2 サーバーの両方が同じ 192.XXX ネットワークの下にある必要があります。

関連情報