2009-07-17 8 views
5

Qualcuno sa come dire ad Apache, in modalità proxy inverso, di intercettare o intrappolare 302 (o 30x) risposte dal back-end server e reindirizzamento internamente senza inviare una risposta 30x al client? In definitiva, il server di backend a cui la risposta viene reindirizzata non sarebbe accessibile dall'esterno (o non elencato in Conf di Apache).Modalità proxy inverso Apache intercetta o intrappola 302 risposte dal server back-end e reindirizza internamente senza inviare risposta 302 al client


La mia situazione:
ho web_server_A e web_server_B in ascolto sulla porta 6666 e 7777. Queste porte non sono accessibili dall'esterno, ma sono accessibili dall'interno.
Posso finalmente modificare il comportamento di web_server_A, ma non quello di web_server_B.
Apache è in ascolto sulle porte 80/443, accessibile dall'esterno e agisce come un proxy inverso l'invio di richieste destinatari web_server_ {A, B} .example.com a web_server_ {A, B}

Il cliente chiede ad Apache per web_server_A.example.com/foo. Apache inoltra la richiesta a web_server_A che rende alcune cose e quindi invia ad Apache una risposta HTTP/302 che punta su web_server_B.example.com/bar/secret_token. Apache rimanda la risposta 302 al client che poi invia ad Apache una richiesta HTTP per web_server_B.example.com/bar/secret_token. Apache inoltra tramite proxy la richiesta a web_server_B, che risponde a qualcosa (di solito restituisce un grosso file).


Il mio problema:
Non voglio il cliente a conoscere l'url web_server_B.example.com/bar/secret_token, e in ultima analisi, non voglio web_server_B sia accessibile dall'esterno.

web_server_A potrebbe effettuare la richiesta a web_server_B e quindi inviare la risposta da web_server_B senza emettere una risposta 302. Ma la risposta di web_server_B potrebbe richiedere del tempo, potrebbe essere abbastanza grande, e web_server_A non dovrebbe impiegare troppo tempo per nessuna richiesta (non ha la capacità di gestire file di grandi dimensioni).


Così ho pensato a una funzione di "302 trapper" che sarebbe bello se esistente, ma finora non hanno finanziare qualsiasi cosa sul web su come farlo. Qualche idea?

+4

Le domande di configurazione del server avranno probabilmente una risposta molto migliore su serverfault.com –

risposta

0

Come proxy inverso, Apache non sarà in grado di "bloccare le risposte". Non è un censore. Si potrebbe scrivere qualcosa di simile da soli, però.

0

utilizzando la direttiva ProxyPassReverse, web_server_A modificherà l'intestazione di posizione inviata da web_server_B, in modo che il client non sappia di lui.

per intercettare il reindirizzamento dal server upstream è inoltre possibile modificare l'intestazione della posizione. Ad esempio "Header unset Location" mostrerà apache default 30X error page