es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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 devuelve Syntax 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ínea SSLUseStapling 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.

Tags:  , , , ,

Answer

  1. Avatar for 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:

    <location api/="">
         ProxyPreserveHost On
         ProxyPass http://localhost:3000/
         ProxyPassReverse http://localhost:3000/
         RequestHeader set X-Forwarded-Port "443"
         RequestHeader set X-Forwarded-Proto "https"
    
         RewriteEngine On
         RewriteCond %{REQUEST_FILENAME} !-d
         RewriteCond %{REQUEST_FILENAME} !-f
         RewriteRule ^ api/index.html [PT]
    </location>
    

    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:

    sudo firewall-cmd --list-ports
    

    Por último, habilite el registro de errores en Apache agregando las siguientes líneas a su archivo de configuración:

    LogLevel alert rewrite:trace8
    ErrorLog /var/log/httpd/error_log
    

    Esto proporcionará mensajes de error más detallados que podrá utilizar para depurar su configuración.

Comments are closed.