2012-03-23 2 views
24

Abbiamo un'applicazione distribuita su tomcat. Per accedere all'applicazione utilizziamo apache che invia richieste a tomcat. Al browser casuale dà la seguente risposta.Il server proxy ha ricevuto una risposta non valida da un server upstream

Proxy Error 
The proxy server received an invalid response from an upstream server. 
The proxy server could not handle the request GET /sampleapp/<http://samplehost.com:8080/sampleapp/>. 
Reason: Error reading from remote server 
________________________________ 
Apache/2.2.21 (Unix) Server at samplehost.com Port 8080 

Questo errore non sta arrivando sempre e finora stiamo ottenendo questo in una macchina client con IE solo. Sulla stessa macchina client con Firefox funziona bene.

Segue la traccia di errore dal log di Apache per una richiesta non riuscita

[Thu Mar 22 02:51:08 2012] [error] [client 10.36.64.137] (20014)Internal error: proxy: error reading status line from remote server localhost:8081, referer: http://samplehost.com:8080/sampleapp/opp/showSearchHome.htm 
[Thu Mar 22 02:51:08 2012] [error] [client 10.36.64.137] proxy: Error reading from remote server returned by /sampleapp/opp/searchResult.htm, referer: http://samplehost.com:8080/sampleapp/opp/showSearchHome.htm 

Nulla è sempre stampato su log Tomcat quando una richiesta sta venendo a mancare.

In seguito è la versione informazioni relative installata di apache

-bash-3.00$ ./httpd -v 
Server version: Apache/2.2.21 (Unix) 
Server built: Sep 21 2011 20:00:58 

Quando si cerca di scoprire moduli caricati ottengo seguente errore

-bash-3.00$ /usr/local/apache2/bin/apachectl -t -D DUMP_MODULES 
httpd: Syntax error on line 64 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_authnz_ldap.so into server: ld.so.1: httpd: fatal: libldap-2.4.so.2: open failed: No such file or directory 
+0

si potrebbe desiderare di provare i tentativi come questo nella configurazione di Apache (provare diverse combinazioni): // SetEnv forza-proxy-richiesta-1.0 1 // S etEnv proxy-nokeepalive 1 // SetEnv proxy-initial-not-pooled 1 // KeepAlive Off (o On) Molte persone hanno problemi simili con soluzioni sfortunatamente diverse per loro. Oppure provi a passare da Apache a un altro proxy inverso. – HelmuthB

+0

questo può accadere anche su firefox, sembra essere un problema https – virtualeyes

risposta

8

Questo non è menzionato in te post, ma ho il sospetto si è iniziando una connessione SSL dal browser ad Apache, dove sono configurati i VirtualHosts, e Apache fa un revese proxy sul tuo Tomcat.

C'è un bug grave in (alcune versioni?) Di IE che invia le informazioni dell'host 'sbagliato' in una connessione SSL (vedi EDIT sotto) e confonde gli Apache VirtualHosts. In breve, il nome del server presentato è quello della risoluzione DNS inversa dell'IP, non quella nell'URL.

Per risolvere questo problema è necessario disporre di un indirizzo IP per host virtuale/nome server SSL. È breve, è necessario finisce con qualcosa come

1 name server == 1 indirizzo IP == 1 certificato == 1 Apache virtuale Host

EDIT

Anche se la conclusione è corretta, il l'identificazione del problema è meglio descritta qui http://en.wikipedia.org/wiki/Server_Name_Indication

+0

Quindi non saresti in grado di ospitare più di un host virtuale SSL sullo stesso IP? Questo semplicemente non può essere vero, come lo sto facendo adesso. Ho diversi siti impostati dove apache2 sta lavorando esclusivamente come proxy. 2 dei siti usano SSL e funzionano alla grande. Tutti i siti sono su diversi IP interni, ma solo un IP pubblico. –

+1

@Patrik Alienus. Hai davvero testato i tuoi siti con i browser elencati come non supportanti SNI nell'articolo di Wikipedia? Se funziona allora forse dovresti correggere l'articolo di Wikipedia. La mia esperienza personale è che ho affrontato esattamente questo problema con i clienti che eseguono IE su XP. –

+0

Hmm no, il dettaglio su SNI mi ha evitato:/I siti che ho in esecuzione funzionano bene, non hanno mai un client Windows e/o mobile collegato a loro. In realtà ho pensato che sarebbe stato lo stesso in tutti i browser. Così...n/m credo :) –