Saltar al contenido principal

incluir regla en archivo .htaccess para hacer reverse proxy

Comentarios

11 comentarios

  • Miguel Vilaboa

    Tu aplicación hace POST con la imagen a tu servicio web a eso te referis? O tu servicio web consume las fotos de las aplicaciones en ejecución mediante alguna petición?

    0
  • Juan Pablo Borda

    hola!

    mi aplicación abre una conexión Web Socket y pasa n fotos.

    El objeto que uso para hacer Web Socket tiene un método al cual le paso el certificado y luego conecto. 

    Al conectar da error = 0 y no conecta pero si quito el certificado conecta ok.

    gracias

    0
  • Miguel Vilaboa

    Probaste esta guia? https://help.wnpower.com/hc/es/articles/360030673952-C%C3%B3mo-usar-WebSockets-con-Node-js

    Pero poniendo lo siguiente asi va al socket seguro:

    RewriteRule .* wss://127.0.0.1:XXXXX%{REQUEST_URI} [P,QSA,L]

    0
  • Juan Pablo Borda

    lo tengo asi (con ws)

     

    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule .* ws://127.0.0.1:3003%{REQUEST_URI} [P,QSA,L]
    0
  • Miguel Vilaboa

    De esa manera manera el proxy va al socket no seguro de tu aplicación. Si es critico el uso de un certificado tendriás que dirigirlo al socket seguro (wss) y que tu servicio web escuche el mismo.

    Al comunicarte con el socket seguro quizás se valide completamente la comunicación.

    0
  • Juan Pablo Borda

    Te cuento que hice el cambio en el archivo .htaccess quedando asi con el wss. (como lo transcribo mas abajo)

    Pero al querer conectar desde la aplicación cliente no conecta al web socket en node indicando código de respuesta = 0 (cero) (raro)

    Leí el link que me pasaste muchas gracias pero no logro saber en que capa tengo el problema. 

    Por otro lado si NO envío el certificado ya no funciona, antes SI funcionaba. (entiendo entonces que el wss que le puse en el .htaccess esta funcionando no?)

    Te hago dos consultas:

    1-Sabes en donde puedo leer los logs del apache para saber si da un error?

    2-Sabes si para WebSocket en el servicio node debo hacer algo mas? alguna documentación que puedas recomendarme?

    Muchas gracias por todo.

    JP

    DirectoryIndex ""
    RewriteEngine On
    
    
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule .* wss://127.0.0.1:3003%{REQUEST_URI} [P,QSA,L]
    0
  • Miguel Vilaboa

    En cPanel tenes los logs de apache que van a llegar a cubrir las peticiones que hagas al servidor web (apache).

    Todo lo que pase despues y llegue a node lo vas a tener que loguear a mano o utilizar alguna libreria de logging de comunicación o errores.Si utilizas express te recomiendo ir guardando en un archivo las peticiones asi podes controlar que recibe tu server y validar si esta todo en orden.

    Por otro lado, según la guia del htacces te faltan algunas lineas y otras me da la impresión que sintaxis es incorrecta. Deberia ser: (importante cambiar /app por el directorio de tu aplicación).

     

    DirectoryIndex ""
    RewriteEngine On

    RewriteCond %{REQUEST_URI} ^/app [NC]
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
    RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
    RewriteRule .* wss://127.0.0.1:3003%{REQUEST_URI} [P,QSA,L]
    0
  • Juan Pablo Borda

    Hola Miguel buenos días,

    Antes que nada gracias por tu tiempo. La verdad que no logro dar con esto y llevo horas probando.

    Mas abajo te copio las lineas del archivo completo .htaccess y ademas te adjunto imágenes para mostrarte las distintas partes, el código node, el archivo .htaccess, los certificados que estoy tomando y de que lugar de cpanel y el error tanto en la pagina como en la conexión al web socket.

    Arme un video para mostrarte todo el circuito pero no hay opción de subirlo. :(

    MUCHAS GRACIAS.

    Juan Pablo.

    DirectoryIndex ""
    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule .* wss://127.0.0.1:3003%{REQUEST_URI} [P,QSA,L] 
     
    RewriteCond %{REQUEST_URI} ^.*/index.*
    RewriteRule ^(.*)$ https://127.0.0.1:3002/ [P,L]
    RewriteRule ^$ https://127.0.0.1:3002/ [P,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ https://127.0.0.1:3002/$1 [P,L]


    0
  • Miguel Vilaboa

    De lo que me mostras, noto 2 cosas:

    1) El htaccess esta incompleto para webservice. Si tu app esta en el public_htm (es el mismo que te habia pasado antes) Es importante el ^ en lugar del = que tenes vos.

    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
    RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
    RewriteRule .* wss://127.0.0.1:3003%{REQUEST_URI} [P,QSA,L]

    2) ¿Por qué levantas la key y el certificado del ssl en nodejs? Al usar el apache como "proxy" para escuchar las peticiones y pasarselas a node, el se muestra con el certificado ssl como si fuera un "sitio seguro". Esto me lleva a preguntar como haces la autenticación que me comentas en el primer posteo de que tu servicio web en node valida un certificado de la aplicación (que esta dentro de la aplicación) que envia la imagen.



    0
  • Juan Pablo Borda

    En relación al punto 1 ya lo pongo igual que me lo pasas y pruebo. gracias.

    En relación al puno 2 así es mi aplicación "cliente" que hace conexión WebSocket.

    mi aplicación esta dentro de una camara IP y hace así 

    //1-defino variable con el certificado que copie del cpanel

    const char* root_ca = \
    "-----BEGIN CERTIFICATE-----\n" \
    "MIIG5DCCBcygAwIBAgIQMXbskR628gpTRJ8Ez8mO+TANBgkqhkiG9w0BAQsFADBy\n" \
    "MQswCQYDVQQGEwJVUzELMAkGA1UECBMCVFgxEDAOBgNVBAcTB0hvdXN0b24xFTAT\n" \
    "BgNVBAoTDGNQYW5lbCwgSW5jLjEtMCsGA1UEAxMkY1BhbmVsLCBJbmMuIENlcnRp\n" \
    "ZmljYXRpb24gQXV0aG9yaXR5MB4XDTIwMDYzMDAwMDAwMFoXDTIwMDkyODIzNTk1\n" \
    "OVowJDEiMCAGA1UEAxMZc2VydmljaW9ub2RlLnducG93ZXIuaG9zdDCCASIwDQYJ\n" \
    "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAKO5g8c6NxDVzptgNZCCBHMoeMRJDd2A\n" \
    "YU7XJw1m4nID9y47U4hvvX827Un3Dmjts8Ot/iCvwXlR51cahH/2UTLfSGiR3heo\n" \
    "8i/2tqA7tEA8eUpN0VK8l89jpD8FWEN2458orRjqMtGYG8Jl53TR2H8TS1SOhBlg\n" \
    "nCfq0ZLBXU2ViDev12k5K3mudE/GtVI3FnlQYFMaqG23gDX5903lTt+8+D2QJuRt\n" \
    "qbx+0Vv2AmVl+7Z92S26hbY1uPsU5vgLoOsnQWAeNNplgk4qvJb2fpCPWRfqxvIL\n" \
    "cfRHTGU1WQlZyPWcjvNTGAk9KJ8Q3snuR9q2ZvVnzLoRSjjXPJq9CzMCAwEAAaOC\n" \
    "A8IwggO+MB8GA1UdIwQYMBaAFH4DWmVBa6d+CuG4nQjqHY4dasdlMB0GA1UdDgQW\n" \
    "BBRV3a6H9e0D9Gg0jIB6vwg+I1h1hjAOBgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/\n" \
    "BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwSQYDVR0gBEIwQDA0\n" \
    "BgsrBgEEAbIxAQICNDAlMCMGCCsGAQUFBwIBFhdodHRwczovL3NlY3RpZ28uY29t\n" \
    "L0NQUzAIBgZngQwBAgEwTAYDVR0fBEUwQzBBoD+gPYY7aHR0cDovL2NybC5jb21v\n" \
    "ZG9jYS5jb20vY1BhbmVsSW5jQ2VydGlmaWNhdGlvbkF1dGhvcml0eS5jcmwwfQYI\n" \
    "KwYBBQUHAQEEcTBvMEcGCCsGAQUFBzAChjtodHRwOi8vY3J0LmNvbW9kb2NhLmNv\n" \
    "bS9jUGFuZWxJbmNDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNydDAkBggrBgEFBQcw\n" \
    "AYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMIIBBQYKKwYBBAHWeQIEAgSB9gSB\n" \
    "8wDxAHYAB7dcG+V9aP/xsMYdIxXHuuZXfFeUt2ruvGE6GmnTohwAAAFzBpZwUgAA\n" \
    "BAMARzBFAiEAlnzO5lrY0RN2RIpew9ZFchHwEhvBwWZVbEOWIi7rCSgCIDgsufrn\n" \
    "rbBq2CE1mYbv1zJXwRlcPKGyavoOOqjNcyoCAHcA5xLysDd+GmL7jskMYYTx6ns3\n" \
    "y1YdESZb8+DzS/JBVG4AAAFzBpZwegAABAMASDBGAiEA0BjT0nqODY0gRcd+3zi4\n" \
    "S87bJZdhDunOXTU2OLPw1AICIQDJHujDYC7gg38U0rSyAJgp0zo9MBunrN8sI9+g\n" \
    "a1NfHDCCARwGA1UdEQSCARMwggEPghlzZXJ2aWNpb25vZGUud25wb3dlci5ob3N0\n" \
    "giBjcGFuZWwuc2VydmljaW9ub2RlLnducG93ZXIuaG9zdIIlY3BjYWxlbmRhcnMu\n" \
    "c2VydmljaW9ub2RlLnducG93ZXIuaG9zdIIkY3Bjb250YWN0cy5zZXJ2aWNpb25v\n" \
    "ZGUud25wb3dlci5ob3N0gh5tYWlsLnNlcnZpY2lvbm9kZS53bnBvd2VyLmhvc3SC\n" \
    "IXdlYmRpc2suc2VydmljaW9ub2RlLnducG93ZXIuaG9zdIIhd2VibWFpbC5zZXJ2\n" \
    "aWNpb25vZGUud25wb3dlci5ob3N0gh13d3cuc2VydmljaW9ub2RlLnducG93ZXIu\n" \
    "aG9zdDANBgkqhkiG9w0BAQsFAAOCAQEAC37ULmAEhSu07oMf57ElbI+fOXj5tcsJ\n" \
    "Lw4/WfTLbF5syN8udknNd6tbFCTqwBnoiLPC7WsyC5h+z7JkILrBhsiK+dYw0H9N\n" \
    "7TDkdM66uIO0sjLBydCEDbCIsm16CHBTzGRBwxMAHG6/jJdOBZXF1ZKExQHj6NZM\n" \
    "uU85zFMbQgDjlprT9lrFmXh+IoRf4YJMP7wV2rocIBVR26OwBd95PWfQ834CoWeQ\n" \
    "8GWYql7uS47vvZ0bS8iRDSzgU5YmK21PJCrIXAHPvIzW8AJVFAh5wBNBwt3xlW3v\n" \
    "PLKaBPBwpHxmS//wvIFG4bmKFc/aAugXzxh4t52Bsm4D4pVZal2MCQ==\n" \
    "-----END CERTIFICATE-----\n";

    //2-defino objeto y clase 

    WebsocketsClient client;

     

    //3-cargo el certificado

    client.setCACert(root_ca);

     

    //4-conecto

    int httpResponseCode = client.connect("wss://servicionode.wnpower.host");

    //5- me da error = 0 (cero)

    0
  • Miguel Vilaboa

    No conozco esa libreria del cliente de websocket.

    Proba haciendolo sin agregar el certificado y pegandole a ws en lugar de wss para descartar problemas de con el autenticado de los certificados.

    0

Iniciar sesión para dejar un comentario.