ローカル IP アドレスを使用してローカル ネットワーク上のサーバーの Web サーバーにアクセスする

ローカル IP アドレスを使用してローカル ネットワーク上のサーバーの Web サーバーにアクセスする

Node WebサービスへのリクエストのプロキシとしてApacheを使用するサーバーがあります。現在、ドメイン名を使用してローカルネットワークの外部のブラウザから接続できますhttps://mydomain.ca使用済みサーバーのローカル IP アドレスを使用して、ローカル ネットワーク内のブラウザーから接続できるようにしますhttps://10.0.0.13。ただし、今試すと、500 エラーが発生します。これを再び機能させるための支援を求めています。また、それがより実現可能であれば、ローカル ネットワークで SSL を使用せず、を使用してサーバーにアクセスしてもかまいませんhttp://10.0.0.13

500 エラーとともに次のテキストが表示されます。

The proxy server could not handle the request 
Reason: Error during SSL Handshake with remote server

さらなる手がかりを求めて Apache エラー ログ (/var/log/apache2/error.log) を調べましたが、非常に役立つと思われるテキストは見つかりませんでした。

[Sun Nov 28 23:11:42.609115 2021] [proxy_http:error] [pid 28560:tid 140085584455424] [client 10.0.0.220:26070] AH01097: pass request body failed to 127.0.0.1:4201 (loca lhost) from 10.0.0.220 () 
[Sun Nov 28 23:11:42.769782 2021] [proxy:error] [pid 28560:tid 140085567670016] (20014)Internal error (specific information not available): [client
10.0.0.220:26071] AH 01084: pass request body failed to 127.0.0.1:4201 (localhost) 
[Sun Nov 28 23:11:42.769805 2021] [proxy:error] [pid 28560:tid 140085567670016] [client 10.0.0.220:26071] AH00898: Error during SSL Handshake with remote server returne d by /

私の conf ファイルは次のようになります。

mydomain.ca-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName mydomain.ca
    ServerAlias www.mydomain.ca
    ProxyPreserveHost on
    SSLProxyEngine on
    ProxyPass / https://localhost:4201/
    ProxyPassReverse / https://localhost:4201/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

ServerAlias mydomain.ca
SSLCertificateFile /etc/letsencrypt/live/mydomain.ca/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.ca/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

mydomain.ca.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName mydomain.ca
    ServerAlias www.mydomain.ca
    DocumentRoot /var/www/mydomain.ca
    ProxyPreserveHost on
    ProxyPass / http://localhost:4201/
    ProxyPassReverse / http://localhost:4201/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost>

編集 - Node Web サービスに関する情報は次のとおりです。Node Web サービスは単一のポートをリッスンしており、https 接続のみをリッスンしています。

答え1

バックエンド サーバー上の同じポートに接続するように HTTP と HTTPS の両方を構成しました。

バックエンド サーバーが同じポートで両方のプロトコルをサポートする可能性はほとんどありません。

両方の VirtualHosts で HTTP を使用するか、バックエンド サーバーが両方をサポートしている場合は HTTPS に正しいポートを使用します。

答え2

上記のコメントのいくつかは、私に正しい考え方をさせてくれました。私が取ったアプローチは

  • Node Webサービス内の異なるポートで別々のhttpとhttpsサーバーを実行する。
  • mydomain.ca.confとmydomain.ca-le-ssl.confのポート番号を正しいポート番号に対応するように更新し、
  • 以下に示すように、mydomain.ca.conf を更新して、ローカルホストまたは LAN からの要求にのみ応答するようにします。
<VirtualHost *:80>
  # We should only access the web server via http if on localhost
  # or within LAN.
  <Location />
    Require local
    Require ip 10.0.0.0/24
  </Location>
  ...

これらすべてを設定すると、http://10.0.0.13ローカル ネットワークの内外からアクセスできるようになりますhttps://mydomain.ca

関連情報