Apache VirtualHost Proxy con un subdirectorio

13

Actualmente, tenemos un servidor IIS como nuestro servidor web principal. Estamos implementando un servidor Apache en su lugar, pero aún necesitamos tener accesible el servidor IIS. Por lo general, esto es algo simple, porque Apache2 puede representar un subdominio en este servidor.

Sin embargo, nuestro problema es el siguiente: estamos usando dotnetCharting en el servidor IIS y las licencias están vinculadas al nombre de dominio. Para que dotnetCharting funcione, se deberá comprar otra licencia.

Mi pregunta es, ¿puede Apache2 proxy un subdirectorio? Por ejemplo, ¿puede 'www.example.com/subdir' apuntar al servidor IIS? Parece que no debería ser imposible, pero parece que no puedo encontrar una solución para esto.

SuperJer
fuente

Respuestas:

19

Seguro. Pero ten cuidado; Muchas aplicaciones web no están bien diseñadas para cambiar su ruta URL. ¿La aplicación se utiliza actualmente en un subdirectorio?

# You'll probably want this to maintain the host mapping in IIS
ProxyPreserveHost On
# Swap in the IP address or internal host name of your IIS server:
ProxyPass /subdir/ http://192.0.2.100/subdir/

O, si está alterando la ruta de la URL, tenga en cuenta que muchas aplicaciones tendrán problemas con esto, debido a las rutas absolutas de los recursos (CSS, JavaScript, imágenes):

ProxyPass /subdir/ http://192.0.2.100/
ProxyPassReverse /subdir/ http://192.0.2.100/
Shane Madden
fuente
¡Perfecto! Eso hizo el truco en mi entorno de prueba. En este momento, internamente, puede ingresar la dirección IP del servidor y usar nuestro proxy interno para llegar al servidor, y todo (excepto el dotnetcharting) funciona a la perfección, por lo que no espero que la aplicación falle cuando la proxy con este método. ¡Muy apreciado!
SuperJer
1
Tuve que dejar de lado el final /de subdir(así:) /subdir. De lo contrario, si se domain.com/subdirproduce un error de aplicación (500). Proxy correctamente si se incluye la barra inclinada ( domain.com/subdir/), pero ese no es el efecto que estaba buscando.
OneHoopyFrood
3

Seguro.

  1. Habilitar mod_proxy mod_proxy_http
  2. configure las siguientes instrucciones en su Apache VHost

    ProxyPass /subdir http://iis.server/.../
    ProxyPassReverse /subdir http://iis.server/.../
    

Tenga en cuenta que la "/" final es obligatoria.

Para más información: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

NCH
fuente
0

la barra final al final NO es obligatoria. Lo tenía configurado así

ProxyPass /dir http://exmpale.com/dir/ 

ProxyPassReverse /dir http://exmpale.com/dir/ 

y el nivel superior funcionaba pero todo en subdirecciones debajo del principal no.

Lo cambié a esto y todo funcionó.

Gracias por la desinformación !!!

ProxyPass /dir http://exmpale.com/dir

ProxyPassReverse /dir http://exmpale.com/dir
geek de Linux molesto
fuente
1
¿Por qué la gente menosprecia esto? Fue exactamente el problema que tuve. Tienes que terminar ambas urls con una barra diagonal o dejar ambas sin una barra diagonal ... al menos para mí ayudó cuando se trataba de subdirectorios;)
Jannik