Alternative ad Apache


15

Il nostro stack attuale è Apache + Tomcat + MySQL, che utilizza ProxyPassAJP per inviare richieste da Apache a Tomcat. Eseguiamo anche PHP per Wordpress sugli stessi siti e quindi abbiamo bisogno di .htaccessfile di lavoro . In risposta a un fastidioso problema (vedi questa pagina Stack Overflow) , stiamo prendendo in considerazione stack alternativi. Nota che in genere ci piace abbastanza Apache, ma questo problema è uno spettacolo: se non riusciamo a risolverlo, non possiamo usare Apache.

Le alternative includono:

  • Tomcat da solo
  • Glassfish (server app Java, biforcuto da Tomcat)
  • Jetty (server Java)
  • Resina
  • LightTPD (server HTTP leggero)
  • Nginx (server HTTP leggero)

Per come la vedo io, le soluzioni si dividono in due campi: il campo puro di Java, come Glassfish; o il campo diviso come il nostro attuale Apache + Tomcat. Ci piace l'idea di una soluzione Java pura, poiché un minor numero di parti mobili dovrebbe significare meno errori. ma qualcuno di loro supporta PHP, .htaccessfile, ecc?

In teoria potremmo fare la divisione dall'altra parte - avere un semplice front-end che inoltra ad Apache solo quei bit che necessitano di quelle funzionalità - ma in pratica sarebbe l'80% delle richieste.

Quali opzioni suggeriscono le persone?


Ti dispiacerebbe elaborare un po 'di più il tuo "fastidioso problema dello show-stopper" o è del tutto irrilevante?
segna il

Segui il link alla pagina StackOverflow per maggiori dettagli. È un bug in cui i client ricevono la risposta sbagliata, a volte ottenendo file JS o CSS invece di quelli HTML, o solo la pagina sbagliata del tutto. Abbiamo provato praticamente tutto in Apache e Tomcat a cui possiamo pensare.
Marcus Downing,

Risposte:


7

Sospetto fortemente che il tuo problema sia legato ad AJP.

Sono stato in un corso con uno dei principali sviluppatori Tomcat alcune settimane fa (lo stava eseguendo), il suo consiglio era di evitare AJP e mod-JK ecc., E attenersi al normale HTTP mod-proxy.

Motivi:

  1. È di gran lunga il connettore Tomcat più maturo e stabile.
  2. Né l'implementazione di AJP è stata costantemente sviluppata; entrambi i progetti hanno subito un po 'di stop / start.
  3. NBIO non si traduce in alcun miglioramento delle prestazioni del mondo reale rispetto al blocco-IO, in questa situazione.

Il mio consiglio, prova ad usare il normale mod-proxy HTTP con la tua configurazione attuale. È il minimo cambiamento per te e ti porterà all'architettura di distribuzione Tomcat più utilizzata e stabile.

/ Richy


Suppongo di poterci provare. Hai dei numeri concreti sulla differenza di prestazioni?
Marcus Downing,

Come posso utilizzare il normale proxy mod e ottenere comunque i nomi host corretti che arrivano a Tomcat? Sono abbastanza sicuro che al momento vengano tutti ricevuti come localhost.
Marcus Downing,

2
ProxyPreserveHost On è probabilmente quello che stai cercando. httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypreservehost
Stephen

5

Il mio attuale stack preferito è usare nginx in sostituzione di Apache. Ove necessario, php-fpm soddisfa l'esigenza di PHP. Una simile configurazione ha funzionato bene per la distribuzione di app come Rails, Magento e SugarCRM.


4

Glassfish sarà più scalabile di Tomcat perché utilizza Grizzly (basato su NIO). Non hai molte opzioni oltre a una variante di Tomcat, Jetty o Glassfish a causa del requisito Java. PHP può essere eseguito usando Quercus , ma potrebbe essere meglio implementarlo semplicemente con Nginx.


2

Ci sono implementazioni PHP su Java, quella che conosco (ma non ho usato) è questa . C'è un post sul blog su come installarlo su GlassFish (incluso WordPress), ma immagino che l'installazione su Tomcat sia la stessa. Per quanto riguarda il .htaccess, non hai scritto esattamente quello che hai lì, ma se è per la riscrittura degli URL, c'è UrlRewriteFilter che fa lo stesso lavoro con la stessa semantica.


I file .htaccess sono principalmente quelli generati da WordPress, quindi contengono alcuni semplici RewriteRules
Marcus Downing,

Suppongo che il PHP non li supporterà, ma non dovrebbe essere difficile avere un processo che li legge e passa le definizioni al filtro.
David Rabinowitz,

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.