incluir regla en archivo .htaccess para hacer reverse proxy
Hola!!!
Tengo instalado un servicio node que recibe imágenes (lo necesito usar en forma segura por medio de un certificado) y necesito, por favor, saber que regla debo poner en el archivo .htaccess para hacer un reverse proxy con https.
Las imagenes no viajan desde una pagina que corre en un navegador sino desde una aplicacion que tiene cargado el certificado dentro.
No logro encontrar la regla que debo poner en el archivo .htaccess para lograr este direccionamiento.
Podrian, por favor, pasarme que regla debo poner?
muchas gracias!!!
Juan Pablo.
-
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 -
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 -
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 -
lo tengo asi (con ws)
RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteRule .* ws://127.0.0.1:3003%{REQUEST_URI} [P,QSA,L]
0 -
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 -
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 -
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 -
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 -
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 -
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 -
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.
Comentarios
11 comentarios