Escuché que es posible redirigir la solicitud de apache al servidor nodejs con proxy inverso. Intenté hacerlo pero no funciona. Tengo un error 404. Aquí está mi configuración de apache:
<VirtualHost WW.XX.YY.ZZ:80> SuexecUserGroup "#1004" "#1004" ServerName api.example.com ServerAlias www.api.example.com ServerAlias mail.api.example.com ServerAlias webmail.api.example.com ServerAlias admin.api.example.com DocumentRoot /home/example/domains/api.example.com/public_html ErrorLog /var/log/virtualmin/api.example.com_error_log CustomLog /var/log/virtualmin/api.example.com_access_log combined ScriptAlias /cgi-bin/ /home/example/domains/api.example.com/cgi-bin/ ScriptAlias /awstats/ /home/example/domains/api.example.com/cgi-bin/ DirectoryIndex index.html index.htm index.php index.php4 index.php5 ProxyRequests Off ProxyPreserveHost On ProxyVia Full <Proxy *> Order deny,allow Allow from all </Proxy> <Location /home/example/domains/api.example.com/public_html> ProxyPass http://localhost:8080/ ProxyPassReverse http://localhost:8080/ </Location> </VirtualHost>
Y mi servidor nodejs funciona localmente, así que no creo que sea el problema, pero lo comparto por si acaso:
const express = require("express"); const cors = require("cors"); const fs = require('fs'); const http = require('http'); const https = require('https'); const privateKey = fs.readFileSync('./ssl.key', 'utf8'); const certificate = fs.readFileSync('./ssl.cert', 'utf8'); var credentials = {key: privateKey, cert: certificate}; const app = express(); app.use(cors()); app.use(express.json()) require("./routes/wordpress.routes.js")(app); require("./routes/entries.routes.js")(app); // set port, listen for requests var httpServer = http.createServer(app); var httpsServer = https.createServer(credentials, app); httpServer.listen(8080); httpsServer.listen(8443);
¿Qué estoy haciendo mal?
Arreglado así:
ProxyPass "/" "http://localhost:8080/" ProxyPassReverse "/" "http://localhost:8080/"