Tengo una aplicación de reacción con enrutamiento y servida en el servidor apache. El backend de la aplicación es nodejs. Ambos están alojados en una gota en DigitalOcean.
Cuando visité mi sitio, por ejemplo, https://example.com , mostró la aplicación, pero no puede obtener la API en el backend de nodejs porque no es https ( http://server_ip:8080 ). Buscando en la red encontré Apache Reverse Proxy. Aquí está mi archivo de host virtual:
<VirtualHost *:80> <Directory /var/www/example.com> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> SSLEngine On SSLProxyEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem ProxyPreserveHost On ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/ ServerAdmin webmaster@localhost ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =www.example.com [OR] RewriteCond %{SERVER_NAME} =example.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>y cuando pruebo https://example.com/api/user/all/ devolvió:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html> <head> <title>404 Not Found</title> </head> <body> <h1>Not Found</h1> <p>The requested URL was not found on this server.</p> <hr> <address>Apache/2.4.29 (Ubuntu) Server at example.com Port 443</address> </body> </html>¡Gracias!