2009-12-03 4 views
14

Estoy usando el enrutamiento de solicitudes de aplicaciones IIS7 frente a Tomcat como reemplazo de la redirección de ISAPI. La función de proxy inverso básico funciona bien, pero no tengo suficiente información en los encabezados de solicitud finales. Mi aplicación existe en varios subdominios: customerone.ourservice.com, customertwo.ourservice.com, etc. Cada subdominio ejecuta la misma aplicación, pero con diferentes gráficos de marca.Modificación de encabezados con el enrutamiento de solicitudes de aplicaciones IIS7

La aplicación actualmente observa el encabezado Host para indicar qué marca mostrar. Cuando uso el proxy inverso IIS7, esa información se pierde. Los encabezados son ahora:

accept = text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
accept-charset = ISO-8859-1,utf-8;q=0.7,*;q=0.7 
accept-encoding = gzip,deflate 
accept-language = en-gb,en;q=0.7,en-us;q=0.3 
cookie = JSESSIONID=...... 
host = 127.0.0.1:8080 
max-forwards = 10 
user-agent = Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Firefox/3.0.15 
x-original-url =/
x-forwarded-for = [iis7ip]:47567 
x-arr-log-id = affbf81c-a5cf-4212-a43b-901cd9adcee6 
connection = Keep-Alive 

¿Hay alguna manera de poder insertar el encabezado de host original en las cabeceras de petición transmitidas por el proxy inverso?

+0

no lo hago ahora, pero me he dado cuenta que en nuestro entorno nuestras cabeceras se intercambian por IIS7 para la aplicación/xhtml + xml sin una buena razón. – furtive

Respuesta

32

Application Request Routing tiene una opción para conservar el encabezado original del host: preserveHostHeader. Esta opción es por defecto falsa. Puede habilitarlo con:

"C:\Windows\System32\inetsrv\appcmd.exe" set config -section:system.webServer/proxy /preserveHostHeader:"True" /commit:apphost 
+0

Gracias. No puedo probar esto más (la aplicación se retiró hace unos meses), pero su respuesta parece la forma correcta de hacerlo y la acepto. –

+0

+1 - Tuve un problema similar con la instancia alojada de YouTrack y esto resolvió un problema con el inicio de sesión de OpenID que no funciona –

+3

¿Alguien sabe por qué esto solo funciona en 'ApplicationHost.config' y no en cada' web.config' individual? –

1

Puede establecer la bandera preserveHostHeader a mano.

<proxy enabled="true" preserveHostHeader="true" /> 

</system.webServer> 

en la GUI de configuración de IIS se puede encontrar este valor bajo system.webServer/proxy.

enter image description here

+0

actualicé el archivo en esta ubicación por esta respuesta y no funcionó. Luego ejecuté este comando C: \ Windows \ System32 \ inetsrv> appcmd.exe set config -section: system.webServer/prox y/preserveHostHeader: "True"/commit: apphost Que terminó arreglando el problema. Proporciona una buena respuesta cuando la ejecuta: la configuración aplicada cambia a la sección "system.webServer/proxy" para "MACHINE/W EBROOT/APPHOST" en la ruta de confirmación de la configuración "MACHINE/WEBROOT/APPHOST" – BraveNewMath

Cuestiones relacionadas