Tenho um servidor com Apache como proxy para requisições a um serviço web Node. Atualmente, consigo me conectar usando um navegador fora da minha rede local usando meu nome de domínio: https://mydomain.ca
. Acredito que costumava 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 ficaria bem em não usar SSL na minha rede local e acessar o servidor http://10.0.0.13
se 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
Fui procurar no meu log de erros do Apache (/var/log/apache2/error.log) por mais pistas, mas não encontrei o texto que achei super ú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:
meudomínio.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>
meudomínio.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 está escutando apenas conexões https.
Você configurou HTTP e HTTPS para se conectar à mesma porta no servidor de back-end.
É altamente improvável que seu servidor back-end suporte ambos os protocolos na mesma porta.
Use HTTP em ambos os VirtualHosts ou use a porta correta para HTTPS se seu servidor de back-end suportar ambos.
Alguns dos comentários acima me fizeram pensar sobre isso da maneira certa. A abordagem que eu segui foi
Com tudo isso no lugar, agora posso acessar
http://10.0.0.13
de dentro da minha rede local ehttps://mydomain.ca
de fora da minha rede local.