Proxy inverso en Apache + CentOS para solicitudes HTTPS al servidor web PostgREST
Me gustaría hacer solicitudes https a mi servidor web de PostgREST, que por diseño no admite https. Llevo varios días y no sé qué más hacer…
Mi configuración
- Mi servidor se ejecuta en CentOS 7.9.2009
- Tengo un dominio de sitio web que utiliza WordPress para servir mi contenido en
home/myuser/public_html
- Configuré PostgREST 7.0.1 en mi servidor que se ejecuta en el puerto 3000
- Estoy ejecutando Apache/2.4.51 (cPanel)
Mi problema
- La siguiente solicitud funciona bien: `http://my-domain.com:3000/my_db_table`
- Me gustaría ejecutar la misma solicitud así: `https://my-domain.com/api/my_db_table`
- Mi configuración de Apache está en un archivo de “includes” y parece estar cargada (ya que se producen errores cuando intencionalmente pongo una sintaxis incorrecta en este archivo) y se ve así:
<virtualhost *:443="">
DocumentRoot /
ServerName my-domain.com
ServerAlias my-domain
ErrorLog /home/myuser/public_html/api/error.log
CustomLog /home/myuser/public_html/api/access.log combined
SSLEngine on
SSLUseStapling off
SSLCertificateFile /etc/ssl/certs/server.my-domain.com.crt
SSLCertificateKeyFile /etc/ssl/private/server.my-domain.com.key
<location api/="">
ProxyPreserveHost On
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
RequestHeader set X-Forwarded-Port "443"
RequestHeader set X-Forwarded-Proto "https"
</location>
</virtualhost>
- Ejecutar
httpd -t
devuelveSyntax OK
- Después de hacer mis cambios, ejecuto
sudo systemctl restart httpd
- Cuando luego intento hacer una solicitud como `curl -i https://my-domain.com/api/my_db_table`, soy redirigido a la página 404 de mi sitio web de WordPress
- El archivo
error.log
de mi configuración de Apache no incluye ningún error (incluía errores de activación que resolví agregando la líneaSSLUseStapling off
en mi configuración)
No sé qué más hacer. Y debido a que no tengo registros de errores, ni siquiera sé cómo empezar a depurarlo. Agradecería cualquier pista que alguien pueda proporcionarme.
davy.ai
Solución
Parece que la configuración de Apache es correcta, sin embargo, es posible que necesite agregar una RewriteCond para evitar que la regla de reescritura afecte a archivos y directorios existentes.
Intente modificar el bloque
Location
de la siguiente manera:Esto debería evitar el problema de error 404 y permitir que su solicitud sea redirigida correctamente al servidor de PostgREST.
Si aún encuentra problemas, intente verificar la configuración de su firewall para asegurarse de que el puerto 443 esté abierto para el tráfico entrante. Puede utilizar el siguiente comando para verificar los puertos abiertos:
Por último, habilite el registro de errores en Apache agregando las siguientes líneas a su archivo de configuración:
Esto proporcionará mensajes de error más detallados que podrá utilizar para depurar su configuración.