Zugriff auf den Webserver des Servers im lokalen Netzwerk mit seiner lokalen IP-Adresse

Zugriff auf den Webserver des Servers im lokalen Netzwerk mit seiner lokalen IP-Adresse

Ich habe einen Server mit Apache als Proxy für Anfragen an einen Node-Webdienst. Ich kann mich derzeit mit einem Browser außerhalb meines lokalen Netzwerks über meinen Domänennamen verbinden: https://mydomain.ca. Ich glaube, ichgebrauchtum mich mit einem Browser in meinem lokalen Netzwerk über die lokale IP-Adresse des Servers verbinden zu können: https://10.0.0.13. Wenn ich es jetzt jedoch versuche, erhalte ich einen 500-Fehler. Ich brauche Hilfe, um dies wieder zum Laufen zu bringen. Ich wäre auch damit einverstanden, in meinem lokalen Netzwerk kein SSL zu verwenden und über auf den Server zuzugreifen, wenn http://10.0.0.13das machbarer ist.

Ich erhalte den folgenden Text mit dem 500-Fehler:

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

Ich habe in meinem Apache-Fehlerprotokoll (/var/log/apache2/error.log) nach weiteren Hinweisen gesucht, aber den Text, den ich besonders hilfreich fand, konnte ich nicht finden:

[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 /

So sehen meine Konfigurationsdateien aus:

meinedomain.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>

meinedomain.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>

BEARBEITEN – Hier sind einige Informationen zum Node-Webdienst: Der Node-Webdienst überwacht einen einzelnen Port und nur https-Verbindungen.

Antwort1

Sie haben sowohl HTTP als auch HTTPS für die Verbindung mit demselben Port auf dem Backend-Server konfiguriert.

Es ist höchst unwahrscheinlich, dass Ihr Backend-Server beide Protokolle auf demselben Port unterstützt.

Verwenden Sie entweder HTTP in beiden VirtualHosts oder den richtigen Port für HTTPS, wenn Ihr Backend-Server beides unterstützt.

Antwort2

Einige der obigen Kommentare haben mich dazu gebracht, richtig darüber nachzudenken. Der Ansatz, den ich gewählt habe, war

  • separate http- und https-Server auf unterschiedlichen Ports innerhalb meines Node-Webdienstes ausführen,
  • Aktualisieren Sie die Portnummern in mydomain.ca.conf und mydomain.ca-le-ssl.conf, damit sie den richtigen Portnummern entsprechen.
  • Aktualisieren Sie mydomain.ca.conf, um nur auf Anfragen vom lokalen Host oder LAN zu antworten, wie unten gezeigt.
<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>
  ...

Nachdem dies alles eingerichtet ist, kann ich jetzt http://10.0.0.13von innerhalb und https://mydomain.caaußerhalb meines lokalen Netzwerks zugreifen.

verwandte Informationen