サブドメイン リダイレクト (プロキシ) が機能しない (Apache2 と Nginx で試しました)

サブドメイン リダイレクト (プロキシ) が機能しない (Apache2 と Nginx で試しました)

私はウェブサイトの管理にApache2を搭載したRaspberry Piを使用しています。異なるポートで複数のDockerイメージを実行しています。URLを変更せずに scanner.raspberry.localにリダイレクトしたいと考えていますlocalhost:1234。そのために、次の2つの投稿に従いました。

最終的に、動作する仮想ホストは 1 つだけです (最初のもの)。これが私の設定です:

# Home page : working properly
<VirtualHost *:80>
        ServerName          raspberry.local

        ProxyPreserveHost   On
        ProxyRequests       Off

        ProxyPass           / http://localhost:8080/
        ProxyPassReverse    / http://localhost:8080/

        ErrorLog ${APACHE_LOG_DIR}/error-homer.log
        CustomLog ${APACHE_LOG_DIR}/access-homer.log combined
</VirtualHost>

# Scanner : not working : "could not resolve host" when I cURL
<VirtualHost *:80>
        ServerName          scan.raspberry.local

        ProxyPreserveHost   On
        ProxyRequests       Off

        ProxyPass           / http://localhost:1234/
        ProxyPassReverse    / http://localhost:1234/

        ErrorLog ${APACHE_LOG_DIR}/error-scan.log
        CustomLog ${APACHE_LOG_DIR}/access-scan.log combined
</VirtualHost>

nginxをインストールしてみましたが、結局同じ結果になりました。最初の仮想ホストは機能しますが、2番目の仮想ホスト(サブドメイン)は、サーバー上で直接cURL経由でも解決できませんでした。これ助けになる投稿。私はこう締めくくりました:

server {
    listen 80;
    server_name raspberry.local;

    location / {
        proxy_pass http://localhost:8080;
    }   
}

server {
    listen 80;
    server_name scan.raspberry.local;

    location / {
        proxy_pass http://localhost:1234;
    }   
}

ログ ファイルにエラーはなく、 を使用するとapache2ctl -S問題なく仮想ホストが検出されます。 を使用した場合も同様です。 、およびモジュールapache2ctl configtestを有効にしました。また、 の設定は( からのシンボリック リンク)で適切に有効になっています。proxyproxy_httprewrite/etc/apache2/sites-enabled/000-default.confsites-available

私のシステム:

  • Ubuntu 22.04 上の Raspberry Pi 4 8​​Gb

また、私は Pi でホストされている VPN を使用しており、適切な構成を(WSL/Windows)/etc/hostに追加しました。c:\Windows\System32\Drivers\etc\hosts

apache2 の設定に関する投稿がたくさんあることは知っています。しかし、同じ問題に関する投稿は見つかりません。

答え1

スキャナー: 動作しない: cURL 時に「ホストを解決できませんでした」

これは、curlドメイン名の IP アドレスを解決できないことを意味します。つまり、宛先ドメインの DNS エントリが設定されていないことを意味します。

DNS 設定は Apache2 や nginx 設定とは関係ありません。

答え2

これを解決するために、私はインストールしましたdnsmasq設定した、 そしてDNSサーバーを追加しました/etc/resolve.conf

x.subdomain.localこれで、各マシンに DNS サーバーを追加すると、cURL を実行できるようになります。

関連情報