Proxy Apache VirtualHost con una sottodirectory


13

Attualmente, abbiamo un server IIS come nostro web server primario. Stiamo implementando un server Apache al suo posto, ma dobbiamo comunque avere il server IIS accessibile. In genere, questa è una cosa semplice, perché Apache2 può delegare un sottodominio a questo server.

Il nostro problema, tuttavia, è questo: stiamo usando dotnetCharting sul server IIS e la licenza è legata al nome di dominio. Per far funzionare dotnetCharting, sarà necessario acquistare un'altra licenza.

La mia domanda è: Apache2 può proxy una sottodirectory? Ad esempio, 'www.example.com/subdir' può puntare al server IIS? Sembra che non dovrebbe essere impossibile, ma non riesco a trovare una soluzione per questo.

Risposte:


19

Sicuro. Ma fa attenzione; molte applicazioni web non sono progettate bene per far cambiare il loro percorso URL. L'applicazione è attualmente utilizzata in una sottodirectory?

# 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/

Oppure, se stai modificando il percorso dell'URL, tenendo presente che molte applicazioni avranno problemi con questo, a causa di percorsi assoluti per le risorse (CSS, javascript, immagini):

ProxyPass /subdir/ http://192.0.2.100/
ProxyPassReverse /subdir/ http://192.0.2.100/

Perfetto! Questo ha funzionato nel mio ambiente di test. In questo momento, internamente, puoi inserire l'indirizzo IP del server e utilizzare il nostro proxy interno per accedere al server e tutto (tranne dotnetcharting) funziona perfettamente, quindi non mi aspetto che l'applicazione fallisca quando eseguiamo il proxy con questo metodo. Molto apprezzato!
SuperJer,

1
Ho dovuto lasciare il trailing /da subdir(in questo modo:) /subdir. Altrimenti, se si domain.com/subdirverifica un errore dell'applicazione (500). Proporrebbe correttamente se la barra fosse inclusa ( domain.com/subdir/), ma non è l'effetto che stavo cercando.
OneHoopyFrood

3

Sicuro.

  1. Abilita mod_proxy mod_proxy_http
  2. imposta le seguenti istruzioni in Apache VHost

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

Nota che il "/" finale è obbligatorio.

Per maggiori informazioni: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html


0

la barra finale alla fine NON è obbligatoria. L'ho installato in questo modo

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

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

e il livello più alto funzionava, ma tutto ciò che accadeva nei sottocadi sotto quello principale.

L'ho cambiato in questo e tutto ha funzionato.

Grazie per la disinformazione !!!

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

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

1
Perché le persone lo votano? Era esattamente il problema che avevo. Devi terminare entrambi gli URL con una barra o lasciare entrambi gli URL senza una barra .... almeno per me è stato di aiuto quando si trattava di sottodirectory;)
Jannik
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.