2008-10-01 21 views
10

Me estoy jalando de lo que debería ser un problema increíblemente simple. Estamos ejecutando WebSphere IHS (Apache) a través de F5 BigIP. BigIP está haciendo la traducción https para nosotros. Nuestra url (modificada para web, no válida) es https://superniftyserver.com/lawson/portal.mod_rewrite para el problema de barra inclinada

Cuando alguien escribe simplemente eso sin la barra después del portal, Apache asume que "portal" es un archivo y no un directorio. Cuando Apache descubre qué es, envía la redirección permanente 301. Pero como Apache solo conoce http, envía la URL como http://superniftyserver.com/lawson/portal/, lo que genera problemas.

Así que probé un cambio de httpd.conf de nivel de servidor para mod_rewrite, esta es una de las docenas de combinaciones que he probado.

RewriteEngine en RewriteRule ^/Lawson/portal (. *)/Lawson/portal/$ 1

También probé RewriteRule ^/Lawson/portal $/Lawson/portal/

entre otras muchas cosas ... ¿Qué me estoy perdiendo?

+0

Esto puede ser una pregunta extraña, pero está cambiando el BigIP la URL de cualquier otra manera? – Powerlord

+0

Al principio pensamos que sí, pero es un problema de corte de Apache ... –

Respuesta

6

Si no puede obtener una respuesta sobre la sintaxis RewriteRule, aquí hay otras dos opciones para hacer: escribir un iRule personalizado en BigIP (ver F5 DevCentral) que busca 301 respuestas y las convierte a SSL; deje que la URL pase a su servidor WebSphere y realice una redirección programática que envíe HTTPS. Sin embargo, como F5 termina la conexión SSL, debe establecer un encabezado personalizado que configure (consulte PQ86347) para que el request.getScheme() de Java funcione como era de esperar.

+0

Muchas gracias Mucho, esta parece ser mi mejor opción hasta ahora si no puedo hacer que la reescritura funcione ... –

0
LoadModule rewrite_module    modules/mod_rewrite.so 

asegúrese de que la línea está en algún lugar en el que httpd.conf

+0

Gracias, debería haber mencionado que ... Tengo la línea descomentada ... LoadModule rewrite_module modules/mod_rewrite.so –

5

¡Reparado!

SOL6912: Configuración de un perfil de HTTP para volver a escribir las direcciones URL para que redirige desde un servidor HTTP especificar el protocolo HTTPS


Actualizado: 08.07.07 12:00a.m.

Un servidor virtual ClientSSL generalmente está configurado para aceptar conexiones HTTPS de un cliente, descifrar la sesión SSL y enviar la solicitud HTTP no encriptada al servidor web.

Cuando un URI solicitado no incluye una barra diagonal (una barra diagonal, como /, al final del URI), algunos servidores web generan una redirección de cortesía. Sin una barra inclinada, el servidor web tratará primero el recurso especificado en el URI como un archivo. Si no se puede encontrar el archivo, el servidor web puede buscar un directorio con el mismo nombre y, si lo encuentra, enviar una respuesta de redirección HTTP 302 al cliente con una barra diagonal. La redirección se devolverá al cliente en modo HTTP en lugar de HTTPS, lo que hará que la sesión SSL falle.

El siguiente es un ejemplo de cómo una respuesta de redirección HTTP 302 hace que la sesión SSL falle:

· Para solicitar una sesión SSL, un usuario escribe https://www.f5.com/stuff sin barra final.

· El navegador del cliente envía una solicitud SSL al servidor virtual ClientSSL, que reside en el sistema BIG-IP LTM.

· El sistema BIG-IP LTM luego descifra la solicitud y envía un comando GET/stuff al servidor web.

· Dado que el archivo/stuff no existe en el servidor web, pero existe un directorio/stuff/virtual, el servidor web envía una respuesta de redirección HTTP 302 para el directorio, pero agrega una barra al recurso. Cuando el servidor web envía la respuesta de redireccionamiento HTTP 302, especifica HTTP (no HTTPS).

· Cuando el cliente recibe la respuesta de redireccionamiento HTTP 302, envía una nueva solicitud al servidor virtual BIG-IP LTM que especifica HTTP (no HTTPS). Como resultado, la conexión SSL falla.

Configuración de un perfil de HTTP para reescribir URL

En BIG-IP LTM versión 9.x puede configurar un perfil de HTTP para volver a escribir las direcciones URL para que redirige desde un servidor HTTP especificar el protocolo HTTPS. Para hacerlo, realice el siguiente procedimiento:

  1. Inicie sesión en la Utilidad de configuración.

  2. Haz clic en Tráfico local.

  3. Haga clic en Perfiles.

  4. Haga clic en el botón Crear.

  5. Escriba un nombre para el perfil.

  6. Elija http en el menú desplegable Perfil principal.

  7. En Configuración, configurar redirección de reescritura a todos, a juego, o nodos, dependiendo de su configuración

Por ejemplo:

o seleccione Todas para reescribir cualquier HTTP 301, 302, 303, 305, o 307 redirige a HTTPS

o Elija a juego para reescribir redirecciones cuando la ruta de acceso y consulta componentes de URI de la solicitud y la redirección son idénticas (a excepción de la barra final)

o Elija Nodo de reescribir redirecciones cuando el URI de redireccionamiento contiene una dirección de nodo IP en lugar de un nombre de host, y desea que el sistema cambie a la dirección de servidor virtual

  1. Haga clic en Finalizado.

Ahora debe asociar el nuevo perfil HTTP con el servidor virtual ClientSSL.

1

Prueba esto:

# Trailing slash problem 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d 
RewriteRule ^(.+[^/])$   https://<t:sitename/>$1/ [redirect,last] 
Cuestiones relacionadas