Acessando o servidor web do servidor na rede local com seu endereço IP local

Acessando o servidor web do servidor na rede local com seu endereço IP local

Eu tenho um servidor com Apache como proxy para solicitações a um serviço web do Node. Atualmente consigo me conectar usando um navegador fora da minha rede local usando meu nome de domínio: https://mydomain.ca. Eu acredito queusadopara poder me conectar usando um navegador dentro da minha rede local usando o endereço IP local do servidor: https://10.0.0.13. No entanto, quando tento agora, recebo um erro 500. Estou procurando ajuda para fazer isso funcionar novamente. Eu também aceitaria não usar SSL na minha rede local e acessar o servidor, http://10.0.0.13se isso for mais viável.

Recebo o seguinte texto com o erro 500:

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

Procurei no meu log de erros do Apache (/var/log/apache2/error.log) mais pistas, mas não achei o texto que achei muito útil:

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

Aqui está a aparência dos meus arquivos conf:

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

meudominio.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 - Aqui estão algumas informações sobre o serviço web Node: O serviço web Node está escutando em uma única porta e ouvindo apenas conexões https.

Responder1

Você configurou HTTP e HTTPS para se conectar à mesma porta no servidor back-end.

É altamente improvável que o seu servidor backend suporte ambos os protocolos na mesma porta.

Use HTTP em ambos os VirtualHosts ou use a porta correta para HTTPS se o seu servidor backend suportar ambos.

Responder2

Alguns dos comentários acima me fizeram pensar sobre isso da maneira certa. A abordagem que segui foi

  • executar servidores http e https separados em portas diferentes no meu serviço da web Node,
  • atualize os números das portas em mydomain.ca.conf e mydomain.ca-le-ssl.conf para corresponder aos números de porta corretos e
  • atualize mydomain.ca.conf para responder apenas às solicitações de localhost ou LAN conforme mostrado abaixo.
<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>
  ...

Com tudo isso instalado, agora posso acessar http://10.0.0.13de dentro da minha rede local e https://mydomain.cade fora da minha rede local.

informação relacionada