Рейтинг:1

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

флаг au

У меня есть сервер с Apache в качестве прокси для запросов к веб-службе Node. В настоящее время я могу подключиться с помощью браузера за пределами моей локальной сети, используя свое доменное имя: https://mydomain.ca. я верю, что я использовал чтобы иметь возможность подключаться с помощью браузера внутри моей локальной сети, используя локальный IP-адрес сервера: https://10.0.0.13. Однако, когда я пытаюсь сейчас, я получаю ошибку 500. Я ищу помощи, чтобы заставить это работать снова. Я также могу не использовать SSL в своей локальной сети и получать доступ к серверу с помощью http://10.0.0.13 если это более достижимо.

Я получаю следующий текст с ошибкой 500:

Прокси-сервер не смог обработать запрос 
Причина: ошибка во время SSL-рукопожатия с удаленным сервером.

Я поискал в своем журнале ошибок Apache (/var/log/apache2/error.log) дополнительные подсказки, но не нашел текста, который показался мне очень полезным:

[Вс, 28 ноября, 23:11:42.609115 2021] [proxy_http:error] [pid 28560:tid 140085584455424] [client 10.0.0.220:26070] AH01097: не удалось передать тело запроса на 127.0.0.1:4201 (loca lhost.) из 10.0.0.0.0. 0,220 () 
[Вс, 28 ноября, 23:11:42.769782 2021] [прокси:ошибка] [pid 28560:tid 140085567670016] (20014)Внутренняя ошибка (конкретная информация недоступна): [клиент
10.0.0.220:26071] AH 01084: не удалось передать тело запроса на 127.0.0.1:4201 (localhost) 
[Вс, 28 ноября, 23:11:42.769805 2021] [прокси:ошибка] [pid 28560:tid 140085567670016] [клиент 10.0.0.220:26071] AH00898: Ошибка во время SSL-квитирования с удаленным сервером, возвращенным /

Вот как выглядят мои файлы 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>

мой домен.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: Веб-служба Node прослушивает один порт и прослушивает только https-соединения.

флаг ru
`http://10.0.0.13` должен работать. Просто убедитесь, что браузер не перенаправляется на https автоматически, что, скорее всего, связано с последними тенденциями перехода только на https.
флаг au
Я дважды проверил, что меня не перенаправляли, и могу подтвердить, что проблема, описанная выше, продолжает возникать, даже когда я перехожу на http://10.0.013 из своей локальной сети.
Рейтинг:2
флаг in

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

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

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

флаг ru
Бэкенд поддерживает только http. Завершение SSL происходит на стороне apache. Так что с этой конфигурацией все в порядке.
флаг in
нет, это не так. У вас есть `ProxyPass/https://localhost:4201/` в вашей конфигурации. Apache пытается связаться с вашим бэкендом по https, но отвечает HTTP. Следовательно, «Ошибка во время SSL-рукопожатия».
флаг ru
Ах, правильно. Это еще одна ошибка. Я думаю, что оба виртуальных хоста должны использовать http. Но точно, о бэкэнде мы ничего не знаем.
флаг au
Я отредактировал свой исходный пост, добавив дополнительную информацию о настройке веб-службы Node. Я попробовал `ProxyPass / https://localhost:4201/` в `mydomain.ca.conf`, а затем перешел к `http://mydomain.ca`, но затем получил другую "Внутреннюю ошибку службы". Я также пытался перейти на `https://10.0.0.13`, и это продолжает вызывать ту же «Ошибку прокси», описанную выше. В частности, я не уверен, почему этот последний подход не работает, когда `https://mydomain.ca` работает из-за пределов моей сети.
Рейтинг:1
флаг au

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

  • запускать отдельные серверы http и https на разных портах в моей веб-службе Node,
  • обновите номера портов в mydomain.ca.conf и mydomain.ca-le-ssl.conf, чтобы они соответствовали правильным номерам портов, и
  • обновите mydomain.ca.conf, чтобы он отвечал только на запросы от локального хоста или локальной сети, как показано ниже.
<Виртуальный хост *:80>
  # Мы должны получить доступ к веб-серверу только через http, если на локальном хосте
  # или внутри локальной сети.
  <Местоположение />
    Требовать местные
    Требовать IP 10.0.0.0/24
  </местоположение>
  ...

Со всем этим я теперь могу получить доступ http://10.0.0.13 изнутри моей локальной сети и https://mydomain.ca из-за пределов моей локальной сети.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.