
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
。