Доступ к веб-серверу сервера в локальной сети с его локальным IP-адресом

Доступ к веб-серверу сервера в локальной сети с его локальным IP-адресом

У меня есть сервер с Apache в качестве прокси для запросов к веб-сервису Node. В настоящее время я могу подключиться с помощью браузера за пределами моей локальной сети, используя мое доменное имя: 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 /

Вот как выглядят мои файлы конфигурации:

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>

мойдомен.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>

EDIT - Вот некоторая информация о веб-службе Node: веб-служба Node прослушивает один порт и только https-соединения.

решение1

Вы настроили HTTP и HTTPS для подключения к одному и тому же порту на внутреннем сервере.

Крайне маловероятно, что ваш внутренний сервер поддерживает оба протокола на одном и том же порту.

Либо используйте HTTP в обоих VirtualHosts, либо используйте правильный порт для HTTPS, если ваш внутренний сервер поддерживает оба варианта.

решение2

Некоторые из комментариев выше заставили меня задуматься об этом в правильном направлении. Подход, который я выбрал, был таким:

  • запустить отдельные http и https серверы на разных портах в моем веб-сервисе Node,
  • обновите номера портов в mydomain.ca.conf и mydomain.ca-le-ssl.conf, чтобы они соответствовали правильным номерам портов, и
  • обновите mydomain.ca.conf, чтобы он отвечал только на запросы с локального хоста или локальной сети, как показано ниже.
<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извне.

Связанный контент